Spis treści

Instrukcje sterujące - warunki i pętle

Warunek if

Przykład

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:

Ć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

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

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

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:

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:

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