Jezyk C cz 2

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

8

Język C – część 2

Podejmowanie decyzji w programie

if … else

Instrukcja warunkowa umożliwia wykonanie pewnej instrukcji w zależności od wartości
wyrażenia. Wszystkie wartości różne od 0, są w języku C traktowane jako prawda,
równe 0, jako fałsz. Wyrażenia logiczne są liczone tylko do momentu, w którym można
określid jego wartośd.

if (wyrażenie) instrukcja;

lub

if (wyrażenie)
{
instrukcja1;
}
else
{
instrukcja2;
}

W pierwszym przypadku instrukcja wykonuje się, jeśli wartośd wyrażenia jest różna
od 0. W drugim wykonuje się jedna z dwóch podanych instrukcji (nigdy obie), pierwsza
– gdy wartośd wyrażenia jest różna od 0, druga – gdy wartośd wyrażenia jest równa 0.

switch

Instrukcja switch służy do wybierania jednego przypadku z wielu. Instrukcja case
określa punkt wejścia do ciągu następnych instrukcji. Program wykonuje się od
instrukcji po tym case, dla którego wartośd wyrażenia stałego jest równa wartości
wyrażenia w instrukcji switch. Chcąc wyjśd z instrukcji switch należy użyd rozkazu
break. Instrukcja default określa punkt wejścia w przypadku, gdy wyrażenie nie
zostało dopasowane do żadnego wyrażenia stałego.

switch (wyrażenie) {
case przypadek1 : instrukcje1;
case przypadek2 : instrukcje2;
...
default : instrukcje;
}

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

9

Przykład 4

/* Program oblicza pierwiastki rzeczywiste trójmianu
kwadratowego */

#include<stdio.h>
#include<math.h>

int main()
{

float a, b, c, delta, x1, x2;

printf("Podaj współczynniki trójmianu\n");

printf("a = ");

scanf("%f", &a);

printf("b = ");

scanf("%f", &b);

printf("c = ");

scanf("%f", &c);

delta = b * b - 4.0 * a * c;

if (delta >= 0.0)

{

x1 = (-b - sqrt(delta))/(2.0 * a);

x2 = (-b + sqrt(delta))/(2.0 * a);

printf("Pierwiastkami są liczby %.2f, %.2f\n", x1, x2);

}

else

printf("Trójmian nie ma pierwiastków rzeczywistych\n");

return 0;

}

Przykład 5

/* Program wyświetla słowną reprezentację oceny */

#include<stdio.h>

int main()
{

int ocena;

printf("Podaj ocenę (1 do 6)\n");

printf("ocena = ");

scanf("%d", &ocena);

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

10

switch(ocena) {

case 6: printf("celujący\n");

break;

case 5: printf("bardzo dobry\n");

break;

case 4: printf("dobry\n");

break;

case 3: printf("dostateczny\n");

break;

case 2: printf("mierny\n");

break;

case 1: printf("niedostateczny\n");

break;

default: printf("błąd danych\n");

}

return 0;

}

ZADANIE 4. Przekształd przykład 4 tak by w przypadku, gdy delta = 0 program liczył
i wyświetlał tylko jeden pierwiastek równania

ZADANIE 5. Przekształd przykład 5 tak by użytkownik miał możliwośd wprowadzenia
imienia ucznia i ocen z trzech jego przedmiotów. Następnie program liczy średnią
z ocen ucznia, zaokrągla do wartości całkowitej a na koocu wyświetla słowną
reprezentację oceny

ZADANIE 6. Uporządkuj trzy wczytane od najmniejszej do największej

ZADANIE 7. Sprawdź, czy dana liczba całkowita jest parzysta

ZADANIE 8. Sprawdź, czy w ciągu 3 liczb występują liczby ujemne

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

11

Obliczenia cykliczne

while

Pętla while jest wykonywana tak długo aż wartośd wyrażenia jest prawdą
(różne od 0). Warunek jest sprawdzany przed wejściem do pętli, stąd instrukcja;
może nie zostad nigdy wykonana, jeżeli przy pierwszym sprawdzeniu wartośd
wyrażenia jest równa 0.

while (wyrażenie) instrukcja;


do … while

Pętla do … while różni się w działaniu od pętli while jedynie tym, że najpierw
jest wykonywana instrukcja;, a następnie sprawdzana wartośd wyrażenia. W pętli
tej, instrukcja; zawsze wykona się przynajmniej raz.

do {
instrukcja;
} while (wyrażenie);

Przykład 6

/* Program oblicza silnię podanej liczby */

#include<stdio.h>

int main()
{
int liczba, silnia, i;
printf("Proszę podać l. nat.: ");
printf("liczba = ");
scanf("%d", &liczba);
i = 1;
silnia = 1;

while (i < liczba)
{

i++;

silnia *= i;

}
printf("Silnia liczby: %d, to: %d\n", liczba, silnia);

return 0;
}

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

12

Przykład 7

