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 /* zwróć uwagę, że tu NIE MA [;] ! */ # include /* 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 /* Zwróc uwagę na dołączony plik */ #include 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 #include #include void main() { randomize(); printf("Liczby pseudolosowe z zakresu: 0-99 --> %d\n", random (100)); } Przykład 4 ----------------- #include #include #include 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