Wykład 2 - Wydział Matematyki i Informatyki UŁ
Transkrypt
Wykład 2 - Wydział Matematyki i Informatyki UŁ
Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje itd .... Dozwolone nazwy Nazwy (identyfikatory, ang. identifiers) mogą odnosić się do (pod)programów, zmiennych, stałych... zazwyczaj nazwą może być dowolnie długi ciąg liter (nie używamy polskich!), cyfr i znaków podkreślenia zaczynający się od litery poprawne nazwy: liczba_1, liczba1, x, d1 niepoprawne nazwy: 1liczba, wężyk, rp2_1/2 niektóre języki rozróżniają rozmiar liter użytych w nazwach C/C++ rozróżnia małe i wielkie litery Pascal i Ada nie rozróżniają „Trzecia potęga” w języku Pascal (* program obliczajacy trzecia potege liczby *) program potega; uses crt; var a, p2, p3: integer; begin writeln('Program oblicza trzecia potege podanej liczby'); write('Podaj a:'); read(a); p2 := a * a; p3 := p2 * a; write('Wynik wynosi ', p3); repeat until keypressed; end. „Trzecia potęga” w języku C /* program obliczajacy trzecia potege liczby */ #include <stdio.h> int main() { int a, p2, p3; printf("Program oblicza trzecia potege podanej liczby \n"); printf("Podaj a: "); scanf("%d", &a); p2 = a * a; p3 = p2 * a; printf("Wynik wynosi %d\n", p3); system("pause"); return 0; } „Trzecia potęga” w języku C++ /* program obliczajacy trzecia potege liczby */ #include <iostream> int main() { int a, p2, p3; std::cout << "Program oblicza trzecia potege podanej liczby" << std::endl; std::cout << "Podaj a: " ; std::cin >> a; p2 = a * a; p3 = p2 * a; std::cout << "Wynik wynosi " << p3 << std::endl; system("pause"); return 0; } „Trzecia potęga” w języku Ada -- program obliczajacy trzecia potege liczby with ada.text_io, ada.integer_text_io; use ada.text_io, ada.integer_text_io; procedure potega is a, p2, p3: integer; begin put_line("Program oblicza trzecia potege podanej liczby"); put("Podaj a: "); get(a); p2 := a * a; p3 := p2 * a; put("Wynik wynosi "); put(p3, 0); end potega; Słowa kluczowe W każdym języku programowania występują pewne słowa kluczowe. Mają specjalne znaczenie (np. są elementem instrukcji, nazwą jakiegoś predefiniowanego typu itp). Słów kluczowych nie można użyć jako nazw. Przykładowe słowa kluczowe w C: int, if, else, float, typedef, for, while ... Edytor przystosowany do pracy z danym językiem zazwyczaj wyróżnia słowa kluczowe tego języka Struktura programu Program ma najczęściej pewną ustaloną strukturę: Pascal: program nazwa_programu; część deklaracyjna begin część wykonywalna end. Ada: procedure nazwa_programu is część deklaracyjna begin część wykonywalna end nazwa_programu; C/C++: int main() { część deklaracyjna i wykonywalna } Poszczególne instrukcje programu kończymy zazwyczaj średnikami niekiedy może być nakazane kończenie pewnych linii kropką (Pascal, ostatnia linia programu) Poza nielicznymi przypadkami układ tekstu w linii czy też fakt rozłożenia go na kilka linii nie ma znaczenia Część deklaracyjna zawiera deklaracje zmiennych, część wykonywalna (imperatywna) – instrukcje do wykonania Deklaracje zmiennych Musimy określić, jakiego typu będą używane przez nas zmienne (jak interpretować poszczególne bity) oraz spowodować, żeby została zarezerwowana pamięć na ich przechowanie (domyślnie wartość jest przypadkowa): C/C++: typ nazwa_zmiennej; Ada: nazwa_zmiennej: typ; Pascal: nazwa_zmiennej: typ; deklaracje poprzedzamy słowem kluczowym var Przykład: int a, b = 5; Deklaracje stałych Jeżeli zmienna ma mieć chronioną wartość deklarujemy ją jako stałą, koniecznie inicjalizując przy deklaracji: C/C++: const typ nazwa_stałej = literał; Ada: nazwa_stałej: constant typ := literał; Pascal: nazwa_stałej = literał; deklaracje stałych poprzedzamy słowem const Przykład: const float podatek = 0.19; Typy predefiniowane W języku istnieją zazwyczaj pewne predefiniowane typy, np. liczbowe, logiczne, znakowe... C/C++: do przechowywania liczb całkowitych: short int int long int do przechowywania znaków alfanumerycznych: char wszystkie powyższe typy mogą występować w dwóch wersjach: ze znakiem (signed) i bez znaku (unsigned). W przypadku typów całkowitych domyślnie przyjmuje się, że są one ze znakiem do przechowywania liczb zmiennoprzecinkowych float double long double Pascal: do przechowywania liczb całkowitych: shortint integer longint do przechowywania znaków alfanumerycznych: char do przechowywania liczb zmiennoprzecinkowych real Ada: do przechowywania liczb całkowitych: short_integer integer long_integer long_long_integer do przechowywania znaków alfanumerycznych: character do przechowywania liczb zmiennoprzecinkowych float long_float long_long_float Zakresy typów Zakresy poszczególnych typów mogą być albo ściśle określone, albo zależeć od implementacji (czyli od kompilatora) ZAWSZE istnieje w każdym typie wartość największa i najmniejsza Wyniki działań (operatorów) mogą przekroczyć dopuszczalny zakres Operatory W języku zdefiniowane są pewne operatory, których można używać do konstruowania wyrażeń (arytmetycznych, logicznych...) zazwyczaj mamy dostępne operatory arytmetyczne: +-*/ i możemy przy konstruowaniu wyrażeń arytmetycznych używać nawiasów pewne specyficzne operatory arytmetyczne, jak: Pascal: div – dzielenie całkowite, mod – reszta z dzielenia; zdef. dla liczb całkowitych Ada: rem i mod zdef. dla liczb całkowitych C/C++: % - reszta z dzielenia, zdef. dla liczb całkowitych Typ zwracanego wyniku zależy zazwyczaj od typu argumentów operatora (operandów), np. w C/C++ dzielenie liczb całkowitych daje w wyniku część całkowitą z dzielenia Kolejność wykonywania operatorów jest zależna od ich priorytetów (mogą być różne w różnych językach) operatory porównywania: < <= > >= „różne” i „równe” nie wygląda jednakowo Ada: Pascal: C/C++: = = == /= <> != operatory logiczne koniunkcji, alternatywy i negacji: Ada: Pascal: C/C++: and and && or or || not not ! czasami język udostępnia również pewne specyficzne operatory: Ada (logiczne): or else and then xor C/C++ (bitowe): & | ~ ^ << >> Operacja przypisania Do przypisania zmiennej wartości innej zmiennej lub wyrażenia służy operator przypisania: Ada, Pascal: := C/C++: = w C/C++ przypisanie jest operatorem i występuje w wersjach uproszczonych, np.: ++ -+= -= *= /= %= Komentarze w programie Tekst ujęty w znaki komentarza nie jest kompilowany / wykonywany Ada: tekst od dwuznaku -- do końca linii Pascal: tekst ujęty w znaki (* ... *) (komentarze tego rodzaju można zagnieżdżać) C/C++: tekst ujęty w znaki /* .... */ (komentarzy tego typu nie można zagnieżdżać) tekst od dwuznaku // do końca linii (komentarze tego typu można zagnieżdżać, w tym również w komentarzach /* .... */