1 Podstawy programowania w języku C i C++Podstawy programowania w języku C i C++. Temat: Język C: typy danych, operatory i wyrażenia. Instrukcje wejścia, wyjścia. Przykłady programów. Cele nauczania: Podstawowe zasady programowania. Praktyczna znajomość elementów programowania w języku C/C++ Docelowo : Opracowanie algorytmu wybranego zadania geodezyjnego i przedstawienie go w postaci schematu blokowego. Opracowanie programu w wybranym języku programowania Wykonanie dokumentacji programu . Szczegółowe dla lekcji: Zapoznanie się z podstawowymi typami danych w języku C, operatorami, instrukcjami wprowadzania danych (wejścia) i wyprowadzania wyników (wyświetlenie na ekranie). Umiejętność zastosowania instrukcji we/wy w prostych programach. Praktyczne wprowadzanie, uruchamianie i kompilacja programów z instrukcjami wejścia/wyjścia.. Cele operacyjne lub szczegółowe cele kształcenia Po zakończeniu lekcji uczeń będzie umiał: stosować podstawowe typy danych i operatory w C oraz wprowadzać dane i wyprowadzać wyniki
2 Część merytoryczna Część wstępnaCzęść wstępna - organizacyjna: przywitanie, sprawdzenie obecności, wpisanie tematu lekcji. - 5 min Część merytoryczna Ogniwo 1. Uświadomienie uczniom celów – pogadanka - 2 min Celem zajęć jest zapoznanie się z podstawowymi typami danych w języku C, operatorami, instrukcjami wprowadzania danych (wejścia) i wyprowadzania wyników (wyjścia). Umiejętność zastosowania instrukcji we/wy w prostych programach. Po 2 lekcjach : uczeń uruchamia program Turbo C, wpisuje i uruchamia programy, stosując instrukcje we/wy.
3 Ogniwo 2 Poznanie nowych faktów – pogadanka – 3 minDo programowania w każdym języku należy znać typy danych oraz metody wprowadzania danych oraz wyprowadzania wyników. W języku C występuje tylko kilka podstawowych typów danych: char - jeden bajt, zdolny pomieścić 1 znak; int - typ całkowity; float - typ rzeczywisty pojedynczej precyzji; double - typ rzeczywisty (zmiennopozycyjny) podwójnej precyzji. Dodatkowo występuje kilka kwalifikatorów: short i long, signed i unsigned. Są jeszcze inne typy danych jak: void (typ funkcji nie zwracającej wartości), enum (typ wyliczeniowy) oraz typ wskaźnikowy. Do wprowadzania danych w języku C i C++ służą funkcje getchar(), gets(), scanf(). W języku C++ instrukcja cin >> (strumień wejściowy cin i operator wejściowy >>) Do wyprowadzania – funkcje: puchar() – znak , puts() - łańcuch, printf() – uniwersalna funkcja. W języku C++ instrukcja cout << (strumień wyjściowy cout i operator wyjściowy <<)
4 Ogniwo 3. Kształtowanie pojęć, poznawanie, systematyzowanie wiedzy - 35 min1) Przypomnienie podstawowych elementów języka C: Programy w C mają rozszerzenia plików C a w C++ rozszerzenie CPP. Po skompilowaniu program ma rozszerzenie EXE. Polecenia kończymy średnikiem. Kod funkcji umieszcza się w nawiasach klamrowych. Rozróżniane są w C duże i małe litery. Stałe oznaczamy zwykle dużymi literami. W definicji poprzedzone słowem const Komentarze typu /* … */ w C i C++ mogą być wielo-liniowe oraz typu // w jednej linii w C++ Program zawiera zawsze: funkcję main(). Na końcu funkcji main jest zwykle return 0;. Zwykle program zawiera nagłówek jako komentarz,, dyrektywy preprocesora , zwłaszcza #include, czasem #define – stałe i makroinstrukcje. Przed funkcją główną mogą być zadeklarowane lub zdefiniowane stałe, zmienne globalne oraz funkcje. Zmienna musi być zadeklarowana prze użyciem. Aby zatrzymać program, używamy funkcji getch();. Do czyszczenia ekranu służy funkcja clrscr();. W tekście możemy używać tzw. znaków specjalnych, np. przejście do następnej linii \n. Program składa się z ciągu instrukcji rozdzielonych średnikami Instrukcje położone są pomiędzy słowami kluczowymi { i } Instrukcje mogą zawierać wyrażenia oraz wywołania funkcji. Wyrażenia składają się ze stałych, operatorów i identyfikatorów (nazwa stałych, zmiennych, funkcji). Identyfikatory są nazwami obiektów składających się na program. Mogą one zawierać litery, cyfry i znaki podkreślenia, nie mogą jednak zaczynać się od cyfr. Mogą zaczynać się od liter lub znaku _
5 2) Podstawowe typy danych w jezyku CW języku C każda zmienna ma swój typ, który musi być określony przed pierwszym użyciem. Istnieją wbudowane i zdefiniowane przez użytkownika typy danych. W języku C wyróżniamy następujące podstawowe wbudowane typy zmiennych. char – typ znakowy - jednobajtowe liczby całkowite, służy do przechowywania znaków (1 Bajt); int- liczby całkowite - typ całkowity, o długości domyślnej dla danej architektury komputera (2 B); float – liczby rzeczywiste - typ zmiennopozycyjny (zwany również zmiennoprzecinkowym), reprezentujący liczby rzeczywiste (4 Bajty); double – liczby rzeczywiste - typ zmiennopozycyjny podwójnej precyzji (8 B); Specyfikatory – signed, unsigned, short, long - słowa kluczowe, które zmieniają znaczenie short - liczby całkowite krótkie long - liczby całkowite długie long double - liczby zmiennoprzecinkowe podwójnej precyzji długie
6 Specyfikatory – signed, unsigned, short, longSpecyfikatory - słowa kluczowe, które postawione przy typie danych zmieniają jego znaczenie. signed – liczba ze znakiem i unsigned – nieujemna (bez znaku) short i long są wskazówkami dla kompilatora, by zarezerwował dla danego typu mniej lub więcej pamięci. Mogą być zastosowane do dwóch typów: int i double (tylko long), mając różne znaczenie. Jeśli przy short lub long nie napiszemy, o jaki typ nam chodzi, kompilator przyjmie wartość domyślną czyli int. Przykłady: signed char a; /* zmienna a przyjmuje wartości od -128 do 127 */ unsigned char b; /* zmienna b przyjmuje wartości od 0 do */ unsigned short c; unsigned long int d;
7 Typy zmiennych, zakresy, rozmiar, zapisZapis liczb: dziesiętne, z kropką dziesiętną i ewentualnie E (postać m*10^c) ósemkowe z 0 na początku, szesnastkowe z 0x na początku.
8 Typ int - dla liczb całkowitychTyp int przeznaczony jest do liczb całkowitych. Liczby te możemy zapisać na kilka sposobów: System dziesiętny: np. 21; 13; 45; 156 System ósemkowy (oktalny): np. 010; (Cyfry ). Cyfra 8 nie jest dozwolona. Jeżeli chcemy użyć takiego zapisu musimy zacząć liczbę od 0 System szesnastkowy (heksadecymalny, cyfry 0...F), np. 0x10, 0xff. Aby użyć takiego systemu musimy poprzedzić liczbę ciągiem 0x Wielkość znaków w takich literałach nie ma znaczenia.
9 Typ char dla znaków Jest to typ znakowy, umożliwiający zapis znaków ASCII. Może też być traktowany jako liczba z zakresu Znaki zapisujemy w pojedynczych cudzysłowach (apostrofach), by odróżnić je od łańcuchów tekstowych (pisanych w podwójnych cudzysłowach). Np. ‘A’, ‘a’, ‘!’, ‘$’ Pojedynczy cudzysłów ' zapisujemy '\'' a nul (czyli zero, które między innymi kończy napisy) tak: '\0'
10 Znaki specjalne – kody sterujące (escape sekwencje):'\a' - alarm (sygnał akustyczny terminala); '\b' - backspace (usuwa poprzedzający znak); '\f ‘- wysuniecie strony (np. w drukarce); '\r' - powrót kursora (karetki) do początku wiersza; '\n' - znak nowego wiersza; '\"' – cudzysłów; '\'' – apostrof; '\\' - ukośnik wsteczny (backslash); '\t' - tabulacja pozioma; '\v' - tabulacja pionowa; '\?' - znak zapytania (pytajnik); '\ooo' - liczba zapisana w systemie oktalnym (ósemkowym), gdzie 'ooo' należy zastąpić trzycyfrową liczbą w tym systemie; np. \101 – litera K '\xhh' - liczba zapisana w systemie heksadecymalnym (szesnastkowym), gdzie 'hh' należy zastąpić 2-cyfrową liczbą w tym systemie, np. \x4B – litera K
11 Escape-sekwencje - sekwencje specjalne
12 3) Operatory i wyrażenia w języku COperatory umożliwiają zapisywanie wyrażeń. Operatory matematyczne (arytmetyczne): +, -. *. /, % Operator przypisania =, np. a=5; a+=5; Dwa przypisania naraz: x=y=10; (najpierw y=10, potem x=y czyli 10) Operator łączenia, np. int x, y, z; Operator inkrementacji: ++ i dekrementacji --, np. i++; --j; Wyrażenie jest kombinacją stałych, zmiennych i operatorów. Np. float a, b, pole; a=10.0; b=5.0; pole=a*b; Wyrażenia są zapisami operacji, jakie mają być wykonane. Wyrażenie składa się ze stałych, zmiennych i operatorów. Kolejność wykonywania działań określają nawiasy i priorytet operatorów.
13 Wyrażenia, instrukcje Wyrażenia są zapisami operacji. Wyrażenie składa się ze stałych, zmiennych i łączących je operatorów. Kolejność wykonywania działań określają nawiasy oraz priorytet operatorów. Wyrażenie – wszystko co zwraca wartość. Wyrażeniem może być samodzielny element, np. liczba, stała, zmienna. Może to być też kombinacja w/w elementów połączonych znakami operatorów, arytmetycznych lub logicznych. Przykłady: 3.2; PI; a=a+b; x=y; x
14 Instrukcje Instrukcje są to fragmenty tekstu programu (zwykle linie), które powodują jakąś czynność komputera w trakcie wykonywania programu. Instrukcje można podzielić na grupy: Instrukcje obliczające wartości wyrażeń, np. a=b+c; Każda taka instrukcja musi być zakończona średnikiem Instrukcje grupujące (złożone) - ograniczone klamrami { }, np. { a=3; b=2.2; p=a*b; printf("Pole=%f",p);} Instrukcje sterujące, warunkowe: if, if…else, switch, while, do…while, for Instrukcje wywołania funkcji: funkcja(parametry_akualne); Np. int funkcja_d(int a, int b, float c); //deklaracja funkcji, gdzieś definicja int k; k=funkcja_d(5, 6, 17.33); //wywołanie funkcji
15 Operatory Do wykonania obliczeń zmieniających dane w informacje, niezbędne są operatory. Operator to symbol mówiący komputerowi, jak ma przetwarzać dane. Operatory, z punktu widzenia liczby argumentów dzielimy na dwuargumentowe i jednoargumentowe. a op b - op jest operatorem 2-argumentowym, np. a+b; a*b; a/b; a%b; op a jest operatorem jednoargumentowym, np. - -a; -(a+b); !a
16 Operatory można pogrupować wg cech funkcjonalnych na grupy:operatory arytmetyczne: +, -, *, /, % (dzielenie modulo - reszta) operatory porównania – relacyjne: ==, !=, <, >, <=. >+ operatory logiczne: && (and), || (or), ! (not) operatory bitowe operatory przypisania: =, += (a=+b a=a+b), -=, *=, /+, %=… operatory unarne inkrementacji i dekrementacji: ++, -- np. x++; x--; ++x; --x; operatory rozmiaru: sizeof(obiekt) operatory konwersji: (nazwa typu) wyrażenie operator warunkowy: Op1 ? Op2: Op3; operator przecinkowy: Op1, Op2, ..., Opn operatory wskazywania ->
17 Najczęściej używane operatory:
18
19 Inne operatory: Operator przecinkowy (,), stosowany w instrukcjach cyklu for a także w wywołaniach funkcji. Para wyrażeń oddzielonych operatorem obliczana jest od lewej do prawej. Rezultatem jest wyrażenie po prawej stronie. Ogólny zapis: wyrażenie po lewej, wyrażenie po prawej Instrukcja for z operatorem przecinkowym: for (wyr1; wyr2; wyr3a; wyr3b) { instrukcje} np. int i, j; for(i=0; j=10; j>=0; i++; j--) {printf(„\n %2i %2i %6.3f %6.3f, i, j, sqrt((double) i), sin((double) j)); } Przykład wywołania funkcji: f(a, b, (k=2, k+7), d) – wywołanie funkcji z 4 argumentami, trzeci ma wartość 9. Operatory wskazywania: & operator adresu, - adres zmiennej np. &count – adres zmiennej count * operator adresowania pośredniego, . operator składowej, -> operator wskaźnikowy składowej Operatory wejścia >> i wyjścia << w C++
20 Opis szczegółowy operatorówOperatory arytmetyczne Operator Działanie Przykład Wynik * Mnożenie a=2*5; /*1 0 */ / dzielenie a=a/10.0; /* 1.0 */ + dodawanie a=a+14; /* 15 */ - Odejmowanie a=a-5; // 10 % reszta z dzielenia c=10 % 3; // wynik = 1
21 Operatory relacyjne Do ustalania warunków przydają się także inne operatory, tzw. Operatory relacyjne < mniejszy > większy <= mniejszy lub równy >= większy lub równy Operatory porównania = = równy != nierówny Wykonują one odpowiednie porównanie swoich argumentów i zwracają jedynkę jeżeli warunek jest spełniony lub zero jeżeli nie jest. Operatory relacji: > >= < <= (mają ten sam priorytet) Operatory przyrównania: == (równe) != (różne) (priorytet niższy)
22 Przykłady wyrażeń z operatorami porównania#include
23 Podejmowanie decyzji – operacje logiczne! Negacja – not logiczne nie && - Koniunkcja - and logiczne i || - Alternatywa - or logiczne lub Przykład: int main() { int a, b, c, d; a=1; b=0; c = a&&b; // 0; d = a||b; // 1 cout << c << endl << d; return 0; } Wynik: 1
24 Operator przypisania i wieloznakowe operatory przypisaniaInstrukcją przypisania jest trójka elementów zapisana jako: identyfikator operator_przypisnia wyrażenie Identyfikator to np. nazwa zmiennej. Wyrażenie – dowolne wyrażenia Operator Zapis w C Znaczenie = a=b; a=b // przypisanie zwykłe += a=+b; a-a+b; // wieloznakowe operatory przypisania -= a=-b; a=a-b; *= a=*b; a=a*b; /= a=/b; a=a/b; %= a=%b; a=a%b; &= a=&b; a=a&b; != a=!b; a=a!b; ~= a=~b; a=a~b;
25 Wieloznakowe operatory przypisaniaZapis skrócony postaci a #= b; gdzie # jest jednym z operatorów: +, -, *, /, &, |, ^, << , >>. Ogólnie zapis a #= b; np. a+=b a=a+b; jest równoważny zapisowi a = a # b; a=a+b;
26 Wyniki #include
27 Operatory unarne (jednoargumentowe)inkrementacji ++ // zwiększenie o 1, typu x=a++; // postinkrementacja. Najpierw przypisanie do x wartości a, potem zwiększenie a o 1 x= ++a; // preinkrementacja Najpierw zwiększenie a o 1 , potem przypisanie a do x dekrementacji -- // zmniejszenie o 1, typu x=i- - // postdekrementacja (przypisanie i zmniejszenie a) x=--i // predekrementacja (zmniejszenie a i przypisanie) minus jednoargumentowy np. a=-b;
28 Operatory unarne a++, ++a - przykładowy program w C++#include
29 Program w C – operator jednoargumentowy ++, --#include
30 Rzutowanie, operator konwersjiZadaniem rzutowania jest konwersja danej jednego typu na daną innego typu. Konwersja może być niejawna (domyślna konwersja przyjęta przez kompilator) lub jawna (podana explicite przez programistę). Przykłady konwersji niejawnej: int i = 42.7; /* konwersja z double do int */ float f = i; /* konwersja z int do float */ double d = f; /* konwersja z float do double */ unsigned u = i; /* konwersja z int do unsigned int */ f = 4.2; /* konwersja z double do float */ i = d; /* konwersja z double do int */ Operator konwersji (rzutowania) pozwala na jawne przekształcenie typów danych Zapis operatora konwersji (nazwa typu) wyrażenie Np. int m, n; n=10; m=n+ (int) ; Wyrażenie jest przekształcane wg reguł dla typu określonego przez nazwę typu. Operator rzutowania służy do jawnego wymuszenia konwersji
31 Wyniki 42 Konwersja niejawnaint i = 42.7; /* konwersja z double do int 42 */ float f = i; /* konwersja z int do float */ double d = f; /* konwersja z float do double */ unsigned u = i; /* konw. z int do unsigned int 42*/ f = 4.2; /* konwersja z double do float 4.2*/ i = d; /* konwersja z double do int 42*/ /* Program konwn.c */ #include
32 Wyniki Wartosci poczatkowe: /* Program p35.c ( operator konwersji ) */#include
33 Operator warunkowy ? Operator warunkowy ?Wyrażenie z użyciem operatora warunkowego: Op1 ? Op2: Op3; wyrażenie_warunkowe? wyrażenie_na_tak: wyrażenie_na_nie; Operator warunkowy ? pozwala zapisać w bardziej zwartej formie pewne konstrukcje programowe wymagające użycia instrukcji if. Np. z = (a>b)? a:b; /* z=max(a,b) */
34 Program z zastosowaniem operatora warunkowego - funkcja max/* C++ - Operator warunkowy - funkacja max */ #include
35 Operator przecinkowy/wyliczeniowy, (koma)Wyrażenie wyliczeniowe ma postać: Op1, Op2, ..., Opn gdzie Opi, (i=1..n) są operandami dowolnych typów. Opracowanie tego wyrażenia polega na obliczeniu wartości kolejnych operandów, począwszy od Op1, a skończywszy na Opn. Typ i wartość całego wyrażenia określa operand Opn. W C++ wynik wyrażenia wyliczeniowego jest l-wartością. Poprawne jest więc wyrażenie: (a+=b, c-=d, c*=a)++; Przykład: int n=10, i=2, k=4, wynik; wynik=(n-=i, k+=2, i*=5): W wyniku obliczenia powyższego wyrażenia zmienne uzyskają następujące wartości: n = n-i = 10-2=8 k = k+2 = 4+2=6 i = i*5 = 2*5=10 (ostatni operand) wynik = wartość ostatniego operandu, czyli 10 // Program operprz1.cpp #include
36 /*Program opprz2.c operator przecinkowy ) */#include
37 Priorytety operatorów, kolejność wykonywania działań:Nawiasy mają najwyższy priorytet. Mnożenie i dzielenie mają pierwszeństwo przed dodawaniem i odejmowaniem. Dzielenie jest równoprawne z mnożeniem. W przypadku jednakowego priorytetu operatorów o priorytecie decyduje kolejność ich występowania w wyrażeniu – od lewej do prawej strony.
38 4) Instrukcje wejścia i wyjścia w języku C:Wejście i wyjście programu Do podstawowych funkcji języka C, umożliwiających komunikację z otoczeniem należą: dla operacji wyjścia: putchar, puts, printf; dla operacji wejścia: getchar, gets, scanf; W DOS, wyniki wysyłane na ekran mogą być przy pomocy znaku potoku wysłane do pliku lub na drukarkę. Np. program.exe > Wynik.txt do pliku, usunięcie istniejącego program.exe >> wyniki.txt do pliku – dopisanie do istniejącego program.exe > PRN na drukarkę
39 Przykład programu z instrukcjami we/wy/* Program wczytuj1.c */ #include
40 4.1) Operacje wyjścia – wyświetlania wyników na ekranieFunkcja putchar: int putchar(int) Funkcja wysyła pojedynczy znak na zewnątrz (do standardowego strumienia wyjściowego stdout, standardowo na ekran) . Funkcja (makro) zwraca wartość wypisanego znaku lub EOF (jako sygnał błędu). Wyświetla na ekranie wartość pojedynczego znaku: literał znakowy, np. puchar(‘H’); } Stałą typu char: np. const char INITIAL = 'H'; // stała putchar(INITIAL); zmienną typu char: char litera; // deklaracja zmiennej litera=’G’; // definicja zmiennej puchar(litera);
41 Funkcja putchar() – programy do wprowadzania znaku/* Program litznak.c - literał znakowy */ #include
42 Kody sterujące Kody sterujące: Znaki specjalne:kod nowego wiersza: \n np. puchar(‘\n’); kod tabulacji: \t kod powrotu karetki \r Kod cofania \b kod wysunięcia strony \f kod dzwonka \a putchar(‘\a’); lub \007 Znaki specjalne: \’ – wyświetla apostrof, \” – cudzysłów, \\ - backslash, \007 – dzwonek /* Program dzwonki.c */ #include
43 Funkcja puts() - wyświetla na ekranie łańcuch znaków.Funkcja puts() – int puts(const char *s) Wysyła łańcuch s do standardowego strumienia wyjściowego (stdout) i dołącza znak końca wiersza. W przypadku powodzenia operacji wartość jest nieujemna, w przeciwnym wypadku EOF. puts (parametr); Parametr – informacja, którą chcemy wyświetlić musi być określonego typu: Literał znakowy: np. puts("Jak leci?"); Stała znakowa: #define KOMUNIKAT "Jak sie masz?" puts(KOMUNIKAT); Zmienna łańcuchowa: char pozdrowienie[] = "Dzien dobry"; Przykład: /* Program puts1.c */ #include
44 Funkcja puts() – program przykładowy/* Program puts1a.c */ #include
45 Funkcja printf() - uniwersalnaFunkcje puts() i puchar() mogą wyświetlić tylko jedną rzecz: łańcuch znaków lub znak i nie mogą wyświetlić wartości liczbowych. Funkcja printf() jest bardziej uniwersalna. Może wyświetlić dane dowolnego typu i współpracować z wieloma argumentami. Wyprowadza wynik przetwarzania w różnych formatach. printf (łańcuch_sterujący, lista _danych_argumentów); lub inaczej printf(ciag_formatujący, lista parametrów); Ciąg formatujący jest zwykłym ciągiem znaków do wyświetlenia na ekranie. Jednak niektóre znaki mają funkcję specjalną i nie zostaną one po prostu wyświetlone. Takim właśnie znakiem jest znak % . Gdy funkcja printf() go napotka to wie, że po nim wystąpi określenie rodzaju argumentu i formatu jego wyświetlenia na ekranie. /* Przykład: getchar1.c */ #include
46 Ciąg formatujący Najprostszy zapis ciągu formatującego:%Litera, gdzie litera wskazuje typ danych: %d liczby całkowite, %u liczby całkowite bez znaku, %f liczby dziesiętne typu float lub double, %e liczby dziesiętne wykładnicze, %g – liczby dziesiętne w najkrótszym zapisie, %c – znak, %s – łańcuch %x – zmienna typu int szesnastkowe, %o – zmienna typu int w postaci ósemkowej Ogólnie ciąg formatujący ma zapis : % [flagi] [szerokość] [precyzja] [modyfiktor wielkości] typ_parametru Tylko "typ_parametru" musi wystąpić po znaku % , natomiast parametry podane w nawiasach kwadratowym są opcjonalne i może ich w ogóle nie być (tak jest w przedstawionym przykładzie). #include
47 Formaty realizowane przez funkcję printf (znaki typu w łańcuchach formatujących)
48 Przykład 1 z printf() - program printf1.c ze zmiennymiinclude
49 Przykład 2 z printf() /* Program printf2.c */ #include
50 Przykład 3 z printf() Wynik /* program printf3.c */#include
51 Przykład 4 z printf() #include
52 Wyprowadzanie danych w języku C++: cout <<Polecenie cout z operatorem wyjścia << , czyli cout << W C++ poza powyższymi istnieje dodatkowy sposób wyprowadzania informacji wszystkich typów: Instrukcja cout << wyświetla wartości literałów, stałych i zmiennych bez konieczności korzystania ze specyfikatorów formatowania. Do wykorzystania polecenia cout należy w dyrektywie #include wyspecyfikować plik iostream.h Polecenie cout języka C++ #include
53 4.2) Operacje wejścia wprowadzanie danych w C i C++Do wczytywania danych stosuje się instrukcje getchar(), gets(), scanf() w C i C++ oraz cin >> w C++ Funkcja gets() służy do wczytania pojedynczej linii. Np. char linia[80]; gets(linia); getchar umożliwia wprowadzenie pojedynczego znaku Np. char znak; znak=getchar(); putchar(znak); scanf() to uniwersalna funkcja do wprowadzania wszelkiego typu informacji. Składa się z łańcucha sterującego i listy danych. scanf(„lancuch_sterujacy”,lista_danych); Np. float ilosc; scanf(„%f”,&ilosc); Łańcuch sterujący zawiera specyfikatory formatowania – jak będą interpretowane dane wejściowe. Specyfikatory formatowania: %d – wprowadza liczbę całkowitą, %u – liczba bez znaku, %f – liczba float, %e – liczba w systemie wykładniczym, %g – liczba dziesiętna w najkrótszym zapisie, %c – dana znakowa char, %s – łańcuch znaków, %o – liczba ósemkowa, %x – liczba szesnastkowa
54 getchar() Wejście oznacza wprowadzanie danych do komputera na użytek programu. Wprowadzane dane są przypisywane zmiennym. 1) Wprowadzenie znaku z klawiatury: Funkcja getchar() - int getchar(void) Wczytuje pojedynczy znak z klawiatury. Przy wprowadzaniu można korzystać z typu char lub int. Syntaktycznie postać funkcji jest następująca: c = getchar(); gdzie c jest typu char. /* Przykład: getchar1.c - funkcja getchar() */ #include
55 getchar() – przykład programuPo każdym wywołaniu funkcja getchar() pobiera ze strumienia znaków następny znak i wraca z jego zawartością. Zawartością zmiennej jest następny znak z wejścia. /* Program getchar3.c - czyta i wypisuje wprowadzone znaki aż do naciśnięcia końca pliku Ctrl Z */ #include
56 Funkcja gets() - char *gets(char *s);Funkcja gets() wprowadza łańcuch ze standardowego wejścia stdin do zmiennej s. Parametrem funkcji jest nazwa zmiennej. Kolekcjonuje łańcuch znaków zakończonych znakiem nowej linii (Enter) i podstawia do zmiennej s. Znak nowej linii jest zastąpiony przez znak null \0 w zmiennej s. Przykład funkcji z gets() – wprowadzenie imienia /* Program gets1.c */ #include
57 Wersja druga programu wczytywania danych z gets/* Program wczytuj2.c */ #include
58 Funkcja scanf() – uniwersalne wejścieFunkcja scanf() – prototyp: int scanf(const char *format[, address, ...]); scanf(”łańcuch_sterujący”, lista_danych); Skanuje (śledzi, czyta) i formatuje dane wprowadzone ze standardowego wejścia. Funkcja scanf() służy do odczytu wprowadzonych danych z klawiatury Jest to uniwersalny sposób na wprowadzanie do komputera informacji wszelkiego typu. Funkcja śledzi (skanuje) klawiaturę, badając, czy został naciśnięty jakiś klawisz, potem interpretuje dane wejściowe zgodnie ze specyfikatorami formatowania. Podobnie jak printf(), funkcja scanf() dopuszcza wiele argumentów – można wprowadzać dane liczbowe, łańcuchowe i znakowe typu char. Parametr funkcji scanf() składa się z łańcucha sterującego i listy danych. W funkcji scanf() specyfikatory nazywamy znakami konwersji. Lista danych zawiera zmienne, jakie będą przyjmować wartości wejściowe. Łańcuch sterujący zawiera specyfikatory formatowania, takie same jak w funkcji printf():
59 Specyfikatory formatowania%d – wprowadza liczbę całkowitą, %u – liczbę całkowitą bez znaku, %f – liczba rzeczywista typu float, %c – znak, %s – łańcuch, %o - liczba ósemkowa, %x – liczba szesnastkowa, %e – liczba w zapisie wykładniczym, %g – liczba dziesiętna w najkrótszym zapisie. Wzorzec konwersji określa typ zmiennej, którą wpiszemy z klawiatury lub wypiszemy na ekranie.
60 Tabela: deklaracje zmiennych określonego typu, wzorce konwersji, przykładyTyp zmiennej Deklaracja Wzorzec Postać funkcji scanf() Postać funkcji printf() liczba całkowita int A %d scanf("%d",&A); printf("Liczba A wynosi: %d",A); liczba rzeczywista float B %f scanf("%f",&B); printf("Liczba B wynosi: %f",B); ciąg znaków char *C %s scanf("%s",&C); printf("Łańcuch ma postać: %s",C); pojedynczy znak char D %c scanf("%c",&D); printf("Znak D to: %c",D); /* Program kalk1.c – prosty kalkulator, dane liczby całkowite*/ #include
61 Program kolo.c na pole i obwód koła/* program kolo.c oblicza obwod i pole koła o promieniu podanym */ #include
62 Instrukcje wejścia cin >> i wyjścia cout << w C++W języku C++ cin jest strumieniem wejściowym, a cout strumieniem wyjściowym. Do wstawienia danych do strumienia wyjściowego stosujemy operator <<, a do strumienia wejściowego operator >>. Wprowadzanie danych w języku C++ - polecenie cin z operatorem wejścia >>, czyli cin >> argumenty; np. cin >> a >> b; Wyprowadzanie danych – polecenie cout z operatorem wyjścia <<, czyli cout << argumenty; np. cout << " Wyniki: " << a << b << endl; Przykładowy program: // Program wewycpp.cpp #include
63 Ogniwo 4. Przechodzenie od teorii do praktyki: lekcja 2 – ok. 10 minUruchomienie programu TC, ustalenie środowiska (katalogi z danymi i wynikami) Uruchomienie okienka linii poleceń i przejście do katalogu roboczego Wprowadzanie programów w Turbo C i uruchamianie: edycja, kompilacja (Alt F9), korekta błędów (ewentualny Help), uruchamianie (Ctrl F9), oglądanie wyników (Alt F5). Wykorzystanie innych edytorów do wprowadzenia programów: Notatnik, Notepad, Dev V++. Kompilacja przy pomocy BCC32: BCC32 program.c Zasada wprowadzania programów: Wprowadzenie szkieletu programu: #include Int main() { } wprowadzanie treści programu w nawiasach main { } Wprowadzanie kolejnych linii programu i bieżąca kontrola – kompilacja i poprawa błędów oraz zapisywanie programu (Save)
64 Przykładowe programy / * Program daneos1.c - dane osobowe */#include
65 Prosty kalkulator – liczby rzeczywiste/* Program kalk2.c */ #include
66 Ogniwo 5 Nabywanie umiejętności: - lekcja 2 - 25 minWprowadzanie i uruchamianie oraz analiza kolejnych prostych programów oraz bardziej zawansowanych programów. Wprowadzanie praktyczne programów z nowymi pojęciami : typy danych, operatory, instrukcje wejścia i wyjścia.
67 Ogniwo 6. Utrwalenie wiadomości i umiejętności – pod koniec drugiej lekcji: 5 minPodstawowe typy danych: char, int, float, long double specyfikatory long, signed, unsigned, short, long. Zapis liczb dziesiętnych, ósemkowych, szesnastkowych, znaków, kody sterujące (\n, \t, \f, \a – BEL, \r, \0 – nul, \’ itd.) Operatory: arytmetyczne, zwiększania i zmniejszania, relacyjne : <, <=, >, >=, ==, !=, logiczne (!, && - and, || - lub), przypisania =, wieloznakowe operatory przypisania (a#=b; czyli a=a#b; np. a+=b; odpowiada a=a+b:), operator rozmiaru sizeof, operator konwersji (typ) wyrażenie, np. (float) (21/10); operator warunkowy wyr_warunkowe ? wyr_na_tak: wyr_na_nie (np. z = (a>b)? a:b; /* z=max(a,b) */ Instrukcje wejścia wyjścia: Wyświetlenie na ekranie: puchar(znak) – znak, puts(napis) - łańcuch znaków, printf(„łańcuch formatu”, argumenty); Wyprowadzanie wyników w C++: cout << lista, np. cout << „Wynik: „ << cout a << endl; Wprowadzanie danych: znak=getchar() – pojedynczy znak; gets(zmienna_łańcuchowa); - napis (do klawisza Enter), scanf(„łańcuch sterujący”, lista_danych) – uniwersalna funkcja do wprowadzania informacji wszelkiego typu. Wprowadzanie danych w C++: cin >> zmienna
68 Podsumowanie – wejście, wyjście, liczby, zmienne, wzorce konwersjiAby wczytać liczbę należy użyć funkcji scanf w postaci: scanf("wzorzec",&zmienna); Aby wypisać wczytaną w ten sposób liczbę należy użyć funkcji printf, która służy do wypisywania komunikatów. Postać funkcji: printf("Komunikat wzorzec",zmienna); W funkcji scanf zawsze przed nazwą zmiennej używamy znaku &, a nie robimy tego przy używaniu funkcji printf. Zmienna służy do przechowania danych, których wartość ustala się w trakcie działania programu i może być zmieniana. Każda zmienna musi być zadeklarowana przed jej użyciem jako zmienna odpowiedniego typu: int, float, char itp. Do wypisywania komunikatów służy funkcja printf, lub puts a do wczytywania zmiennych funkcja scanf. Do poprawnego użycia obu funkcji należy znać podstawowe wzorce konwersji: %d, %f, %s.
69 Ogniwo 7. Sprawdzenie osiągnięć: Pytania kontrolne:Wymień podstawowe typy danych w C Najważniejsze operatory. Priorytet operatorów arytmetycznych Najważniejsze funkcje do wprowadzania danych do programu i wyprowadzanie wyników Uniwersalne funkcje do wprowadzania i wyprowadzania wyników w C Funkcje wprowadzania i wyprowadzania wyników w C++ Jak wczytujemy liczbę przy pomocy scanf – znak &? Czy znak & występuje w funkcji printf? Podstawowe wzorce konwersji: %d, %f, %c, %s – do czego stosujemy?
70 Przykładowe programy do wprowadzania/* Obliczanie objetosci walca - zmienne - dane w programie p9.c */ #include
71 Pole koła – wprowadzenie promienia i formatowanie wydruku/* program polkola3.c */ /* dyrektywy załączajace tzw. nazwane pliki */ #include
72 Pole koła w języku C++. Funkcja// Polkola4.cpp w C++ #include
73 Banknoty do wydania – program change.c#include
74 Program z printf() – printf4.c/* Program printf4.c */ #include
75 Szablony programu dla ucznia – dane wpisane w #define/* Program Szablon1.c */ /* #include - włączenia tekstowe bibliotek */ #include
76 /* Program Szablon2.c */ /* ==== Funkcja główna * ======== *//* #include - włączenia tekstowe bibliotek */ #include
77 Przykład struktury programu z zastosowaniem wielu instrukcji podstawowych/* Program strukt.pr.c – Przykł. struktury programu */ /* Naglowek - komentarz wieloliniowy w C i C++ */ // jednolinowy w C++ /* Program Nazwa.c Autor: Nazwisko Imie. Data: Kompilator Turbo C 1.01 Uwagi: Struktura ogolna programu /* /* preprocesor: #include - wlaczenia tekstowe bibliotek i #define - stale makroinstrukcje */ #include
78 Szablon programu do obliczeń geodezyjnych/* zmienne globalne - stale, zmienne */ const double pi= ; const double rograd= , rostop= ; /* Ro[grad]=200/PI, Ro[stopn]=180/PO const char szkola[]="Sztygarka"; /* Przykladowa funkcja - deklaracja */ float suma1(float l1, float l2); /* ========== Funkcja glowna * ======== */ int main() { clrscr(); printf("Program: %s \n",PROGRAM); KRESKA2; puts(NAZWISKO); puts(KLASA); puts(SZKOLA); KRESKA; printf(" [grad]=%f[rad]",KATRAD(rograd)); /* -- dalszy kod programu, głównego */ KONIEC; getch(); return 0; } /* =========== Funkcje - definicje ======= */ float suma1(float l1, float l2) /* Definicja funkcji */ return(l1+l2); /* Schemat programu do obliczeń geodezyjnych */ /* Program Szablgeo.c */ /* preprocesor: #include - wlaczenia tekstowe bibliotek */ #include
79 /* Program daneuczn.c – dane ucznia */puts(NAZWISKO); puts(KLASA); puts(szkola); KRESKA; printf("\nPodaj swoj ulubiony przedmiot (jeden wyraz): "); gets(przedmiot); /* wprowadzenie imienia */ printf("Wprowadz swoj inicjal: "); c1=getchar(); printf("Podaj rok urodzenia: "); scanf("%d",&rok_urodz); /* wprowadzenie roku */ printf("Twoja srednia ocena "); scanf("%f",&ocena); /* wprowadzenie roku */ printf("Twoj inicjal: "); TAB; putchar(c1); NL; printf("\n %s ma %d lat.",NAZWISKO, (ROK-rok_urodz)); /* wyświetlenie imienia i lat */ printf("Srednia ocena z przedmiotu %s = %.1f ",przedmiot, ocena); KONIEC; getch(); return 0; } float suma_float(float l1, float l2) { return(l1+l2); /* Program Daneuczn.c */ /* preprocesor: #include - wlaczenia tekstowe bibliotek i #define - stale makroinstrukcje */ #include
80 Pole prostokąta - dane w programie, funkcja przed main()/* polepros2.c - z funkcja /* #include
81 Pole prostokąta - dane wprowadzone, funkcja na końcu/* ppros3.c - z funkcja */ #include
82 Pole prostokąta - wprowadzanie danych, funkcja* ppros4.c - z funkcja i wprowadzaniem danych */ #include
83 Wyświetlenie czasu C++ - program w Dev C++// Program czas.cpp w jezyku C++ - wyświetlenie czasu - komentarz w C++ #include
84 Stałe wyliczeniowe (enumeration constant)Stałe wyliczeniowe tworzą zbiór stałych o określonym zakresie wartości. Wyliczenie jest listą wartości całkowitych, np. enum boolean {NO, YES}; Pierwsza nazwa na liście wyliczenia ma wartość 0, następna 1 itd., chyba że nastąpi jawnie podana wartość. Przykłady: enum KOLOR {CZERWONY, NIEBIESKI, ZIELONY, BIAŁY, CZARNY} enum KOLOR {red=100, blue, green=500, white, black=700}; red przyjmie wartość 100, blue 101, green 500, white 501, black 700
85 Stałe symboliczne - makrodefinicjeStała symboliczna jest nazwą przedstawiającą inną stałą - numeryczną, znakową lub tekstową. Definicję stałej symbolicznej umożliwia instrukcja #define: #define NAZWA tekst gdzie NAZWA jest nazwą stałej symbolicznej, a tekst jest związanym z tą nazwą łańcuchem znaków Przykłady: Makrodefinicje proste: #define identyfikator
86 Makrodefinicje parametryczne#define identyfikator(idPar1, idPar2,...) ciąg_jedn_leksykalnych Np. #define ILORAZ(a,b) ((a)/(b)) //- makrodefinicja ILORAZ - parametry w nawiasach! #define SUMA(a,b) ((a)+(b)) W trakcie kompilacji nazwy stałych symbolicznych są zastąpione przez odpowiadające im łańcuchy znaków. Ułatwia to parametryzację programu, a także umożliwia zastępowanie często niewygodnych w pisaniu sekwencji programu, tworzenie makrodefinicji, tworzenie własnych dialektów języka, czy nawet języków bezkompilatorowych (na bazie kompilatora C).
87 /* Przykład zastosowana pseudoinstrukcji #define - Program p8.c */#include
88 Podsumowanie – liczby, zmienne, komunikatyAby wczytać liczbę należy użyć funkcji scanf w postaci: scanf("wzorzec",&zmienna); Aby wypisać wczytaną w ten sposób liczbę należy użyć funkcji printf, która służy do wypisywania komunikatów. Postać funkcji: printf("Komunikat wzorzec",zmienna); W funkcji scanf zawsze przed nazwą zmiennej używamy znaku &, a nie robimy tego przy używaniu funkcji printf. Zmienna służy do przechowania danych, których wartość ustala się w trakcie działania programu i może być zmieniana. Każda zmienna musi być zadeklarowana przed jej użyciem jako zmienna odpowiedniego typu: int, float, char itp. Do wypisywania komunikatów służy funkcja printf, lub puts a do wczytywania zmiennych funkcja scanf. Do poprawnego użycia obu funkcji należy znać podstawowe wzorce konwersji: %d, %f, %s.
89 Operacje na znakach i łańcuchach znakówTypy znakowe: - deklaracja char zmienna; pojedynczy znak: char znak; np. char zn1=‘a’; char litera; litera = ‘F’; łańcuch znaków (napis, słowo) char *napis; np. char *str1=„Programowanie”; char napis[n]; np. char linia[80]; gets(linia); char imie[20]; scanf("%s",imie); np.char napis[]="Tekst”, np. char pozdrowienie="Jak się masz” Wzorzec konwersji przy wyświetleniu lub wczytywaniu zmiennej typu char %c dla pojedynczego znaku (łańcucha jednoznakowego) np. char znak1; scanf("%c",&znak1); %s dla łańcucha dłuższego niż 1 znak np. char slowo2[20]; scanf("%s",slowo2);
90 /* Program znaki1.c */ #include
91 Przypisanie wartość zmiennej znakowej i napisomPrzypisać wartość zmiennej jednoznakowej możemy na kilka sposobów: w apostrofach: zmienna='a'; poprzez przypisanie kodu znaku: zmienna=97; poprzez wczytanie znaku z klawiatury funkcją scanf(): scanf("%c",&zmienna); Przypisanie wartości do zmiennej dla łańcucha znaków dłuższego niż jeden znak odbywa się podobnie jak w pierwszym przypadku, z tą jednak różnicą, że zamiast apostrofów ' należy używać cudzysłowia " char slowo3[]="Adam"; // definicja
92 Program, który podaje kod wciśniętego przez nas klawisza i znak kodu/* Program, kodkl1.c - podaje kod wciśniętego przez nas klawisza i znak kodu */: #include
93 Odczytanie długości łańcucha znaków – strlen(lancuch)/* dluglanc.c */ #include
94 Inne funkcje operujące na łańcuchach: strlwr, strupr, strcat, strrv, streset – z biblioteki string.hstrcat() - łączy dwa łańcuchy, strcmp() - porównuje dwa łańcuchy rozróżniając małe i duże litery, strlwr() i strupr() - zamienia w danym łańcuchu duże litery na małe i odwrotnie, strrev() - odwraca kolejność znaków w łańcuchu, strset() - wypełnia łańcuch danym znakiem. /* znaki5.c - operacje na tekstach */ #include
95 Podsumowanie – znaki, łańcuchy znakówZmienne liczbowe mogą zawierać się w pewnych zakresach, których nie można przekraczać. Deklaracja zmiennej znakowej: char znak; a zmiennej łańcuchowej: char *slowo; Wartość zmiennej znakowej można przypisać w programie poprzez umieszczenie znaku w apostrofach lub przez napisanie jego kodu. Wartość zmiennej łańcuchowej można przypisać w programie poprzez umieszczenie napisu w cudzysłowie. Zmienne znakowe i łańcuchowe można wczytywać z klawiatury używając funkcji scanf() i odpowiednich wzorców konwersji: %s dla ciągu znaków i %c dla pojedynczego znaku. Każdy znak posiada swój kod ASCII. Kod ASCII mają również znaki nie przedstawione na klawiaturze komputera. np. ß, ö. Łańcuch, który wygląda jak liczba nie jest liczbą. Istnieją funkcje, które potrafią przekonwertować łańcuch liczbowy do postaci liczby. Mając dany łańcuch, możemy odczytać dowolny jego znak używając nawiasów kwadratowych. Pierwszy wpisany znak ma numer 0, a nie 1. Każdy ciąg kończy znak '\0'. Długość łańcucha można ograniczyć przy deklaracji, np.: char slowo[10]; Łańcuchy można ze sobą porównywać, łączyć, odwracać w nich kolejność liter, zmieniać małe litery na duże i odwrotnie, a także przeszukiwać, kopiować na siebie itp. Nazwy funkcji, które to wykonują zawsze zaczynają się na 'str' (z angielskiego: string).
96 Zasięg zmiennej Zmienne globalne - obejmujące zasięgiem cały program – mogą być dostępne dla wszystkich funkcji programu Deklaruje się je przed wszystkimi funkcjami programu: Zmienne globalne, jeśli programista nie przypisze im innej wartości podczas definiowania, są inicjalizowane wartością 0. Zmienne lokalne – o zasięgu obejmującym pewien blok. Zmienne, które funkcja deklaruje do “własnych potrzeb” nazywamy zmiennymi lokalnymi. Nasuwa się pytanie: “czy będzie błędem nazwanie tą samą nazwą zmiennej globalnej i lokalnej?”. Otóż odpowiedź może być zaskakująca: nie. Natomiast w danej funkcji da się używać tylko jej zmiennej lokalnej. Tej konstrukcji należy, z wiadomych względów, unikać. int a=1; /* zmienna globalna */ int main() { int a=2; /* to już zmienna lokalna */ printf("%d", a); /* wypisze 2 */ }
97 Stałe symboliczne Stała symboliczna jest nazwą zastępującą ciąg znaków #define NAZWA tekst Np. #define PI #define MIEJSCOWOSC Sosnowiec #define WYNIK printf(("Pole=%d\f %”,pole1) #define WZOR1 (a*b)
98 Biblioteki, procedura, funkcjaBiblioteki (moduły) - zapisane są w nich różne funkcje i procedury do użycia w programie. Funkcja - jest to podobnie jak procedura, pewien wyraz, który nie dość że coś wykona to również zwróci nam rezultat tego co zrobił, przykładowymi funkcjami są: pierwiastkowanie, sinus, cosinus. Zwracaną wartością niekoniecznie musi być liczba może to być również inny rodzaj zmiennych.
99 Typy bool, char, string TYP LOGICZNY - bool- typ ten może przyjmować jedynie dwie wartości: true (prawda) – 1 lub false (fałsz) - 0 #include
100 Preprocesor, dyrektywy, funkcje biblioteczne CPreprocesor przetwarza wiersze programu rozpoczynające się znakiem #. Taki wiersz nazywamy dyrektywą preprocesora. Podstawową dyrektywą jest #include, umożliwiająca dołączenie do programu pliku o podanej nazwie. Ma 2 postacie: #include
101 Instrukcja warunkowa if... then... [else...]Pozwala na wykonanie lub zaniechanie wykonania pewnych czynności, w zależności od konkretnego warunku logicznego. Instrukcja ma następującą składnię: if (warunek) instrukcja; np. if (x>30) y=20; If (warunek) {instrukcja_1; instrukcja_2; … instrukcja_N;} np. if (min
102 Przykłady programów z if/* Program If1. c */; #include
103 if - operatory logiczne: && (and), || (or), ! (not)Mogą one przyjmować wartości true czyli 1 lub 0 czyli false Za ich pomocą możemy skonkretyzować nasz warunek. Np. if (warunek1) && (warunek2) instrukcja; Operator &&(koniunkcja) sprawia, że instrukcja zostanie wykonana tylko w przypadku gdy spełnione są oba warunki. Gdybyśmy zastąpili go operatorem || (alternatywa), to wystarczyłby tylko jeden spełniony. Drugi przypadek if (! Warunek) instrukcja; W tym przypadku instrukcja będzie wykonana jeśli warunek nie jest spełniony (ma wartość false). Do tego właśnie służy operator ! (czyli negacja).
104 /* program rowkwadr.cpp */#include
105 switch - instrukcja wyboruInstrukcja switch jest wykorzystywana kiedy zachodzi konieczność podjęcia kilku decyzji, gdy wykonanie różnych części programu jest uzależnione od stanu pewnej zmiennej. Podstawą podjęcia decyzji jest wyrażenie typu całkowitego, znakowego lub logicznego Instrukcja switch ma postać: switch (zmienna lub wyrażenie) { case wartosc_1: Instrukcje_1; break; // break nie musi być case wartosc_N: Instrukcje_N; break; default Instrukcje_domyslne; }
106 Instrukcja wyboru switch .. case – przykład programu// Program Miesiace.cpp - podaje nazwe miesiaca na podstawie jego numeru #include
107 Instrukcje iteracyjne Organizacja obliczeń cyklicznychInstrukcje iteracyjne służą do wielokrotnego wykonywania pewnych sekwencji instrukcji i zazwyczaj są one nazywane po prostu pętlami. Instrukcja while - dopóki Warunek wykonuj Instrukcję; Składnia: while (wyrazenie) instrukcja; Instrukcja do while – powtarzaj Instrukcję dopóki Warunek Składnia: do instrukcja while (wyrazenie); Instrukcja for: np. dla i od 1 do N - dla i=W1 do W2 wykonuj Instrukcję for (i=W1; i
108 Instrukcja while Instrukcja ma postać: while (warunek) instrukcja;Powoduje wykonywanie instrukcji tak długo, dopóki spełniony jest warunek Warunek jest najczęściej dowolnym wyrażeniem porównania, które powinno w wyniku dać wartość logiczną (true lub false). Można posłużyć się tutaj operatorami relacyjnymi: ==, !=, <, >, <=, >= Instrukcja wykonywana jest tak długo, dopóki warunek ma wartość true.
109 Przykład programu z while – suma 6 podanych liczb// Program Suma6.cpp; Oblicza sumę 6 podanych liczb #include
110 Program z do … while // Program ilosc.cpp wyznacza długość ciągu liczb zakończonych 0 #include
111 Instrukcja for Instrukcja jest wygodna, gdy z góry można określić liczbę powtórzeń. Postać instrukcji: Dla zmienna=wart_pocz do wart_konc do instrukcja; W zapisie w C najczęściej for (wart_pocz; zmienna
112 Programy z for /* Program for1.cpp Wydruk cyfr od 1 do 5 */#include