====== 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?500|}}
**Przykład**
#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?500|}}
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?500|}}
#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
** Dodatkowe ćwiczenia **
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?500|}}
**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
===== Zadanie - Procent składany =====
Napisz program, który wyznacza wartość zgromadzonego kapitału w kolejnych latach inwestycji zgodnie z zasadą procentu składanego.
Program wczytuje następujące dane wejściowe:
* wartość początkowa kapitału $V_0$ w momencie rozpoczęcia inwestycji w PLN
* średnioroczne oprocentowanie $R$ (wartość rzeczywista podana w procentach)
* ilość lat inwestycji (wartość całkowita dodatnia)
Zakładamy, że odsetki naliczane na koniec roku są całkowicie reinwestowane i powiększają kapitał oprocentowany w kolejnych latach. Wartość kapitału $V_k$ w roku $k$ wynosi więc:
$$ V_k = V_{k-1} + R\cdot V_{k-1}$$
gdzie $R$ jest stopą rocznego oprocentowania.
Dla podanych wartości wejściowych program wypisuje w kolejnych liniach 3 wartości:
* numer kolejnego roku
* aktualną wartość kapitału na koniec roku
* całkowity zysk względem kapitału początkowego $\frac{V_k-V_0}{V_0}$ w procentach
Przykład działania programu:
kapital poczatkowy: 100
oprocentowanie roczne: 5.1
ile lat: 10
1 105.10 5.1%
2 110.46 10.5%
3 116.09 16.1%
4 122.01 22.0%
5 128.24 28.2%
6 134.78 34.8%
7 141.65 41.7%
8 148.87 48.9%
9 156.47 56.5%
10 164.45 64.4%
Rozwiązanie w postaci pliku zawierającego program w języku C umieść [[https://moodle.umk.pl/WFAIIS/mod/assign/view.php?id=6147|tutaj]]