Instrukcje sterujące - warunki i pętle
Warunek if
- dodatnia.c
#include <stdio.h> /* 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
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
- parzysta.c
#include <stdio.h> /* 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ę sqrt() z biblioteki 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
Przykład:
- sekwencja.c
#include <stdio.h> /* 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
, ic
wypisze sekwencję liczb oda
dob
z krokiemc
. Zabezpiecz program przed możliwością wprowadzenia takich danych wejściowych, które mogłyby spowodować nieskończone wykonywanie się programu (np. krokc=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.
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ść tutaj