Wykłady informatyka 3

18
Informatyka I - wykład 3 Instrukcje i wyrażenia warunkowe Slajd 1/18 Informatyka I – wykład 3 G.P.Korbaś

description

 

Transcript of Wykłady informatyka 3

Informatyka I - wykład 3

Instrukcje i wyrażenia warunkowe

Slajd 1/18 Informatyka I – wykład 3 G.P.Korbaś

Program 1.Program pobiera od użytkownika liczbę całkowitą. Jeśli jest równa 1234, to wypisuje “Brawo ...” - w przeciwnym wypadku wypisuje “Zły kod”.

#include <iostream>using namespace std;int main(){int kod;cout << "Kod: "; cin >> kod;if (kod==1234)

{cout << "Brawo, to wlaściwy kod\n";cout << "Masz teraz dostep do tajnych informacji\n";}

else cout << "Zły kod\n";system("PAUSE");return 0;}

Slajd 2/18 Informatyka I – wykład 3 G.P.Korbaś

Instrukcja warunkowa:

if (warunek)instrukcja1;

elseinstrukcja2;

● Jeżeli wyrażenie logiczne (warunek) zwraca prawdę, to wykonywana jest instrukcja1 w przeciwnym wypadku instrukcja2

● Warunek musi być w nawiasach● Zamiast pojedynczej instrukcji można wpisać instrukcję złożoną (blok),

czyli kilka instrukcji prostych ujętych w klamrach● Drugą część, czyli else instrukcja2 można pominąć.

Slajd 3/18 Informatyka I – wykład 3 G.P.Korbaś

Program 1b.Program pobiera od użytkownika liczbę całkowitą. Jeśli jest równa 1234, to wypisuje “Brawo!” - w przeciwnym wypadku wypisuje “Zły kod!” - zastosowano wyrażenie warunkowe

#include <iostream>using namespace std;int main(){int kod;cout << "Kod: "; cin >> kod;cout << (kod==1234 ? "Brawo!\n" : "Zły kod!\n");system("PAUSE");return 0;}

Slajd 4/18 Informatyka I – wykład 3 G.P.Korbaś

Wyrażenie warunkowe:

warunek ? wartość1 : wartość2

● Jeżeli wyrażenie logiczne (warunek) zwraca prawdę, to całe wyrażenie zwraca wartość1 w przeciwnym wypadku zwraca wartość2.

Slajd 5/18 Informatyka I – wykład 3 G.P.Korbaś

Program 2.Program, pobiera od użytkownika znak. Jeśli podany znak jest równy 'q', to program kończy się, ale jeśli podany znak jest inny niż 'q', to program znowu pobiera od użytkownika znak – aż do podania 'q'.

#include <iostream>using namespace std;int main(){cout << "Aby zakończyć program wpisz 'q' i naciśnij ENTER" << endl;char x;pobierz_znak:cin >> x;if (x!='q')goto pobierz_znak;return 0;}

Slajd 6/18 Informatyka I – wykład 3 G.P.Korbaś

Uwagi do programu 2.● pobierz_znak: – deklaruje etykietę o nazwie pobierz_znak ● goto pobierz_znak; – skok bezwarunkowy do etykiety

pobierz_znak – nie należy nadużywać tej instrukcji!

Slajd 7/18 Informatyka I – wykład 3 G.P.Korbaś

Wyrażenie logiczne:

● Wyrażenia logiczne zwracają wartości true albo false.● Przykłady prostych wyrażeń logicznych:

● x==2 - wartość zmiennej x jest równa 2● z!='a' - wartość zmiennej z nie jest równa znakowi 'a'● 5>2 - 5 jest większe od 2● s<=f - wartość s jest mniejsza lub równa wartości f

● Przykłady złożonych wyrażeń logicznych● x<2 && x>-2 - x mniejsze od 2 i x większe od -2● y==1 || z==1 - wartość y równa 1 lub wartość z równa 1● !(a==0 || b==0)- nieprawda, że (a róne jest 0 lub b równe

jest 0), co można w tym przypadku zapisać też a!=0 && b!=0

Slajd 8/18 Informatyka I – wykład 3 G.P.Korbaś

Program 3a.Program, pobiera od użytkownika dwie liczby. Jeśli jedna albo druga to 2, program wypisuje “Dobrze”, w przecinym wypadku – wypisuje “Źle”.

#include <iostream>using namespace std;int main(){int a,b;cin>>a>>b;if (a==2 || b==2)

cout<<"Dobrze\n";else cout<<"Źle\n";system("PAUSE");return 0;}

Slajd 9/18 Informatyka I – wykład 3 G.P.Korbaś

Program 3b.Program, pobiera od użytkownika dwie liczby. Jeśli jedna oraz druga to 2, program wypisuje “Dobrze”, w przecinym wypadku – wypisuje “Źle”.

#include <iostream>using namespace std;int main(){int a,b;cin>>a>>b;if (a==2 && b==2)

cout<<"Dobrze\n";else cout<<"Źle\n";system("PAUSE");return 0;}

Slajd 10/18 Informatyka I – wykład 3 G.P.Korbaś

