wstęp do programowania
TRANSCRIPT
Wstęp do programowania
wykład 2
Piotr CybulaWydział Matematyki i Informatyki UŁ
2012/2013http://www.math.uni.lodz.pl/~cybula
Język programowaniaKażdy język ma swoją składnię:
słowa kluczoweinstrukcje itd ....
Dozwolone nazwyNazwy (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, d1niepoprawne 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 literyPascal 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 liczbywith 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 kluczoweW 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 programuProgram ma najczęściej pewną ustaloną strukturę:
Pascal: program nazwa_programu;
część deklaracyjnabegin
część wykonywalnaend.
Ada: procedure nazwa_programu is
część deklaracyjnabegin
część wykonywalnaend 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 znaczeniaCzęść deklaracyjna zawiera deklaracje zmiennych, część wykonywalna (imperatywna) – instrukcje do wykonania
Deklaracje zmiennychMusimy 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łychJeż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 predefiniowaneW języku istnieją zazwyczaj pewne predefiniowane typy, np. liczbowe, logiczne, znakowe...
C/C++:do przechowywania liczb całkowitych:
short int intlong 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 zmiennoprzecinkowychfloatdoublelong double
Pascal:do przechowywania liczb całkowitych:
shortint integerlongint
do przechowywania znaków alfanumerycznych:char
do przechowywania liczb zmiennoprzecinkowych
real
Ada:do przechowywania liczb całkowitych:
short_integer integerlong_integerlong_long_integer
do przechowywania znaków alfanumerycznych:character
do przechowywania liczb zmiennoprzecinkowych
floatlong_floatlong_long_float
Zakresy typówZakresy 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 najmniejszaWyniki działań (operatorów) mogą przekroczyć dopuszczalny zakres
OperatoryW 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łkowitychAda: rem i mod zdef. dla liczb całkowitychC/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 dzieleniaKolejność 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: and or notPascal: and or notC/C++: && || !
czasami język udostępnia również pewne specyficzne operatory:
Ada (logiczne): or else and then xorC/C++ (bitowe): & | ~ ^ << >>
Operacja przypisaniaDo 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 programieTekst ujęty w znaki komentarza nie jest kompilowany / wykonywany
Ada: tekst od dwuznaku -- do końca liniiPascal: 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 /* .... */