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.
-1-
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;
-2-
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.
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".
-3-