Programowanie
Programowanie to cykliczny proces projektowania, tworzenia, testowania i utrzymywania kodu źródłowego programów komputerowych lub urządzeń mikroprocesorowych.
Kod źródłowy jest napisany w języku programowania, z użyciem określonych reguł
syntaktycznych i semantycznych.
Programowanie wymaga dużej wiedzy i doświadczenia w zakresie:
• projektowanie aplikacji,
• algorytmów i struktur danych,
• języków programowania,
• narzędzi programistycznych,
• kompilatorów,
• budowy i działania podzespołów komputera.
Podstawy programowania
Materiały do użytku wewnętrznego
1.1
Program komputerowy
Program komputerowy - sekwencja symboli opisująca obliczenia zgodnie z pewnymi regułami zwanymi językiem programowania.
Program jest wykonywany przez komputer:
• bezpośrednio – jeśli wyrażony jest w języku zrozumiałym dla danej maszyny,
• pośrednio – gdy jest interpretowany przez inny program (interpreter).
Wyrażenie algorytmu (metody obliczeń) w postaci zapisu zrozumiałego dla człowieka nazywane jest kodem źródłowym
Program wyrażony w postaci zapisu zrozumiałego dla maszyny cyfrowej nazywany jest kodem maszynowym lub kodem wykonywalnym.
Podstawy programowania
Materiały do użytku wewnętrznego
1.2
Język programowania
Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program (czyli ciąg symboli opisujący obliczenia) oraz jakie obliczenia opisuje.
Język programowania składa się ze zbiorów reguł syntaktycznych oraz semantycznych, które opisują zasady budowy poprawnych wyrażeń.
Podstawy programowania
Materiały do użytku wewnętrznego
1.3
Syntaktyka (składnia)
Ciąg znaków tworzących program napisany w języku programowania
musi spełniać reguły składni tego języka. Składnia opisuje:
• rodzaje dostępnych symboli,
• zasady, według których symbole mogą być łączone w większe struktury.
Składnia najczęściej opisywana jest w formalnym zapisie za pomocą
diagramów syntaktycznych lub notacji Backusa-Naura BNF (Backus-Naur
Form).
Podstawy programowania
Materiały do użytku wewnętrznego
1.4
Syntaktyka języka programowania
Przykład definicji identyfikatora za pomocą diagramu syntaktycznego:
litera
_
litera
cyfra
_
Przykład definicji liczby naturalnej w notacji BNF:
• <zero>::= 0 np. 0
• <cyfra niezerowa>::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 np. 2
• <cyfra>::= <zero> | <cyfra niezerowa> np. 3
• <ciąg cyfr> ::= <cyfra> | <cyfra><ciąg cyfr> np. 0345
• <liczba naturalna>::= <cyfra> | <cyfra niezerowa><ciąg cyfr> np. 456
Podstawy programowania
Materiały do użytku wewnętrznego
1.5
Semantyka języka programowania
Semantyka definiuje znaczenie poszczególnych symboli oraz ich funkcję w programie.
Semantykę definiuje się słownie, ponieważ większość z jej zagadnień jest
trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm.
Część błędów semantycznych można wychwycić już w momencie
wstępnego przetwarzania kodu programu, np. próbę odwołania się do
nieistniejącej funkcji, lecz inne mogą ujawnić się dopiero w trakcie wykonywania.
Podstawy programowania
Materiały do użytku wewnętrznego
1.6
Najpopularniejsze języki programowania
Najpopularniejsze języki programowania wg. www.tiobe.com, notowanie
w lutym 2011:
• Java
• C
• C++
• Python
• PHP
• C#
• Visual Basic
• Objective-C
• JavaScript
• Perl
Podstawy programowania
Materiały do użytku wewnętrznego
1.7
Klasyfikacja języków programowania
Wybrane kryteria klasyfikacji języków programowania:
• paradygmat programowania,
• generacja,
• sposób kontroli typów,
• sposób wykonywania (kompilacja, interpretacja),
Podstawy programowania
Materiały do użytku wewnętrznego
1.8
Paradygmat programowania
Paradygmat (wzorzec) programowania definiuje przepływ sterowania i sposób wykonywanie programu komputerowego.
Np. w programowaniu obiektowym program uważany jest za zbiór współ-
pracujących ze sobą obiektów.
Język
programowania
może
wspierać
jeden
lub
wiele
paradygmatów
programowania, np. język C++ posiada elementy programowania proceduralnego i obiektowego.
Języki wspierające wiele paradygmatów nazywane są językami hybrydowymi.
Przykłady paradygmatów programowania:
• programowanie proceduralne,
• programowanie strukturalne,
• programowanie funkcyjne,
• programowanie obiektowe,
• programowanie logiczne (np. Prolog),
• programowanie deklaratywne.
Podstawy programowania
Materiały do użytku wewnętrznego
1.9
Generacje języków programowania (1/5)
Generacja 1 – języki maszynowe
Język maszynowy to język programowania, w którym instrukcje programu zapisywane są bezpośrednio, jako liczby binarne, które są zarówno rozkazami jak i danymi bezpośrednio pobieranymi przez procesor wykonujący ten program.
Przykład:
11101110
00110001
00001111
11010001
10100000
Podstawy programowania
Materiały do użytku wewnętrznego
1.10
Generacje języków programowania (2/5)
Generacja 2 – języki symboliczne (asemblery)
Język symboliczny to język, w którym liczby binarne oznaczające rozkazy oraz dane dla procesora zastąpiono lierowymi skrótami mnemonicznymi.
Przykład:
MOV AX, 0D625H
MOV ES, AX
MOV AL, 24
MOV AH, 0
INT 21H
Podstawy programowania
Materiały do użytku wewnętrznego
1.11
Generacje języków programowania (3/5)
Generacja 3
Języki trzeciej generacji - języki wysokiego poziomu, w których jedna instrukcja jest tłumaczona na kilka instrukcji procesora.
Pierwszym językiem 3 generacji był ALGOL. Należą do nich np. BASIC -
język niestrukturalny, Pascal, C, FORTRAN - języki strukturalne, C++, Java - języki zorientowane obiektowo.
Przykład:
if ( a != 0 )
{
int w = a / b;
return w;
}
Podstawy programowania
Materiały do użytku wewnętrznego
1.12
Generacje języków programowania (4/5)
Generacja 4
Języki czwartej generacji - języki bardzo wysokiego poziomu
(deklaratywne), w których programista tworząc program określa, co ma być zrobione, nie wnikając w szczegóły realizacyjne.
Syntaktyka języków czwartej generacji przypomina składnię języka
naturalnego. Są często używane do dostępu do baz danych, np. język SQL.
Przykład
SELECT Nazwa FROM Towar WHERE Data > ‘2008-01-31’
Podstawy programowania
Materiały do użytku wewnętrznego
1.13
Generacje języków programowania (5/5)
Generacja 5
Języki piątej generacji - języki sztucznej inteligencji, języki systemów ekspertowych.
Są to języki najbardziej zbliżone do języka naturalnego. Przykładem takiego języka jest PROLOG.
Podstawy programowania
Materiały do użytku wewnętrznego
1.14
Sposób kontroli typów – typowanie statyczne
Typowanie statyczne polega na określaniu typów zmiennych i stałych podczas kompilacji programu.
Zalety:
• możliwość dobrej optymalizacji kodu wynikowego,
• możliwość wykrycia większości błędów związanych z określaniem
typów danych.
Wady:
• konieczność precyzyjnego opisywania typów danych w programie.
Podstawy programowania
Materiały do użytku wewnętrznego
1.15
Sposób kontroli typów – typowanie dynamiczne
Typowanie dynamiczne polega na dynamicznym nadawaniu typów
zmiennym w trakcie działania programu – zmienne nie mają trwale
przypisanego typu danych.
Typ zmiennej wynika z aktualnie przypisanej jej wartości i może się zmieniać wielokrotnie w trakcie wykonywania programu.
Zalety:
• łatwe wykonywanie operacji na zmiennych.
Wady:
• utrudniona kontrola poprawności działania programu.
Podstawy programowania
Materiały do użytku wewnętrznego
1.16
Sposób wykonywania programu
Przekształcenie kodu źródłowego programu do postacji wykonywalnej odbywa się na drodze kompilacji lub interpretacji.
Kompilacja – kod źródłowy jest tłumaczony do postaci kodu maszynowego przed uruchomieniem programu. Języki tego typu to tzw. kompilowane języki programowania.
Interpretacja – kod źródłowy jest na bieżąco tłumaczony i wykonywany przez dodatkowy program zwany interpreterem. Języki tego typu to tzw. języki interpretowane.
Kod wygenerowany na drodze kompilacji jest związany ze sprzętową architekturą komputera i systemem operacyjnym, dzięki czemu zapewnia wysoką wydajność.
Języki interpretowane zapewniają przenośność programów (niezależność od platformy i systemu operacyjnego) kosztem niższej wydajności.
Program interpretowany można uruchomić na dowolnej platformie sprzętowej pod warunkiem posiadania odpowiedniego interpretera.
Podstawy programowania
Materiały do użytku wewnętrznego
1.17