ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory

Transkrypt

ZAJ CIA 4. Podstawowe informacje o algorytmie. Operatory
1
Metodyki i techniki programowania 1
ZAJ CIA 4. Podstawowe informacje o algorytmie.
Operatory relacyjne i logiczne, instrukcja warunkowa if
1. ALGORYTM
Algorytm jest przepisem opisujcym krok po kroku rozwi zanie problemu lub
osignicie jakiego celu. Przed napisaniem programu warto stworzy algorytm.
S 4 sposoby jego budowania:
- słowny,
- lista kroków,
- schemat blokowy,
- drzewo.
Przykład:
Napisz algorytm obliczajcy warto funkcji
f ( x) =
x
x
przy załoeniu, e dla x = 0, f(x) = 0 .
Poniej zostanie utworzony algorytm 4 sposobami.
SŁOWNY
a. dla liczb ujemnych |x| = -x, a wic
f ( x) =
x
= −1
−x
b. dla liczb dodatnich |x| = x, a wic
f ( x) =
x
=1
x
c. jeli x = 0, to z podanej wyej definicji wynika, e f(x) = 0.
W matematyce opis słowny przedstawiamy nastpujco:
mgr in . Adam Id kowski
Metodyki i techniki programowania 1
LISTA KROKÓW
Dane: Dowolna liczba rzeczywista x.
Wynik: Warto funkcji f(x)
Krok 1. Wczytaj warto danej x.
Krok 2. Jeli x > 0, to f(x)=1. Zako cz algorytm.
Krok 3. Jeli x = 0, to f(x)=0. Zako cz algorytm.
Krok 4. Jeli x < 0, to f(x)=-1. Zako cz algorytm.
SCHEMAT BLOKOWY
mgr in . Adam Id kowski
2
3
Metodyki i techniki programowania 1
DRZEWO
2. OPERATORY RELACYJNE W JZYKU C
Posługujc si operatorami relacyjnymi mona tworzy wyraenia relacyjne:
==
!=
<
>
<=
>=
mgr in . Adam Id kowski
równe
róne
mniejsze
wiksze
mniejsze lub równe
wiksze lub równe
Metodyki i techniki programowania 1
4
np.: x < y, jeli znane s wartoci x i y to wyraenie takie moe by logicznie
prawdziwe (1) lub fałszywe (0).
3. INSTRUKCJA WARUNKOWA
INSTRUKCJA WARUNKOWA if
if ( wyraenie relacyjne)
instrukcja_1 ;
else
instrukcja_2 ;
− instrukcja warunkowa if sprawdza czy wyraenie jest logicznie prawdziwe i
wtedy wykonuje si instrukcja_1, inaczej (else) wykonuje si instrukcja_2 (patrz
rys.1.)
− cz od słowa else mo
na pomin , a wtedy gdy wyra
enie jest prawdziwe
instrukcja_1 jest wykonywana, jeli jest fałszywe - nie jest wykonywana
Rys.1. Działanie instrukcji if.
Oczywicie zamiast jednej instrukcji mo
e by wykonywany zestaw instrukcji. Wtedy
grupujemy je w jeden blok umieszczajc je w nawiasach logicznych { }. Działanie jest
podobne.
if ( wyraenie relacyjne )
{ instrukcja_1a ;
instrukcja_1b ;
...
}
else
{ instrukcja_2a ;
instrukcja_2b ;
...
}
mgr in . Adam Id kowski
5
Metodyki i techniki programowania 1
4. OPERATORY LOGICZNE
Jeli zachodzi potrzeba spełnienia kilku wyra e
operatorów logicznych:
&&
||
!
relacyjnych na raz u ywa si
koniunkcja ( i )
alternatywa ( lub )
negacja (nie)
a b
a||b
a&&b
!a
0 0
0
0
1
0 1
1
0
1
1 0
1
0
0
1 1
1
1
0
Przy słowie kluczowym if moe znajdowa si dowolnie skomplikowane wyraenie
logiczne np.:
if ((x<c) && (y>d))
{
blok instrukcji ;
}
Tylko wtedy blok instrukcji zostanie wykonany jeli x jest mniejsze od c i y jest
wi
ksze od d – czyli gdy wystpi logiczna prawda (1).
KONSTRUKCJA else-if
Moliwe jest zagniedanie if .Przykładowa konstrukcja podana jest poniej.
if ( wyraenie_1 )
{
blok instrukcji 1;
}
else
{
if ( wyraenie_2 )
{
blok instrukcji 2;
}
else
{
blok instrukcji 3;
}
}
mgr in . Adam Id kowski
Metodyki i techniki programowania 1
PRZYKŁAD 1. Zgadywanie liczby
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a=6;
int liczba;
printf(”Program zgadnij liczbe\n”)
printf(”Podaj liczbe od 1 do 10”);
scanf(“%d”,&liczba;
if (liczba==a)
{
printf(”Gratulacje zgadles!”);
}
else
{
printf(”Przykro mi, nie zgadles”);
}
getch();
}
PRZYKŁAD 2. Zgadywanie liczby, wersja bogatsza z zagniedeniem.
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a=6;
int liczba;
printf(”Program zgadnij liczbe\n”);
printf(”Podaj liczbe od 1 do 10”);
scanf(“%d”,&liczba);
if (liczba==a)
{
printf(”Gratulacje zgadles!”);
}
else
{
if((liczba<1)||(liczba>10))
{
printf(”Podana liczba musi być od 1 do 10!)”;
}
else
{
printf(”Przykro mi, nie zgadles”);
}
}
getch();
}
mgr in . Adam Id kowski
6
Metodyki i techniki programowania 1
7
ZADANIA
1. Napisać program sprawdzający czy podawana liczba x naleŜy do przedziału
(a,b). Jeśli liczba naleŜy do przedziału naleŜy wyświetlić komunikat_1, jeśli nie
naleŜy do przedziału – komunikat_2. Przed pisaniem spróbuj najpierw narysować
algorytm.
2. Rok w kalendarzu gregoriańskim, obowiązującym w większości krajów na
świecie trwa 365 dni, a w latach przestępnych 366 dni. Lata przestępne to takie,
których liczba jest podzielna przez 4, oprócz podzielnych przez 100, z tym, Ŝe
lata podzielne przez 400 są przestępne. Napisz program który po podaniu roku
będzie informował czy rok ten jest przestępny czy nie. Przed pisaniem spróbuj
najpierw narysować algorytm.
3. Numeracja lat kalendarza perskiego odbywa się od 622 r.n.e. Zatem kaŜdy rok
nosi numer o 621 mniejszy niŜ rok gregoriański. Obecnie w kalendarzu perskim
stosuje się reguła, Ŝe na kaŜde 33 lata występuje 8 lat przestępnych. Są to te
lata, dla których reszta z dzielenia numeru roku przez 33 wynosi 1, 5, 9, 13, 17,
22, 26 lub 30. Napisz program, który po podaniu roku gregoriańskiego zamieni
go na rok perski i poda czy jest przestępny czy nie. Przed pisaniem spróbuj
najpierw narysować algorytm.
4. Napisz program który sprawdzi czy podawana liczba typu integer jest liczbą
pierwszą. Przed pisaniem spróbuj najpierw narysować algorytm.
5. Napisać program sortujący 3 podawane liczby w kolejności od największej do
najmniejszej. Przed pisaniem spróbuj najpierw narysować algorytm.
mgr in . Adam Id kowski