Podstawy programowania Zachodniopomorska Szkoła Biznesu Podstawy programowania Wykład 3: Program w języku C++
Elementy programu w C++ Deklaracja symbolu - informacja dla kompilatora o rodzaju symbolu i jego typie. Rodzaje deklaracji: Deklaracje typów (m.in. struktury danych) Deklaracje zmiennych Deklaracje funkcji Definicja symbolu - oznacza utworzenie elementu opisywanego przez symbol Często deklaracja symbolu jest zarazem jego definicją, np. int x; informuje kompilator o tym, że x to będzie wartość typu int, ale zarazem nakazuje utworzenie miejsca w pamięci na odpowiednią zmienną. Program w C++ składa się z ciągu deklaracji i definicji Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Funkcja main Instrukcje definiujące działanie programu (akcje) mogą wystąpić jedynie wewnątrz funkcji, program musi więc zawierać co najmniej jedną funkcję. Program musi koniecznie zawierać funkcję o nagłówku int main() lub main() albo void main() W pierwszej wersji program musi zwrócić wartość do OS W pewnych sytuacjach nagłówek funkcji main przyjmuje bardziej złożoną postać Wykonanie programu rozpoczyna się na początku funkcji main Najkrótszy prawidłowy program w C++: { } // Niektóre kompilatory wymagają typu int! Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Deklaracje globalne Symbole globalne są deklarowane na zewnątrz funkcji Są dostępne od miejsca deklaracji aż do końca pliku programu (we wszystkich funkcjach i deklaracjach występujących poniżej) Są tworzone na początku programu (jeszcze przed rozpoczęciem wykonania funkcji main) i istnieją aż do jego zakończenia Zmnienne globalne zawsze są inicjalizowane wartością 0 Przykład: int zero; // nie trzeba pisać =0 float pi = 3.1415; float 2pi = 2*pi; // już tu można użyć void main() { float P, r=10; P = pi*r*r; // użycie zmiennej pi } Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcje Instrukcje służą do opisu działań, akcji wykonywanych przez program, a także do sterowania procesem ich wykonania. Każda instrukcja musi być zakończona znakiem ; Podstawowym działaniem programu są obliczenia, a instrukcja, która je wykonuje przyjmuje postać wyrażenia, (zwykle w postaci przypisania) Przykłady: x=a*b; // przypisanie a+=(x>3); // działanie z przypisaniem i++; // inkrementacja a+1; // bez efektu ale prawidłowe Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja blokowa W wielu sytuacjach potrzebne jest wydzielenie grupy instrukcji (lub deklaracji) poprzez ich zgrupowanie w jeden blok. Służą do tego znaki { (początek bloku) i } (koniec bloku) W składni języka C++ blok jest rodzajem instrukcji Symbole zadeklarowane wewnątrz bloku zwane są lokalnymi, są ważne tylko do końca bloku i istnieją tymczasowo Przykład: int x=5,y; { // początek bloku int a,b; // zmienne lokalne int z=3*x; y=2*x; } // koniec bloku x=z; // błąd - zmienna z straciła ważność Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja pusta ; Instrukcja pusta oznacza, że w danej sytuacji nie ma być wykonywane żadne działanie. Jej użycie bywa przydatne podczas korzystania z innych, bardziej złożonych instrukcji Składnia: ; // instrukcja pusta ; ; // dwie instrukcje puste x=5; // nie każdy średnik to instrukcja pusta! Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja warunkowa Pozwala na wykonanie pewnych instrukcji w zależności od spełnienia podanych warunków Składnia: if (wyrażenie) jedna_instrukcja; // jeżeli wyrażenie!=0 wyrażenie instrukcja zero nie-zero Podstawy programowania - Program w języku C++
Instrukcja warunkowa (2) Wersja instrukcji warunkowej z klauzulą else: if (wyrażenie) jedna_instrukcja1; // jeżeli wyrażenie!=0 else jedna_instrukcja2; // jeżeli wyrażenie==0 wyrażenie instrukcja1 instrukcja2 zero nie-zero Podstawy programowania - Program w języku C++
Przykłady instrukcji warunkowych if (delta==0) x0=-b/(2*a); if (delta<=0) ; // instrukcja pusta else { // jedna instrukcja (blokowa)!!! x1=(-b-sqrt(delta)) / (2*a); x2=(-b+sqrt(delta)) / (2*a); } if (alfa) // czyli: if (alfa!=0) x=1/sin(alfa); else // w przeciwnym wypadku x=0; // czyli jeżeli alfa==0 Podstawy programowania - Program w języku C++
Przykłady instrukcji warunkowych (2) Wybór największej spośród trzech liczb a, b, c: if (a>b) if (a>c) max=a; else // tzn. jeżeli c>=a max=c; else // tzn. jeżeli b>=a if (b>c) max=b; else // tzn. jeżeli c>=b Jedna instrukcja (warunkowa) Podstawy programowania - Program w języku C++
Przykłady instrukcji warunkowych (3) Klauzula else wiązana jest zawsze z ostatnim if if (a>0) if (a<b) x=a; else // czyli jeżeli a>=b x=0; { // blok wymusi inne wiązanie ‘else’ } else // czyli jeżeli a<=0 Podstawy programowania - Program w języku C++
Instrukcja wielokrotnego wyboru W sytuacji, gdy w zależności wartości pewnego wyrażenia chcemy podjąć jedną z kilku wersji działania, należy sprawdzić kolejno wszystkie możliwe wartości, np.: if (x==wartosc1) instrukcja1; else if (x==wartosc2) instrukcja2; if (x==wartosc3) instrukcja3; instrukcja_domyślna; Podstawy programowania - Program w języku C++
Instrukcja wielokrotnego wyboru (2) Zamiast serii instrukcji if można zastosować instrukcję wielokrotnego wyboru switch Składnia: switch (wyrażenie) // nawias obowiązkowy { case wartość1: instrukcje1; break; // wyskok case wartość2: instrukcje2; case wartość3: instrukcje3; default: instrukcje_domyślne; }; // obowiązkowe nawiasy klamrowe i średnik Podstawy programowania - Program w języku C++
Instrukcja wielokrotnego wyboru (3) Klauzulę default można pominąć Instrukcje dla danego przypadku nie muszą być połączone w blok switch (wyrażenie) { case wartość1: instrukcja11; instrukcja12; instrukcja13; break; case wartość2: instrukcje2; case wartość3: instrukcje3; break; // to można pominąć }; Podstawy programowania - Program w języku C++
Instrukcja wielokrotnego wyboru (4) Można również pominąć podanie jakiejkolwiek instrukcji dla danego przypadku. Zostanie wykonana pierwsza napotkana instrukcja. switch (x) { case 1: case 2: ; // instrukcja pusta break; case 3: instrukcja123; // wykona się dla 1,2 i 3 case 4: case 5: instrukcja45; // wykona się dla 4 i 5 }; Podstawy programowania - Program w języku C++
Instrukcja wielokrotnego wyboru (5) Pominięcie break powoduje, że wykonywane są kolejne instrukcje z listy (inne przypadki!). Przykład: x=0; switch (a) { case 1: x++; case 2: x+=2; case 3: x+=3; }; Po wykonaniu powyższej instrukcji: dla a=1 -> x=6, dla a=2 -> x=5, dla a=3 -> x=3 Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Pętle W wielu sytuacjach istnieje potrzeba zaprogramowania pewnej czynności, która powtarza się wielokrotnie w identycznej lub podobnej postaci Konstrukcje programistyczne pozwalające na opis takich sytuacji nazywają się pętlami Każda pętla pozwala na opis powtarzanej czynności (tzw. wnętrze pętli) oraz posiada warunek powtórzenia lub warunek wyjścia, który decyduje o zakończeniu powtarzania Warunek może być sprawdzany przed (na początku) lub po (na końcu) wykonaniu wnętrza pętli W języku C++ istnieją trzy instrukcje pętli: while do while for Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja while Pętla while używana jest w sytuacjach, gdy określone działanie ma być wykonywane wielokrotnie dopóty, dopóki podany warunek jest spełniony Sprawdzenie warunku odbywa się przed wykonaniem wnętrza, więc możliwa jest sytuacja, że nie wykona się ono ani razu. wyrażenie działanie zero nie-zero Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja while (2) Składnia: while (wyrażenie) jedna_instrukcja; // wykonaj jeżeli wyrażenie!=0 Jeżeli chcemy wykonać więcej instrukcji, łączymy je w blok: { // jedna instrukcja (blokowa) instrukcja1; instrukcja2; ... } Podstawy programowania - Program w języku C++
Przykłady użycia instrukcji while while (1) // pętla nieskończona instrukcja; while (0) instrukcja; // nie wykona się ani razu while (a<10) { // instrukcja blokowa x=a*2; a++; } int i=1, x=0; while (x+=i++ < 10) // sumowanie liczb aż będzie 10 ; // instrukcja pusta Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja do while Pętla do while różni się od pętli while tym, że sprawdzenie warunku odbywa się po wykonaniu wnętrza Zawartość tej pętli zawsze wykona się co najmniej jednokrotnie wyrażenie działanie zero nie-zero Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja do while (2) Składnia: do jedna_instrukcja; while (wyrażenie); // jeżeli wyrażenie==0 -> zakończ Dla grupy instrukcji: do { // jedna instrukcja (blokowa) instrukcja1; instrukcja2; ... } while (wyrażenie); Podstawy programowania - Program w języku C++
Przykłady użycia instrukcji do while int a=6; // Obliczanie silni z wartości a unsigned long silnia=1; do { silnia=silnia*a; a--; } while (a>0); do // wczytywanie liczby dodatniej cin >> x; // z klawiatury while (x<=0); // jeżeli ujemna - jeszcze raz Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja for Instrukcja for w większości języków programowania zwana jest instrukcją iteracyjną i stosowana w przypadku, gdy znana jest raczej liczba powtórzeń pętli niż warunek jej zakończenia Jej cechą szczególną jest fakt kontroli numeru iteracji (powtórzenia) Typowa postać (język Pascal): for i:=a to b do instrukcja (dla i zmieniającego się od a do b wykonuj instrukcję) W języku C++ instrukcja for również najczęściej stosowana jest jako instrukcja iteracyjna ale jej składnia jest bardzo elastyczna i pozwala na bardzo szeroki wachlarz zastosowań Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja for (2) Składnia: for (instr_początkowa; wyrażenie; instr_iteracyjna) jedna_instrukcja; Instrukcja początkowa - instrukcja wykonywana jednokrotnie, przed wykonaniem pętli i sprawdzeniem warunku Wyrażenie - warunek kontynuacji pętli, sprawdzany przed wyrażenie==0 - wnętrze pętli wykona się, wyrażene!= 0 - pętla się zakończy (jak w pętli while). Warunek sprawdzany jest przed wykonaniem pętli, a więc wnętrze pętli i instrukcja iteracyjna mogą nie zostać wykonane ani razu (podobnie jak w instrukcji while) Instrukcja iteracyjna - dodatkowa instrukcja wykonywana po każdym wykonaniu wnętrza pętli Podstawy programowania - Program w języku C++
Instrukcja for (3) Instrukcja początkowa zero wyrażenie nie-zero Działanie Instrukcja iteracyjna Podstawy programowania - Program w języku C++
Przykłady użycia instrukcji for Typowe zastosowania pętli for jako instrukcji iteracyjnej: for (i=0; i<10; i++) // kolejność rosnąca x=i*10; // i zawiera numer powtórzenia (od 0) for (x=100; x>0; x--) // kolejność malejąca { if (x==50) // instrukcja warunkowa x--; // „ominięcie” iteracji // wykorzystaj x //odliczanie 100 do 1 oprócz 50 } silnia=1; for (x=10; x; x--) // warunek nie musi być relacją silnia*=x; Podstawy programowania - Program w języku C++
Inne przykłady użycia instrukcji for for (;a!=5;a++) // bez instrukcji początkowej instrukcja; for (a=0;;a++) // bez warunku (nieskończona) for (i=0;i<10;) // bez instrukcji iteracyjnej i+=3; // lepiej użyć pętli while for (;;) // prosta pętla nieskończona Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja break Instrukcja break (wyskok) powoduje natychmiastowe przerwanie wykonania instrukcji: for, while, do while lub switch i przejście do instrukcji następnej Umożliwia ona zakończenie pętli niezależne od narzuconego warunku, zwłaszcza przydatne przy pętlach nieskończonych. Przydatna w sytuacji, gdy dalsze wykonywanie pętli straciło z jakiegoś powodu sens Przykład: liczba=57; // szukamy pierwiastka z 'liczba' for (i=1; i<=10000; i++) // szukamy aż do 10000 if (i*i>=liczba) { x=i; // już znaleźliśmy break; // dalej nie ma sensu } Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja continue Instrukcja continue powoduje natychmiastowe przerwanie wykonania wnętrza pętli for, while i do while i przejście do wykonania następnego powtórzenia pętli Przydatna w sytuacji, gdy dalsze wykonywanie działań dla tego powtórzenia nie ma sensu lub gdy chcemy „ominąć” któreś z powtórzeń Przykład while (x<100) { if (x%10==0) // x podzielne przez 10 { x++; continue; // ominięcie „okrągłych” x } a=x+5; x++; } Podstawy programowania - Program w języku C++
Podstawy programowania - Program w języku C++ Instrukcja return Instrukcja return powoduje natychmiastowe przerwanie aktualnie wykonywanej funkcji. Jeżeli jest to funkcja main, następuje zakończenie programu Jeżeli nagłówek funkcji tego wymaga, należy po słowie return podać zwracaną wartość odpowiedniego typu Jeżeli nagłówek funkcji main ma postać: void main() wystarczy samo return;, Jeżeli ma postać: int main()lub main() należy wywołać return wartość_typu_int; Podstawy programowania - Program w języku C++
„Wyklęta” instrukcja goto Instrukcja goto powoduje skok do miejsca programu oznaczonego podaną etykietą. Nie zaleca się użycia tej instrukcji ze względu na to, że jest sprzeczne z zasadami programowania strukturalnego i ma negatywny wpływ na czytelność kodu. Składnia: goto etykieta; W dokładnie jednym miejscu programu powinna znajdować się instrukcja poprzedzona podaną etykietą i znakiem :, np.: if (x==0) goto zero; // skok do etykiety zero a=1/x; zero: // etykieta a=1; Podstawy programowania - Program w języku C++
Zestawienie poznanych instrukcji Wyrażenie (obliczenia) Warunek (if) Wielokrotny wybór (switch) Pętla (while, do while, for) Skoki (break, continue, return, goto) Instrukcja pusta Instrukcja blokowa Podstawy programowania - Program w języku C++
To już koniec++ Dziękuję za uwagę