~~NOCACHE~~ ~~REVEAL theme=simple&disableLayout=0&transition=none&controls=1&show_progress_bar=1&build_all_lists=0&show_image_borders=0&horizontal_slide_level=2&enlarge_vertical_slide_headers=0&show_slide_details=1&open_in_new_window=1&size=1024x768~~ ====== Instrukcje sterujące - warunki i pętle ====== ===== ===== * Warunki: * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#if|if]] * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#switch|switch]] - lista wyboru * Pętle: * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#while|while]] * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#for|for]] * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#do..while|do while]] * Skok * [[http://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#goto|goto]] - NAJLEPIEJ NIE UŻYWAĆ!!!! * [[https://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#continue|continue]] - kontynuacja pętli * [[https://pl.wikibooks.org/wiki/C/Instrukcje_steruj%C4%85ce#break|break]] - przerwanie pętli lub instrukcji ''switch'' ===== Warunek if ===== {{zajecia:pp1_2021_1:if3.png?800|}} ===== ===== #include /* program sprawdza czy podana liczba jest dodatnia */ int main() { float x; printf("Podaj liczbe: "); scanf("%f", &x); if( x > 0 ) printf("Liczba %f jest wieksza od zera\n", x); return 0; } ===== Operatory relacji ===== {{zajecia:pp1_2021_1:operatory_relacji.png?800|}} ===== ===== Operator ''='' to operator przypisania wartości do zmiennej a operator ''=='' to operator sprawdzający, czy wartości są równe. int x = 0; if ( x = 1 ) printf("Czy to jest błąd?"); ===== Warunek if else ===== {{zajecia:pp1_2021_1:if_else3.png?800|}} ===== ===== #include /* program sprawdza czy podana liczba jest parzysta */ int main() { int x; printf("Podaj liczbe calkowita: "); scanf("%d", &x); if( x % 2 == 0 ) { printf("Liczba %d jest parzysta\n", x); } else { printf("Liczba %d jest nieparzysta\n", x); } return 0; } ===== ===== W języku C nie ma typu logicznego. \\ Wartość całkowita 0 jest fałszem a wartość całkowita różna od 0 - prawdą. if ( 1 ) printf("Prawda czy fałsz?"); ==== Dodatkowe ćwiczenia ==== Rozszerz działanie programu z ostatniego ćwiczenia (sprawdzającego, czy liczba jest parzysta) o następujące operacje: * wyświetl informację, czy podana liczba jest podzielna przez 3, * wyświetl informację o tym, czy ostatnią cyfrą podanej liczby jest 1, * jeśli liczba jest większa niż 100 to wyświetl ostanie 2 cyfry liczby ==== Ćwiczenie - miejsca zerowe paraboli ==== Napisz program do wyznaczania miejsc zerowych równania kwadratowego $$ y = a x^2 + bx +c$$ **Dane:** trzy liczby rzeczywiste określające parabolę: $a$, $b$, $c$ \\ **Wynik:** informacja o ilości miejsc zerowych (lub ich braku) oraz wartości miejsc zerowych $x_1$, $x_2$\\ ** Uwaga ** Do obliczania pierwiastka kwadratowego wykorzystaj funkcję [[https://pl.wikibooks.org/wiki/C/sqrt|sqrt()]] z biblioteki [[https://pl.wikibooks.org/wiki/C/Biblioteka_standardowa/Indeks_tematyczny#math.h|math.h]]. Kompilując program korzystający z funkcji matematycznych dla kompilatora GCC należy dodać opcję ''**-lm**'', np.: cc -lm pierwiastek.c -o pierwiastek ===== ===== **Przykład:** 1 2 3 Brak miejsc zerowych 1 -4 -4 Jedno miejsce zerowe 2.000000 1 0 -4 Dwa miejsca zerowe -2.000000 i 2.000000 ==== Ćwiczenie ==== Do programu obliczającego pierwiastki równania kwadratowego dodaj instrukcje weryfikujące, czy rzeczywiście $f(x_1)=0$ oraz $f(x_2)=0$. Sprawdź, czy program poprawnie wyznacza miejsca zerowe równania $y = x^2 - 6.433 x + 0.009474$ oraz $y = 0.2 x^2 - 56 x + 1$. Jeśli występują niedokładności to popraw program w taki sposób aby je zniwelować. ===== Pętla while ===== {{zajecia:pp1_2021_1:while3.png?800|}} ===== ===== **Przykład:** #include /* program wyswietla sekwencje liczb calkowitych od 1 do podanej przez uzytkownika wartosci */ int main() { int liczba; int i = 0; printf("Podaj liczbe: "); scanf("%d", &liczba); while(i <= liczba) { printf("%d\n",i); i = i + 1; } return 0; } ===== Ćwiczenie - Sumowanie liczb ===== Napisz program, który wczytuje kolejno liczby rzeczywiste aż do momentu gdy użytkownik poda wartość 0, po czym wyświetla sumę wczytanych liczb. **Dane:** ciąg liczb rzeczywistych zakończonych wartością 0 \\ **Wynik:** suma podanych liczb\\ **Przykład:** Wprowadz liczby. Wartosc 0 konczy program. 1 2 3 0 suma 6.000000 Wprowadz liczby. Wartosc 0 konczy program. 5 3.1 -2.5 0 suma 5.600000 ===== Dodatkowe ćwiczenia ===== - napisz program, który dla podanych 3 liczb rzeczywistych ''a'', ''b'', i ''c'' wypisze sekwencję liczb od ''a'' do ''b'' z krokiem ''c''. Zabezpiecz program przed możliwością wprowadzenia takich danych wejściowych, które mogłyby spowodować nieskończone wykonywanie się programu (np. krok ''c=0''). - wyświetl tablicę znaków ASCII poczynając od znaku SPACE (32) do znaku DEL (127) wraz z odpowiednimi wartościami liczbowymi w systemie dziesiętnym, szesnastkowym i ósemkowym. - Napisz program wyświetlający figury geometryczne w trybie tekstowym, wypełnione lub puste. Dla podanej wartości całkowitej program wysiwietla: * kwadrat o zadanej długości boku * trójkąt prostokątny równoramienny o zadanej długości przyprostokątnych * okrąg o zadanym promieniu - Napisz program, który dla podanej podstawy i wykładnika oblicza potęgę. Dla uproszczenia przyjmujemy, że wykładnik jest liczbą całkowitą. - Napisz program wyświetlający wartość silni z podanej przez użytkownika liczby całkowitej. - Napisz program wyświetlający tabliczkę mnożenia, której rozmiar ustalany jest przez użytkownika. {{page>.:zadania:03_zad_procent_skladany&nofooter}}