Program 4a.Program pobiera od użytkownika tekst - hasło. Jeśli podano tekst “1234”, to wypisuje “Brawo ...” - w przeciwnym wypadku wypisuje “Złe hasło”.#include <iostream>#include <string>using namespace std;int main(){ string tekst;cout << "Haslo: ";cin >> tekst;if (tekst=="1234")

{cout << "\nBrawo - to wlasciwe haslo !\n";cout << "Masz teraz dostep do tajnych informacji ;)\n";}

else cout << "\nZle haslo !\n";char x;cin >> x;return 0;}Slajd 11/18 Informatyka I – wykład 3 G.P.Korbaś

Uwagi do programu 4a.

● #include <string> – dodaj bibliotekę string● string tekst; - definiuje obiekt typu string, która umożliwia

oprerowanie tekstem

Slajd 12/18 Informatyka I – wykład 3 G.P.Korbaś

Program 4b – zmiana w main(). Program umożliwia teraz 3 próby podawania hasła.int nrproby=1;string tekst;haslo:cout << "Haslo: ";cin >> tekst;if (tekst=="1234")

{cout << "\nBrawo - to wlasciwe haslo !\n";cout << "Masz teraz dostep do tajnych informacji ;)\n";}else{cout << "\nZle haslo !\n";if (nrproby<3)

{nrproby++;cout << "\nProbuj ponownie !\n";goto haslo;}

}char x;cin >> x;return 0;

Slajd 13/18 Informatyka I – wykład 3 G.P.Korbaś

Program 5. Program rozwiązuje równanie 0=a⋅x2b⋅xc#include <iostream>#include <cmath>using namespace std;int main(){double a,b,c,delta;cout << "a="; cin >> a;cout << "\nb="; cin >> b;cout << "\nc="; cin >> c;delta = b*b - 4*a*c;if (delta<0)

cout << "\nBrak rozwiązań !\n";else if (delta==0) // nie pomylić z =

cout << "\nx=" << -b/(2*a) <<endl;else

{cout << "\nx1=" << (-b-sqrt(delta))/(2*a);cout << "\nx2=" << (-b+sqrt(delta))/(2*a) << endl;}

char x; cin >> x; return 0;}

Slajd 14/18 Informatyka I – wykład 3 G.P.Korbaś

Program 6.Program pobiera od użytkownika numer dnia tygodnia (od 1 do 7) i wypisuje nazwę dnia tygodnia słownie (przyjmuje się, że pierwszym dniem jest poniedziałek). Jeśli użytkownik poda inny numer, to program wypisuje „nieznany dzień”.

#include <iostream>using namespace std;int main(){ int a;cout << "Nr dnia tygodnia=";cin >> a;cout << "\nJest to ";switch (a) {case 1: cout << "niedziela";break;case 2: cout << "poniedziałek";break;case 3: cout << "wtorek";break;case 4: cout << "środa";

break;case 5: cout << "czwartek";break;case 6: cout << "piątek";break;case 7: cout << "sobota";break;default: cout << "dzień nieznany";break;}char x;cin >> x;return 0;}

Slajd 15/18 Informatyka I – wykład 3 G.P.Korbaś

Instrukcja switch:switch (wartość){

case wartość1: instrukcja1;case wartość2: instrukcja2;default: instrukcjax;}

● Jeżeli wartość jest równa wartość1, to wykonywane są instrukcje począwszy od instrukcja1 ,Jeżeli wartość jest równa wartość2, to wykonywane są instrukcje począwszy od instrukcja2 ,jeżeli wartość nie jest równa żadnej z podanych wartości, to wykonywana jest instrukcja począwszy od instrukcjax

● Wartość musi być w nawiasach● Zamiast pojedynczej instrukcji można wpisać instrukcję więcej

instrukcji - nie muszą one być grupowane w klamrach● Aby w dowolnym momencie skończyć instrukcję switch można użyć

polecenia break;● Nie warto używać tej instrukcji dla zbyt wielu wartości

Slajd 16/18 Informatyka I – wykład 3 G.P.Korbaś

Program 7.Program losuje 20 liczb całkowitych z przedziału od 100 do 200.#include <iostream>#include <ctime>using namespace std;const int mini=100,maxi=200,ILE=20;int main(){ int L,Licznik=0; srand(time(0)*1000); skok: Licznik++; L = int((maxi-mini+1) * rand() * 1.0 / RAND_MAX+mini); if (L>maxi) L=maxi; cout << L << endl; if (Licznik<ILE) goto skok; char x; cin >> x; return 0;}Slajd 17/18 Informatyka I – wykład 3 G.P.Korbaś

Program 8.Program pobiera 10 znaków i sprawdza czy jest pomiędzy nimi 'q'.#include <iostream>using namespace std;int main(){ bool BYLO=false; int Licz=0; char Z; skok: Licz++; cin>>Z; if (Z=='q') BYLO=true; if (Licz<10) goto skok; cout << (BYLO ? "TAK\n" : "NIE\n"); char x; cin >> x; return 0;}

Slajd 18/18 Informatyka I – wykład 3 G.P.Korbaś