/* Program oblicza średnią podanych liczb różnych od zera */

#include<stdio.h>

int main()
{
float suma, a;
int i;

printf("Podaj liczby, 0 - koniec!\n");

suma = 0.0;
i = 0;

do {

printf("a = ");

scanf("%f", &a);

if(a) {

suma += a;

i++;

}

}
while (a);
printf("Średnia: %.2f\n", suma/i);

return 0;
}

for

Wszystkie wyrażenia są opcjonalne. instr_0 jest wykonana przed wejściem do pętli
(tylko raz!). Następnie oblicza się warunek i sprawdza czy jest on różny od 0. Jeśli tak,
wykonywana jest instrukcja i instr_krok. Następnie sprawdzana jest wartośd
warunku itd. Pętla jest wykonywana do momentu, gdy warunek będzie równy 0.
Instrukcja for(;;) instrukcja;, jest to bezwarunkowa pętla nieskooczona.
Instrukcja w pętli for może nie wykonad się ani razu, jeżeli warunek będzie od
razu równy 0. Pętla for może byd pętlą nieskooczoną, jeżeli warunek nigdy nie
przyjmie wartości 0.

for (instr_0; warunek; instr_krok) instrukcja;

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

13

Przykład 8

/* Program oblicza silnię podanej liczby */

#include<stdio.h>

int main()
{
int liczba, silnia, i;
printf("Proszę podać l. nat.: ");
printf("liczba = ");
scanf("%d", &liczba);
silnia = 1;

for(i = 2; i <= liczba; i++) silnia *= i;
printf("Silnia liczby: %d, to: %d\n", liczba, silnia);

return 0;
}

break i continue

Instrukcja break pozwala na opuszczenie aktualnie wykonywanej pętli for, while
oraz do i przejście do instrukcji znajdującej się bezpośrednio po zakooczonej pętli.

Instrukcja continue powoduje zakooczenie bieżącej iteracji aktualnie wykonywanej
pętli for, while oraz do. Dla instrukcji for jest obliczane wyrażenie, którego
wartośd decyduje o wykonaniu następnej iteracji. Natomiast dla instrukcji while oraz
do jest obliczana wartośd wyrażenia sterującego pętlą.

Przykład 9

/* break i continue */

#include<stdio.h>

int main()
{
int liczba, i;
printf("Podaj liczbę od 0 do 10: ");
printf("liczba = ");
scanf("%d", &liczba);

background image

Język C, © Daniel Pociecha, danpoc@agh.edu.pl

14

for(i = 0; i <= 10; i++)
{

if(i == liczba) break;

/* if(i == liczba) continue; */

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

}

return 0;
}

ZADANIE 9. Wyprowadź kwadraty i sześciany liczb od jednego do stu

ZADANIE 10. Znajdź największy podzielnik liczby wprowadzonej z klawiatury

ZADANIE 11. Znajdź wszystkie liczby, będące podzielnikami liczby wprowadzonej
z klawiatury

ZADANIE 12. Wyznacz NWD (Największy Wspólny Dzielnik) liczb a i b –
wprowadzonych z klawiatury – wykorzystując algorytm Euklidesa. Zasada działania
algorytmu jest następująca. Dopóki a i b są różne od siebie, od większej z liczb należy
odjąd mniejszą, i tak do momentu aż a i b będą sobie równe.

ZADANIE 13. Wyprowadź na ekran monitora wszystkie cyfry danej liczby






Wyszukiwarka

Podobne podstrony:
Wyklad Jezyk C cz 1 Wyklad Jezyk C cz 1
Wyklad Jezyk C cz 2 Wyklad Jezyk C cz 2
jeżyk cz TR63FC7CGYRVEOFBHCH5BOV7TZ6CXXUG6JREQAA
Jezyk C cz 1
Jezyk C cz 3
jezyk C skrypt cz 1
Anglistyka 2 rok Egzamin z przedmiotu Język polski jako narzędzie pracy tłumacza z dr M Kresą cz 1
Koncepcja bohatera III cz Dziadów dlaczego ponosi klęskę, SZKOŁA, język polski, romantyzm
Prezenterzy sportowi i piękny język polski cz 2
Pisarze baroku i oświecenia w trosce o dobro kraju+tryumf cz, Szkoła, Język polski, Wypracowania
Cz 1 Język Japoński Część I (słownictwo)
sekret alchemika Sędziwoja cz. 01, STUDIA JEZYK POLSKI, Współczesna proza polska
Ocena postawy społeczeństwa polskiego w III cz Dziadów, SZKOŁA, język polski, romantyzm
Io 5 Język UML, cz I
sekret alchemika Sędziwoja cz. 04, STUDIA JEZYK POLSKI, Współczesna proza polska
sekret alchemika Sędziwoja cz. 02, STUDIA JEZYK POLSKI, Współczesna proza polska
Cz 1 Jezyk Japonski Czesc I id Nieznany

więcej podobnych podstron