ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory
Transkrypt
ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory
1 Metodyki i techniki programowania 1 ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory relacyjne i logiczne, instrukcja warunkowa if 1. ALGORYTM Algorytm jest przepisem opisujcym krok po kroku rozwi zanie problemu lub osignicie jakiego celu. Przed napisaniem programu warto stworzy algorytm. S 4 sposoby jego budowania: - słowny, - lista kroków, - schemat blokowy, - drzewo. Przykład: Napisz algorytm obliczajcy warto funkcji f ( x) = x x przy załoeniu, e dla x = 0, f(x) = 0 . Poniej zostanie utworzony algorytm 4 sposobami. SŁOWNY a. dla liczb ujemnych |x| = -x, a wic f ( x) = x = −1 −x b. dla liczb dodatnich |x| = x, a wic f ( x) = x =1 x c. jeli x = 0, to z podanej wyej definicji wynika, e f(x) = 0. W matematyce opis słowny przedstawiamy nastpujco: mgr in . Adam Id kowski Metodyki i techniki programowania 1 LISTA KROKÓW Dane: Dowolna liczba rzeczywista x. Wynik: Warto funkcji f(x) Krok 1. Wczytaj warto danej x. Krok 2. Jeli x > 0, to f(x)=1. Zako cz algorytm. Krok 3. Jeli x = 0, to f(x)=0. Zako cz algorytm. Krok 4. Jeli x < 0, to f(x)=-1. Zako cz algorytm. SCHEMAT BLOKOWY mgr in . Adam Id kowski 2 3 Metodyki i techniki programowania 1 DRZEWO 2. OPERATORY RELACYJNE W JZYKU C Posługujc si operatorami relacyjnymi mona tworzy wyraenia relacyjne: == != < > <= >= mgr in . Adam Id kowski równe róne mniejsze wiksze mniejsze lub równe wiksze lub równe Metodyki i techniki programowania 1 4 np.: x < y, jeli znane s wartoci x i y to wyraenie takie moe by logicznie prawdziwe (1) lub fałszywe (0). 3. INSTRUKCJA WARUNKOWA INSTRUKCJA WARUNKOWA if if ( wyraenie relacyjne) instrukcja_1 ; else instrukcja_2 ; − instrukcja warunkowa if sprawdza czy wyraenie jest logicznie prawdziwe i wtedy wykonuje si instrukcja_1, inaczej (else) wykonuje si instrukcja_2 (patrz rys.1.) − cz od słowa else mo na pomin , a wtedy gdy wyra enie jest prawdziwe instrukcja_1 jest wykonywana, jeli jest fałszywe - nie jest wykonywana Rys.1. Działanie instrukcji if. Oczywicie zamiast jednej instrukcji mo e by wykonywany zestaw instrukcji. Wtedy grupujemy je w jeden blok umieszczajc je w nawiasach logicznych { }. Działanie jest podobne. if ( wyraenie relacyjne ) { instrukcja_1a ; instrukcja_1b ; ... } else { instrukcja_2a ; instrukcja_2b ; ... } mgr in . Adam Id kowski 5 Metodyki i techniki programowania 1 4. OPERATORY LOGICZNE Jeli zachodzi potrzeba spełnienia kilku wyra e operatorów logicznych: && || ! relacyjnych na raz u ywa si koniunkcja ( i ) alternatywa ( lub ) negacja (nie) a b a||b a&&b !a 0 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 0 Przy słowie kluczowym if moe znajdowa si dowolnie skomplikowane wyraenie logiczne np.: if ((x<c) && (y>d)) { blok instrukcji ; } Tylko wtedy blok instrukcji zostanie wykonany jeli x jest mniejsze od c i y jest wi ksze od d – czyli gdy wystpi logiczna prawda (1). KONSTRUKCJA else-if Moliwe jest zagniedanie if .Przykładowa konstrukcja podana jest poniej. if ( wyraenie_1 ) { blok instrukcji 1; } else { if ( wyraenie_2 ) { blok instrukcji 2; } else { blok instrukcji 3; } } mgr in . Adam Id kowski Metodyki i techniki programowania 1 PRZYKŁAD 1. Zgadywanie liczby #include <stdio.h> #include <conio.h> void main(void) { int a=6; int liczba; printf(”Program zgadnij liczbe\n”) printf(”Podaj liczbe od 1 do 10”); scanf(“%d”,&liczba; if (liczba==a) { printf(”Gratulacje zgadles!”); } else { printf(”Przykro mi, nie zgadles”); } getch(); } PRZYKŁAD 2. Zgadywanie liczby, wersja bogatsza z zagniedeniem. #include <stdio.h> #include <conio.h> void main(void) { int a=6; int liczba; printf(”Program zgadnij liczbe\n”); printf(”Podaj liczbe od 1 do 10”); scanf(“%d”,&liczba); if (liczba==a) { printf(”Gratulacje zgadles!”); } else { if((liczba<1)||(liczba>10)) { printf(”Podana liczba musi być od 1 do 10!)”; } else { printf(”Przykro mi, nie zgadles”); } } getch(); } mgr in . Adam Id kowski 6 Metodyki i techniki programowania 1 7 ZADANIA 1. Napisać program sprawdzający czy podawana liczba x naleŜy do przedziału (a,b). Jeśli liczba naleŜy do przedziału naleŜy wyświetlić komunikat_1, jeśli nie naleŜy do przedziału – komunikat_2. Przed pisaniem spróbuj najpierw narysować algorytm. 2. Rok w kalendarzu gregoriańskim, obowiązującym w większości krajów na świecie trwa 365 dni, a w latach przestępnych 366 dni. Lata przestępne to takie, których liczba jest podzielna przez 4, oprócz podzielnych przez 100, z tym, Ŝe lata podzielne przez 400 są przestępne. Napisz program który po podaniu roku będzie informował czy rok ten jest przestępny czy nie. Przed pisaniem spróbuj najpierw narysować algorytm. 3. Numeracja lat kalendarza perskiego odbywa się od 622 r.n.e. Zatem kaŜdy rok nosi numer o 621 mniejszy niŜ rok gregoriański. Obecnie w kalendarzu perskim stosuje się reguła, Ŝe na kaŜde 33 lata występuje 8 lat przestępnych. Są to te lata, dla których reszta z dzielenia numeru roku przez 33 wynosi 1, 5, 9, 13, 17, 22, 26 lub 30. Napisz program, który po podaniu roku gregoriańskiego zamieni go na rok perski i poda czy jest przestępny czy nie. Przed pisaniem spróbuj najpierw narysować algorytm. 4. Napisz program który sprawdzi czy podawana liczba typu integer jest liczbą pierwszą. Przed pisaniem spróbuj najpierw narysować algorytm. 5. Napisać program sortujący 3 podawane liczby w kolejności od największej do najmniejszej. Przed pisaniem spróbuj najpierw narysować algorytm. mgr in . Adam Id kowski