LEKCJA 6 - NAST�PNY PROGRAM - KOMPUTEROWA ARYTMETYKA. ________________________________________________________________ W trakcie tej lekcji napiszesz i uruchomisz nast�pny program wykonuj�cy proste operacje matematyczne. ________________________________________________________________ Aby przyst�pi� po wyja�nieniach do pracy nad drugim programem, powiniene� wykona� nast�puj�ce czynno�ci: 1. Zr�b porz�dek na ekranie. Zamknij rozkazem Close z menu Window zb�dne okna (mo�esz pos�u�y� si� kombinacj� [Alt]-[F3]). 2. Rozwi� menu File. 3. Wybierz z menu rozkaz Open... 4. Wpisz do okienka tekstowego: A:\DRUGI.CPP 5. Naci�nij [Enter]. 6. Wpisz do okienka edytora tekst programu: [P003.CPP ] /* Program przykladowy: _DRUGI.CPP */ # include <conio.h> /* zwr�� uwag�, �e tu NIE MA [;] ! */ # include <stdio.h> /* drugi plik nag��wkowy */ int main() /* tu tez nie ma �rednika [;] ! */ { float x, y; float wynik; clrscr(); printf("Zamieniam ulamki zwykle na dziesietne\n"); printf("\nPodaj licznik ulamka: "); scanf("%f", &x); /* pobiera liczb� z klawiatury */ printf("\nPodaj mianownik ulamka: "); scanf( "%f", &y); wynik = x / y; /* tu wykonuje sie dzielenie */ printf("\n %f : %f = %f", x, y, wynik); printf("\n nacisnij dowolny klawisz...\n"); getch(); /* program czeka na nacisniecie klawisza. */ return 0; //<-- zwrot zera do systemu } UWAGA: _________________________________________________________________ * Komentarze uj�te w [/*.....*/] mo�esz pomin��. Komentarz jest przeznaczony dla cz�owieka. Kompilator ignoruje ca�kowicie komentarze i traktuje komentarz jak puste miejsce, a dok�adniej - tak samo jak pojedyncz� spacj�. Komentarz w C++ mo�e mie� dwie formy: /* Tekst komentarza */ // Tekst komentarza w drugim przypadku ogranicznikiem pola komentarza jest koniec wiersza. * Spacjami i TABami mo�esz operowa� dowolnie. Kompilator ignoruje tak�e puste miejsca w tek�cie. Nie nale�y natomiast stosowa� spacji w obr�bie s��w kluczowych i identyfikator�w. ________________________________________________________________ 7. Skompiluj program [Alt]-[C], [M] lub [Enter]. 8. Popraw ewentualne b��dy. 9. Uruchom program rozkazem Run, naciskaj�c [Alt]-[R], [R]. 10. Zapisz wersj� �r�d�ow� programu DRUGI.CPP na dyskietk� A:\ stosuj�c tym razem SHORTCUT KEY - klawisz [F2]. [S!] scanf() - SCANing Function - Funkcja SKANuj�ca. ________________________________________________________________ Funkcja pobiera ze standardowego urz�dzenia wej�cia- zwykle z klawiatury podan� przez u�ytkownika liczb� lub inny ci�g znak�w. Dzia�a podobnie do funkcji INPUT w Basicu, czy readln w Pascalu. * float - do Floating Point - "P�ywaj�cy" - zmienny przecinek. S�owo kluczowe s�u��ce do tzw. DEKLARACJI TYPU ZMIENNEJ lub funkcji. Oznacza liczb� rzeczywist� np.: float x = 3.14; * int - od Integer - ca�kowity. S�owo kluczowe s�u��ce do deklaracji typu zmiennej lub funkcji. Oznacza liczb� ca�kowit� np.: 768. * #include - W��cz. Dyrektywa w��czaj�ca ca�y zewn�trzny plik tekstowy. W tym przypadku w��czone zosta�y dwa tzw. pliki nag��wkowe: CONIO.H i STDIO.H. * CONIO.H - CONsole Input/Output. Plik nag��wkowy zawieraj�cy prototypy funkcji potrzebnych do obs�ugi standardowego Wej�cia/Wyj�cia na/z konsoli (CONsole). Plik zawiera mi�dzy innymi prototyp funkcji clrscr(), potrzebnej nam do czyszczenia ekranu. *STDIO.H - STanDard Input/Output Plik nag��wkowy zawieraj�cy prototypy funkcji potrzebnych do obs�ugi standardowego Wej�cia/Wyj�cia na/z konsoli (Input - Wej�cie, Output - Wyj�cie). Plik zawiera mi�dzy innymi prototyp funkcji printf(), potrzebnej nam do drukowania wynik�w na ekranie. return - s�owo kluczowe: Powr�t, zwrot. Po wykonaniu programu liczba 0 (tak kazali�my programowi rozkazem return 0;) jest zwracana do systemu operacyjnego, w naszym przypadku do DOSa. Zwr�� uwag�, �e nie pojawi�o si� tym razem ostrze�enie WARNING podczas kompilacji. ________________________________________________________________ OPERATORY ARYTMETYCZNE C++. C++ potrafi oczywi�cie nie tylko dzieli� i mno�y�. Oto tabela operator�w arytmetycznych c i C++. OPERATORY ARYTMETYCZNE j�zyka C++. ________________________________________________________________ Operator Nazwa T�umaczenie Dzia�anie ________________________________________________________________ + ADDition Dodawanie Suma liczb - SUBstraction Odejmowanie R�nica liczb * MULtiplication Mno�enie Iloczyn liczb / DIVision Dzielenie Iloraz liczb % MODulus Dziel Modulo Reszta z dzielenia ________________________________________________________________ Przyk�adowe wyniki niekt�rych operacji arytmetycznych. ________________________________________________________________ Dzia�anie (zapis w C++) Wynik dzia�ania ________________________________________________________________ 5 + 7 12 12 - 7 5 3 * 8 24 10 / 3 3.333333 10 % 3 1 ________________________________________________________________ [???] Czym r�ni si� dzielenie / od % ? ________________________________________________________________ Operator dzielenia modulo % zamiast wyniku dzielenia - daje rzeszt� z dzielenia. Dla przyk�adu, dzielenie liczby 14 przez liczb� 4 daje wynik 3, reszta z dzielenia 2. Wynik operacji 14%4 b�dzie wi�c wynosi� 2. Operator ten jest niezwykle przydatny np. przy sprawdzaniu podzielno�ci, skalowaniu, okre�laniu zakres�w liczb przypadkowych, itp.. Przyk�ady generacji liczb pseudolosowych wybiegaj� nieco w przysz�o��, ale postanowi�em w Samouczku umie�ci� je razem. Po przestudiowaniu tworzenia p�tli programowych mo�esz wr�ci� do tej lekcji i rozwa�y� przyk�ady po raz wt�ry. Przyk�ad 1: randomize(); int X=ramdom(); X = X % 10; Przyk�ad 2: --------------------- #include <stdlib.h> /* Zwr�c uwag� na do��czony plik */ #include <stdio.h> main() { int i; printf("Dziesi�� liczb pseudo-losowych od 0 do 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; } Przykad3 -------------------- #include <stdlib.h> #include <stdio.h> #include <time.h> void main() { randomize(); printf("Liczby pseudolosowe z zakresu: 0-99 --> %d\n", random (100)); } Przyk�ad 4 ----------------- #include <stdlib.h> #include <stdio.h> #include <time.h> int main(void) { int i; randomize(); printf("Liczby pseudolosowe: 0 to 99\n\n"); for(i=0; i<10; i++) printf("%d\n", rand() % 100); return 0; } Zwr�� uwag�, �e to randomize() uruchamia generator liczb pseudolosowych, czyli jakgdyby "w��cza b�ben maszyny losuj�cej". ________________________________________________________________ Wykonaj z programem DRUGI.CPP kilka eksperyment�w. [Z] ________________________________________________________________ 1. Zamie� operator dzielenia na operator mno�enia [*]: wynik = x * y; /* tu wykonuje sie mno�enie */ i napis w pierwszej funkcji printf() na np. taki: printf( "Wykonuje mnozenie liczb" ); Uruchom program. Sprawd� poprawno�� dzia�ania programu w szerokim zakresie liczb. Przy jakiej wielko�ci liczb pojawiaj� si� b��dy? 2. Zmie� nazwy zmiennych x, y, wynik na inne, np.: to_jest_liczba_pierwsza, to_jest_liczba_druga, itp. Czy C++ poprawnie rozpoznaje i rozr�nia takie d�ugie nazwy? Kiedy zaczynaj� si� k�opoty? Sprawd�, czy mo�na w nazwie zmiennej u�y� spacji? Jaki komunikat wy�wietli kompilator? ________________________________________________________________ [???] PRZEPAD� PROGRAM ??? ________________________________________________________________ Nie przejmuj si�. Wersja pocz�tkowa programu DRUGI.CPP jest na dyskietce do��czonej do niniejszej ksi��ki (tam nazywa si� DRUGI.CPP). Zwr�� uwag�, �e kompilator C++ tworzy automatycznie kopie zapasowe plik�w �r�d�owych z programami i nadaje im standardowe rozszerzenie *.BAK. Zanim zatem zaczniesz si� denerwowa�, sprawd�, czy kopia np. DRUGI.BAK nie jest w�a�nie t� wersj� programu, kt�ra Ci "przepad�a". ________________________________________________________________ __________________________________________________________________ EOF
Infesto