background image

Laboratorium nr 3 

1/8 

 

1) 

Instrukcje warunkowe. 

 

Instrukcje  warunkowe  pozwalają  zdefiniować  warianty  wykonywania  określonego 

bloku  instrukcji  programu.  W  języku  C  wyróżniamy  kilka  rodzajów  instrukcji  warunkowych: 

IF, IF-ELSE, IF-ELSE-IF, SWITCH (nazywana też instrukcją wyboru). 

 

Instrukcja warunkowa „IF”

 

if(warunek) 

instrukcja; 
... 
... 


 

Instrukcja warunkowa „IF-ELSE”

 

if(warunek) 

instrukcja1; 
... 
... 

} else 

instrukcja2; 

 

... 

 

... 


 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
 
void main() 

int a; 
 
printf("Podaj liczbe a: "); 
scanf("%d",&a); 
 
 

Język C 

Temat: Instrukcje warunkowe, pętle. 

 

Instrukcja 

laboratoryjna 

Przygotował: mgr inż. Maciej Lasota 

background image

Laboratorium nr 3 

2/8 

 

if (a < 0) 

printf("Liczba a jest liczba ujemna!\n"); 
exit(0); 

 

 
if ( a > 0) 

printf("Liczba a jest liczba dodatnia!\n"); 
exit(0); 


printf("Liczba a jest rowna 0 lub nie podales liczby\n"); 


 

Instrukcja warunkowa „IF-ELSE-IF”

 

if(warunek1) 

instrukcja1; 
... 
... 

} else if(warunek2) 

 

instrukcja2; 

 

... 

 

... 

} else if(warunek3) 

instrukcja3; 
... 
... 


 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
 
int main() 

char c; 
 
printf("Podaj litere A,B lub C: "); 
c = getchar(); 

 

if (c == 'a') 

printf("A\n"); 

} else if (c == 'b') 

printf("B\n"); 

 

background image

Laboratorium nr 3 

3/8 

 

} else if (c == 'c') 

printf("C\n"); 

} else 

printf("Podales zla litere\n"); 


return (0); 


 

Instrukcja wyboru „SWITCH”

 

switch(wyrażenie) 

case stala1: 

instrukcja; 
... 
break; 

case stala2: 

instrukcja; 
... 
break; 

... 
... 
... 
 
default: 

instrukcja; 
... 
break; 


 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
 
int main() 

char c; 
 
printf("Podaj znak: "); 
 
switch(c = getchar()) 

case 'a': 

printf("A\n"); 
break; 

case 'b': 

printf("B\n"); 
break; 

 

background image

Laboratorium nr 3 

4/8 

 

default: 

printf("Blad\n"); 
break; 


return (0); 


 

2) 

Instrukcje pętli. 

 

Instrukcje  pętli  umożliwiają  powtarzanie  określonego  bloku  instrukcji  dowolną  ilość 

razy lub do momentu wystąpienia (spełnienia) określonego warunku. 

 

Instrukcja pętli „WHILE”

 

while(warunek) 

instrukcja; 


 

Instrukcja pętli „DO-WHILE”

 

do 

instrukcja; 
... 
... 


while(warunek); 
 

 

Instrukcja pętli „FOR”

 

for (wyrażenie początkowe; warunek; inkrementacja) 

instrukcja; 
... 
... 


 

 

 

 

 

 

background image

Laboratorium nr 3 

5/8 

 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
 
int main() 

int licznik=1; 

 

while(licznik <= 10) 

printf("Licznik wynosi: %d\n",licznik); 
licznik++;  

 

//licznik=licznik+1 

sleep(2);   

 

//sleep przyjmuje jako parametr  
//czas w sekundach 

 

licznik=1; 

 

while(1) 

printf("Licznik wynosi: %d\n",licznik); 
 
if (licznik == 10) 

break; 

 

licznik++;  

 

//licznik=licznik+1 

sleep(2);   

 

//sleep przyjmuje jako parametr  
//czas w sekundach 

 
return (0); 

 

 

 

 

 

 

 

 

 

 

 

 

background image

Laboratorium nr 3 

6/8 

 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 
 
int main() 

int licznik=1; 
int i; 

 

while(licznik <= 10) 

printf("Licznik wynosi: %d\n",licznik); 
licznik++;  

//licznik=licznik+1 

sleep(2);   

//sleep przyjmuje jako parametr  
//czas w sekundach 

 

for(i=1; i<=10; i++) 

printf("Licznik wynosi: %d\n",i); 
sleep(2);   

//sleep przyjmuje jako parametr 
//czas w sekundach 

 

 

