Wykłady informatyka 3
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ś