return(0); 


 

3) 

Funkcje matematyczne. 

 

Standardowa  biblioteka  języka  C,  zawiera  szereg  gotowych  funkcji  służących  do 

wykonywania obliczeń matematycznych. Plik nagłówkowy, w którym znajdują się deklaracje 

funkcji  oraz  makr  matematycznych  to  <math.h>.  Funkcje  matematyczne  dostępne  w 

standardowej bibliotece języka C: 

 

sin(x);  

 

sinus x 

cos(x);  

 

cosinus x 

tan(x);  

 

tangens x 

asin(x);    

arcus sinus x 

acos(x);    

arcus cos x 

atan(x);    

arcus tangens x 

atan2(x,y);  

arcus tangens x/y 

sinh(x);    

sinus hiperboliczny 

cos(x);  

 

cosinus hiperboliczny 

tanh(x);    

tangens hiperboliczny 

 

 

background image

Laboratorium nr 3 

7/8 

 

exp(x);  

 

funkcja wykładnicza e^x 

log(x);  

 

logarytm naturalny 

log10(x);   

logarytm o podstawie 10 

 

pow(x,y);   

podniesienie x^y 

sqrt(x);    

pierwiastek z x, x>=0 

 

ceil(x);    

najmniejsza liczba całkowita 

nie mniejsza niż x 

floor(x,y);  

największa liczba całkowita 

nie większa niż x 

 

fabs(x);    

wartość bezwzględna z |x| 

 

Aby  skompilować  plik  źródłowy,  w  którym  wykorzystujemy  funkcje  matematyczne 

należy do kompilatora GCC dodać przełącznik „- lm” np. gcc -lm -o test test.c 

 

4) 

Generator liczba pseudolosowych. 

 

Generator liczb pseudolosowych (Pseudo-Random Number Generator, lub PRNG

to  program  lub  biblioteka,  która  na  podstawie  niewielkiej  ilości  informacji  (ziarno,  zarodek, 

ang.  seed)  generuje  deterministycznie  ciąg  bitów,  który  pod  pewnymi  względami  jest 

nieodróżnialny  od  ciągu  uzyskanego  z  prawdziwie  losowego  źródła.  Generatory  liczb 

pseudolosowych nie generują ciągów prawdziwie losowych – generator inicjowany ziarnem, 

które może przyjąć k różnych  wartości, jest w stanie  wyprodukować co  najwyżej k różnych 

ciągów liczb. 

 

Przykłady bibliotek napisanych w C/C++ do generowania liczb pseudolosowych: 

 

 Hasard (C)   

http://haypo.hachoir.org/trac/wiki/hasard 

 Boost (C++)  

http://www.boost.org/ 

 GSL (C)  

 

http://www.gnu.org/software/gsl/ 

 

Standardowa  biblioteka  języka  C  w  pliku  nagłówkowym  <stdlib.h>  posiada 

zadeklarowane dwie funkcje służące do generowania liczb pseudolosowych. 

 

srand(seed); 

rand(void); 

 

background image

Laboratorium nr 3 

8/8 

 

Funkcja  srand()  jako  parametr  przyjmuje  seed,  czyli  tzw.  ziarno/zarodek  jest  to 

zmienna  liczba  (unsigned  int)  na  podstawie,  której  inicjowany  jest  generator  liczb  dla 

nowego ciągu liczb pseudolosowych. 

 

Funkcja  rand()  służy  do  losowania  liczb  pseudolosowych,  zwraca  ona  liczbę 

całkowitą  (int)  z  przedziału  między  0  a  stałą  RAND_MAX.  RAND_MAX  jest  to  stała 

zadeklarowana w pliku nagłówkowym <stdlib.h> wynosi ona co najmniej 32767. 

 

Przykład: 

 

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 
 
int main() 

int i,c; 
/* Uruchamiamy generator liczb pseudolosowych jako 

        parametr podajemy funkcje time(NULL) zwraca ona czas  
        w sekundach liczony do 1970 roku */ 
 

srand(time(NULL)); 

 

for(i=0; i<=9; i++) 

c = (rand() % 25) + 65; 

//losowanie liczb 
//z przedzialu 65 – 90 
// czyli kody ASCII A-Z 
 

printf("Wylosowana liczba nr [%d]: %d  

odpowiada jej znak ASCII %c\n",i,c,c); 


return (0); 


 

Aby  wygenerować  liczbę  z  dowolnego  przedziału  wynik  funkcji  rand()  poddajemy 

operacji modulo np. rand() % 10 - losuje liczby z przedziału od 0 do 9