UNIWERSYTET TECHNOLOGICZNO-PRZYRODNICZY
w Bydgoszczy
ZAKŁAD ELEKTROENERGETYKI
LABORATORIUM INFORMATYKI
INSTRUKCJA DO ĆWICZENIA II
Zmienne, wprowadzanie danych do programu i wyprowadzanie na ekran
Instrukcje warunkowe
Opracował: dr inż. Marcin Drechny
Luty 2010r.
2
1. Cel ćwiczenia
Celem tego ćwiczenia jest poznanie sposobu deklaracji i stosowania zmiennych oraz
wyprowadzanie i wprowadzanie danych z i do programu. Ponadto ćwiczenie umożliwia
zapoznanie się ze sposobami korzystania z instrukcji warunkowych występujących w języku
C++.
2. Wprowadzenie
2.1. Zmienne
Tworząc programy złożone, zmuszeni jesteśmy przechowywać różne wartości
(liczbowe lub tekstowe). Programy przechowują te dane w konkretnych miejscach pamięci
komputera. Aby korzystać z tych danych należy używać zmiennych.
Zmienna jest nazwą miejsca w pamięci, które może przechowywać konkretną wartość.
Każda zmienna ma swój typ i swoją nazwę, np.
Long Pole;
Long Obwod;
gdzie, typ zmiennych to long a ich nazwa to Pole oraz Obwod,
Typ zmiennej określa typ wartości jakie może ona przechowywać (liczba całkowita,
rzeczywista, ciąg znaków),
Do przypisywania zmiennym wartości służy operator przypisania, czyli znak równości np.
Promien = 3;
Deklarując nazwy zmiennych (ich identyfikatory), należy pamiętać o regułach nadawania
nazw (identyfikatorów) czyli m. in. nie używania słów kluczowych. A nazwy zmiennych
należy nadawać tak aby program był bardziej zrozumiały i czytelny.
Słowa kluczowe określające typy zmiennych całkowitych:
• char - typ znakowy,
• int - typ całkowity,
• long - typ długich liczb całkowitych,
• signed - liczby ze znakiem,
• short - typ krótkich liczb całkowitych,
• unsigned - liczby bez znaku.
Słów kluczowych wymienionych wcześniej używa się zwykle w połączeniu np. signed char,
unsigned short int
, signed long int.
3
Obecność niektórych słów jest przyjmowana domyślnie np. int - oznacza liczbę całkowitą ze
znakiem czyli signed short int, unsigned long jest równoważne unsigned long int. Dlatego
często deklarujemy zmienne w skrócie określając typ zmiennych: int, long, char, unsigned
long
, unsigned int.
Słowa kluczowe określające typy zmiennych rzeczywistych:
• float - liczby rzeczywiste pojedynczej precyzji,
• double - liczby rzeczywiste podwójnej precyzji,
• long double - liczby rzeczywiste wysokiej precyzji.
Zakresy zmiennych:
Typ zmiennej
Rozmiar w
bitach
Min
Max
unsigned char
8
0
255
signed char
8
-128
127
short int
16
-32768
32767
unsigned int
32
0
4 294 967 295
int
32
-2 147 483 648
2 147 483 647
unsigned long
32
0
4 294 967 295
long
32
-2 147 483 648
2 147 483 647
float
32
1,18*10
-38
3,40*10
38
double
64
2,23*10
-308
1,79*10
308
long double
80
3,37*10
-4932
1,18*10
4932
Deklaracja zmiennych w języku C++ odbywa się w następujący sposób:
• na początku podajemy typ zmiennej deklarowanej,
• następnie podajemy nazwę zmiennej deklarowanej pamiętając o zasadach nadawania
identyfikatorów,
• za koniec dodajemy znak średnika.
Przykład:
int liczba1;
long int zmienna;
Język C++ dopuszcza deklarowanie w jednym wierszu wielu zmiennych tego samego typu
np.
int liczba1, liczba2, liczba3, wartosc, dana;
Istnieje możliwość nadania wartości początkowej zmiennej w czasie jej deklaracji np.
double liczba = 3.56754;
4
Deklaracja zmiennej tekstowej odbywa się za pomocą deklarowania tablicy zmiennych
znakowych char np.
char imie[10] = "Jan";
char nazwisko[20] = "Kowalski";
Cyfry 10 i 20 w nawiasach kwadratowych oznaczają rozmiar tablicy (ilość znaków tablicy).
Przypisanie zmiennej tekstowej wartości może odbywać się na kilka sposobów np. za pomocą
wprowadzenia tekstu z klawiatury instrukcją cin czy przypisanie tekstu podczas inicjacji
zmiennej (co zostało pokazane powyżej).
W języku C++ rozróżniamy zmienne lokalne i globalne. Zmienne lokalne to takie zmienne,
których widoczność (zasięg działania) ogranicza się do bloku programu ujętego w nawiasy
klamrowe. Np.
void main(void)
{
int dana;
.....
.....
.....
}
W powyższym przykładzie zmienna dana jest widoczna dla funkcji main. Deklaracja
zmiennych może odbywać się w dowolnym miejscu w bloku programu, lecz najlepiej
(najbardziej przejrzyście) zapisywać deklaracje za znakiem {.
Zmienna dana i wynik będzie także widoczna w pętli for umieszczonej w funkcji main:
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
5
void main(void)
{
int dana = 8;
int wynik = 1;
for (int i = 1; i <= dana; i++)
{
wynik *= i;
printf("Iloczyn = %d\n",wynik);
}
getch();
}
Zmienne globalne są to zmienne, które są widoczne w całym pliku kodu źródłowego od
miejsca deklaracji.
Przykład:
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
int liczba = 100;
void zamiana(void)
{
liczba++;
cout << "Wartosc zmiennej w funkcji zmiana jest rowna: " << liczba << endl;
}
6
void main(void)
{
liczba++;
cout << "Wartosc zmiennej w funkcji main jest rowna: " << liczba << endl;
zamiana();
getch();
}
Wynikiem działania programu jest wyświetlanie wartości zmiennej liczba która wynosi:
101 a następnie 102. Czyli deklaracja i działanie zmiennych globalnych jest podobne do
działania i deklaracji zmiennych lokalnych
Język C++ dopuszcza nadawanie takich samych nazw dla zmiennej lokalnej i globalnej. W
takim przypadku trzeba znać reguły postępowania aby poprawnie korzystać z tych
zmiennych. W sytuacjach konfliktowych kompilator daje priorytet zmiennej lokalnej. Jest
możliwość odwołania się z dowolnej funkcji do zmiennej globalnej w przypadku gdy istnieje
w tym bloku programu zmienna lokalna o takiej samej nazwie. Odwołanie to odbywa się przy
użyciu operatora widoczności ::.
Przykład:
::dana = 1;
Jedną z zasad programowania w C++ jest zasada unikania zmiennych globalnych.
Nadając nazwy zmiennym należy:
• nadawać nazwy które kojarzą się z daną zmienną,
• nie nadawać nazw słów kluczowych,
• pisać komentarze obok zmiennych, opisując cel ich stosowania,
• pamiętać o regułach nadawania nazw (identyfikatorów) w języku C++.
7
2.2. Przypisywanie wartości zmiennym
Zmiennym w C++ możemy przypisać wartości na dwa sposoby (używamy operatora
przypisania =):
• podczas deklaracji zmiennej np.
int zmienna = 20;
float liczba = 123.78;
• w dowolnym miejscu w programie (po uprzedniej deklaracji typów zmiennych) np.
int zmienna;
float liczba;
................
................
zmienna = 20;
liczba = 123.78;
Przypisując wartość zmiennym należy pamiętać o typie zmiennej.
2.3. Operacje wejścia wyjścia
Używając standardowego strumienia wyjściowego cout (umieszczonego w bibliotece
iostream.h)
można wyświetlać na ekranie monitora liczby i znaki,
cout << ”tekst”;
cout << zmienna;
Przykład:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
void main (void)
{
int dana = 34;
cout << "To jest komunikat ";
8
cout << 123 << " ";
cout << "Wartosc zmiennej dana wynosi: " << dana;
cout << endl << "Przejscie do nastepnej linii";
getch();
}
Wczytywanie danych z klawiatury i przypisanie ich do zmiennych można wykonać za
pomocą instrukcji strumieniowej cin
cin >> zmienna [ >> zmienna]
Przykład:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
void main (void)
{
int zmienna1, zmienna2, zmienna3;
cout << "Podaj jedna liczbe calkowita i nacisnij enter ";
cin >> zmienna1;
cout << endl << "Podaj dwie liczby calkowite oddzielone spacja ";
cin >> zmienna2 >> zmienna3;
cout << endl << "Wpisane liczby to: " << zmienna1 << " i " << zmienna2 << " oraz "
<< zmienna3;
getch();
zmienna3;
}
9
Korzystając z tej instrukcji wprowadzania danych należy pamiętać o możliwości wystąpienia
błędów nadmiaru jak i błędy typów. Powstanie tego typu błędów wiąże się z wprowadzeniem
przez użytkownika niepoprawnej liczby czy tekstu.
Język C/C++ pozwala korzystać z kilku metod wejścia - wyjścia. Oprócz podanych wcześniej
cin
oraz cout istnieje biblioteka zawierająca wiele różnych operacji wejścia - wyjścia - stdio.h
Przykładowe operacje:
• otwieranie i zamykanie strumieni: fclose, fopen, freopen,
• podstawowe funkcje wyjścia: fputc, fputs, fwrite, puts, putc,
• wyjście sformatowane: printf, sprintf,
• podstawowe funkcje wejścia: getc, gets, fgets, fread, getchar,
• wejście sformatowane: fscanf, scanf, vscanf,
• sterowanie wskaźnikiem pozycji strumienia: fgetpos, fseek,
2.4. Instrukcje warunkowe
Instrukcja warunkowa if sprawdza czy badana zależność (wyrażenie warunkowe) zachodzi
czy nie. Jeśli tak to wykonywana jest Instrukcja1, jeśli nie to nic nie jest wykonywane lub
możliwe jest wykonanie Instrukcji2.
if (wyrażenie warunkowe) instrukcja1 [else instrukcja2]
Przykłady:
• instrukcja prosta I:
if (a<= b)
c = 2;
• instrukcja prosta II:
if (a <= b)
c = 2;
10
else
c = 1;
• instrukcja złożona (grupowanie instrukcji):
if (a <= b)
{
c = 2;
d = 3;
}
else
{
c = 1;
d += c;
}
• instrukcja złożona (zagnieżdżanie instrukcji I):
if (a <= b)
{
if (i == 0)
c = 2;
d = 3;
}
else
{
c = 1;
d += c;
}
• instrukcja złożona (zagnieżdżanie instrukcji II):
if (a > b)
{
c = 1;
d = 2;
}
11
else
if (a == b)
{
c = 2;
d = 3;
}
else
{
c = 3;
d = 4;
}
Instrukcja switch pozwala przenieść wykonywanie programu (poprzez wybór odpowiedniej
opcji) do wskazanego miejsca. Postać ogólna instrukcji sterującej:
switch (wyrażenie sterujące)
{
etykieta-wyboru
instrukcje;
..........................................;
etykieta-wyboru
instrukcje;
}
Przykład:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
void main (void)
{
cout << "Nacisnij klawisz z zakresu: 0-9 i a-z" << endl;
char klawisz = getch();
switch (klawisz)
{
case '1':
cout << "Wybrales klawisz 1";
12
break;
case 'a':
cout << "Wybrales klawisz a";
break;
default:
cout << "Wybrales klawisz rozny od 1 i a";
}
getch();
}
Opcja default jest etykietą domyślną wyboru. Program przechodzi w to miejsce gdy nie
znajdzie odpowiedniej etykiety po wyrażeniu case. Instrukcja break wymusza zakończenie
wykonywania instrukcji wyboru.
2.5. Błędy podczas programowania
Najczęściej popełniane błędy w trakcie programowania to:
- Błędy syntaktyczne
Każdy język ma swój zbiór reguł. Ma go też C/C++. Zdania w języku polskim kończą się
zwykle kropką, wykrzyknikiem lub znakiem zapytania. Analogicznie na początku zdania jest
duża litera. Język C++ w swojej składni używa nawiasów, nawiasów klamrowych,
cudzysłowów oraz wielu innych symboli. Używając ich w nieprawidłowy sposób
uniemożliwiamy kompilatorowi utworzenie pliku wykonywalnego. Kompilator w trakcie
kompilacji zasygnalizuje w którym wierszu wystąpił błąd (błędy). Po ich usunięciu
kompilator utworzy plik wykonywalny.
- Błędy nadmiaru
Błędy tego typu są niezwykle trudne do wykrycia i poprawienia. W momencie ich
wystąpienia kompilator nie sygnalizuje ich. Błędy te powstają na skutek przypisania
zmiennym wartości wykraczające poza pojemność przydzielonego miejsca w pamięci.
13
Przykład błędu nadmiaru:
int liczba1 = 2147483647;
int liczba2 = 1;
int wynik = 0;
wynik = liczba1 + liczba2;
W wyniku wykonania tej operacji otrzymamy wynik = -2147483648. Zakres typu int:
-2147483648 do 2147483647. Operując na zmiennych trzeba zawsze mieć na uwadze zakres
wartości jaki może przechowywać dana zmienna czy dane zmienne.
- Błędy typów
Występujące często przy wprowadzaniu z klawiatury danych do programu. Jeżeli do
programu wprowadzimy dane typu niezgodnego z oczekiwanym przez program, wystąpią
błędy powodujące zakończenie pracy programu lub błędne wprowadzenie danych do
zmiennej (zmiennych). Dlatego trzeba pamiętać, aby program został prawidłowo
zabezpieczony przed takimi błędami.
2.6. Operatory
Operatory arytmetyczne
Operatory arytmetyczne dzielimy na operatory: inkrementacji, dekrementacji, addytywne
oraz multiplikatywne.
• Operatory addytywne: +, -
operand1 + operand2
- dodawanie operandów
operand 1 - opreand2
- odejmowanie operandów
• Operatory multiplikatywne: *, /, %
operand1 * operand2
- mnożenie operandów
operand1 / operand2
- dzielenie operandów
operand1 % operand2
- reszta z dzielenia
• Operator inkrementacji i dekrementacji: ++, --
++operand
- przedrostkowy operator inkrementacji
operand++
- przyrostkowy operator inkrementacji
14
--operand
- przedrostkowy operator dekrementacji
operand--
- przyrostkowy operator dekrementacji
Wyjaśnienie działania operatorów de - i inkrementacji:
Operator inkrementacji ++ powoduje, że operand zwiększa swoją wartość o 1, natomiast
operator dekrementacji -- powoduje zmniejszenie się wartości operandu o 1. Istotne jest
umieszczenie operatora -- lub ++. Jeśli operator zostanie umieszczony przed operandem,
najpierw zostanie powiększona (pomniejszona) wartość operandu a potem zostanie obliczone
wyrażenie, w którym znajduje się taki operand. Inna sytuacja jest wtedy, gdy operator został
umieszczony po operandzie. W tym przypadku najpierw zostaje obliczone wyrażenie w
którym znajduje się operand a następnie operand zwiększa (zmniejsza) swoja wartość o 1.
Działanie tych operatorów zostanie pokazane na przykładzie.
Przykład:
int liczba1 = 2, liczba2 = 7, wynik;
wynik = (liczba2--) - (++liczba1);
Obliczenie wyniku przebiega w następujący sposób: od wartości zmiennej liczba2 odjęta
zostaje wartość zmiennej liczba1 zwiększona o 1. Czyli zmienna wynik = 4. Następnie
wartość zmiennej liczba2 zostaje zmniejszona o 1. W ten sposób końcowe wartości
zmiennych liczba1 = 3 a liczba2 = 6.
Operatory bitowe
Za pomocą operatorów bitowych można realizować funkcje logiczne takie jak: OR, AND,
EXOR, NOT.
Operatory funkcji binarnych:
• operand1 & operand2
- iloczyn (AND)
• operand1 ^ operand2
- suma modulo 2 (EXOR)
• opreand1 | operand2
- alternatywa (OR)
• ~operand1 – negacja
Korzystając z tych operatorów należy zdawać sobie sprawę, że działają one na bitach oraz
znać zasady działania tychże operatorów. Korzystnie jest wtedy zapisywać liczby w postaci
binarnej (dwójkowej) lub szesnastkowej.
15
Przykład:
int liczba1 = 0x01;
int liczba2 = 0x02;
int wynik;
wynik = (liczba1 & liczba2);
Wynikiem działania tego programu jest wartość 0.
Operatory logiczne
Operatory logiczne działają na wartościach logicznych: prawda oraz fałsz.
Reprezentacja wartości logicznych:
• Prawda
-
liczba całkowita większa od zera,
• Fałsz
- zero (całkowite),
Operandy i wyrażenia logiczne:
• operand1 && operand2
- koniunkcja
• operand1 II operand2
- alternatywa
• !operand1 – negacja
Przykład:
Dane jest równanie ax^2 + by = 0
if (a != 0 && b == 0)
cout << ”Rownanie ma jeden podwojny pierwiastek w zerze”;
Operatory przesunięcia
Operatory przesunięcia w prawo >> i w lewo <<. Operatory te działają na bitach. Wyrażenia z
operatorami przesunięcia:
• operand1 << operand2
- przesuń operand1 w lewo o operand2 bitów
• operand1 >> operand2
- przesuń operand1 w prawo o operand2 bitów
Operandy musza być typów całkowitych.
Przy przesuwaniu liczb bez znaku w lewo, młodsze bity są uzupełniane zerami. Przy
przesuwaniu liczb bez znaku w prawo, wszystko zależy od operandu1. Jeśli jest on liczbą bez
16
znaku to najstarsze bity są uzupełniane zerami, w przeciwnym razie są uzupełniane bitami
znaku.
Przykład:
a = 6
c = a << 2;
W tym przykładzie c będzie miało wartość 24, ponieważ a = 00000110, przesuwamy w lewo
o 2 czyli c = 00011000 a to jest liczba 24. Przy przesuwaniu liczby ze znakiem, należy
uważać aby nie zmienić bitu znaku na przeciwny. Taka zmiana jest spowodowana
kodowaniem liczby w kodzie uzupełnień do 2.
Operatory przypisania
Prosty operator przypisania: =
Złożone operatory przypisania: +=, -=, *=, /=, %=, <<=, >>=, &=, ^=, |=
Prosty operator:
• operand1 = operand2
- przypisanie wartości operandu2 operandowi1
Przykład
int a, b, c, d;
a = 12;
b = c = d = 5;
Złożone operatory:
Konstrukcja tych operatorów składa się z operatorów wcześniej poznanych i operatora
przypisania. Sposób korzystania z tych operatorów został przedstawiony na przykładzie
poniżej.
a += b + c
zastępuje zapis a = a + b + c
a *= b
zastępuje zapis a = a * b
17
Operatory porównania
Zachodzące relacje pomiędzy operandami określają operatory relacyjne. Operatory relacyjne i
relacje w języku C++:
• operand1 > operand2
- operand1 większy niż operand2
• operand1 < operand2
- operand1 mniejszy niż operand2
• operand1 <= operand2
- operand1 mniejszy równy od operandu2
• operand1 >= operand2
- operand1 większy równy operandu2
• operand1 == operand2
- operand1 równy operandu2
• operand1 != operand2
- operand1 różny od operandu2
Przykłady:
• if (a == b)
• if (a != b)
• if ((a > b) && (c <= d))
18
3. Przebieg ćwiczenia – zadania do wykonania
Wymagana znajomość zagadnień z ćwiczenia 1.
3.1. Przepisać przykład z ćwiczenia Inf_2_1 (punkt 2.4) (Pole i obwód koła) i uruchomić go.
3.2. Zmodyfikować program z zadania 3.1. tak, aby wartość zmiennej Promien była
wczytywana z klawiatury.
3.3. Zadeklarować dwie zmienne liczbowe, przypisać im wartości i wyświetlić wynik operacji
dodawania, odejmowania, mnożenia i dzielenia (z opisem co to za operacja).
3.4. Zmodyfikować zadanie z ćwiczenia 3.3 w taki sposób, aby liczby wczytywane były
z klawiatury.
3.5. Sprawdzić błędy przepełnienia np. dla zmiennych typu int (dla kompilatora Borland C++
Builder 6).
3.6. Napisz program, który wczytuje z klawiatury liczbę i podaje jej kwadrat, sześcian i
pierwiastek (użyć funkcji pow).
3.7.Napisz program, który sprawdza czy wprowadzona z klawiatury liczba jest z określonego
zakresu np. <-5, 10>. Wyświetlić odpowiedni komunikat.
3.8. Napisz program, który wyznacza największą i najmniejszą liczbę spośród trzech
podanych przez użytkownika wartości a, b, c.
3.9. Napisz program, który wyświetli trzy podane przez użytkownika wartości: a, b, c
w kolejności rosnącej (malejącej).
3.10. Napisać program do obliczania równania kwadratowego. Dane wczytywane są
z klawiatury.
19
3.11. Napisz program, który automatycznie wystawia ocenę w zależności od ilości
wpisanych z klawiatury punktów. Przykładowa zależność oceny od ilości zdobytych
punktów:
Zakres punktów
Ocena
<0, 60)
2
<60, 73)
3
<73, 86)
4
<86, 100>
5
Punkty mogą przyjmować wartości za zbioru liczb rzeczywistych.
3.12. Napisz program, który wykonuje operacje bitowe AND i OR na dwóch
wprowadzonych z klawiatury liczbach (z zakresu od 0 do 255) (deklaracja typu liczb
unsigned int). Utworzyć menu wyboru operacji tz. naciśnięcie klawisza 1 powoduje
obliczenie i wyświetlenie wyniku operacji AND, 2 – OR. Do tworzenia menu należy
użyć instrukcji switch.
3.13. Napisz program, który wykonuje bitową operację przesunięcia na liczbie
wprowadzonej z klawiatury (z zakresu od 0 do 255) (deklaracja typu liczb unsigned
int). Program pobiera dwie dane: liczbę i wartość przesunięcia (w lewo lub w prawo).
20
4.
Proponowana literatura:
- Robert Sedgewick, Algorytmy w C++, Wydawnictwo RM, Warszawa 1999,
- Harvey M. Dietel, Paul J. Dietel, Arkana C++: programowanie, Wydawnictwo RM,
Warszawa, 1998,
- Nabajyoti Bakarati, Biblia Turbo C++, LT & P, Warszawa, 1993,
- P. J. Plauger, Biblioteka standardowa C++, WNT, Warszawa, 1997,
- Namir C. Shammas, Borland C++ 4 kurs na zderzenie: [najszybszy sposób nauki
programowania !]
, Intersoftland, Warszawa, 1995,
- Piotr Metzger, C++: pierwsze kroki, Helion, Gliwice, 1994,
- Jesse Liberty, C++: ksiega eksperta, Helion, Gliwice 1999,
- Tony L. Hansen, C++: zadania i odpowiedzi, WNT, Warszwa, 1994,
- Davis Stephen R., C++ dla opornych, Oficyna wydawnicza Read Me, Warszawa, 1995,
- Paul Snaith, C++ nie tylko dla orłów, Intersoftland, Warszawa, 2000,
- Adam Majczak, C++ w 48 godzin, Intersoftland, Warszawa, 1993,
- Tomasz Kopacz, Język C w praktyce: Turbo C i C++, Zakład Nauczania Informatyki
Mikom, Warszawa, 1993,
- Kisielewicz Jerzy, Język C w środowisku Borland C++, Oficyna wydawnicza Politechniki
Wrocławskiej, Wrocław, 1998,
- David Vandevoorde, Język C++; ćwiczenia i rozwiązania, WNT, Warszawa, 2001,
- Bjarne Stroustrup, Język C++, WNT, Warszawa 1994, 1995, 2000,
- Alan Neibauer, Języki C i C++: twój pierwszy program, Komputerowa Oficyna
Wydawnicza Help, Warszawa, 1995,
- Clovis L. Tondo, Bruce P. Lenug, Podstawy języka C++: ćwiczenia i rozwiązania, WNT,
Warszawa, 2001,
- Stanley B. Lippman, Podstawy języka C++, WNT, Warszawa, 1994, 1996, 2001,
- Adam Majczak, Praktyczne programowanie w C++, Intersoftland, Warszawa, 1996,
- Steven Holzner, Programowanie w Borland C++, Intersoftland, Warszawa, 1993,
- Andrzej Zalewski, Programowanie w językach C i C++ z wykorzystaniem pakietu
Borland C++, Wydawnictwo Nakom, Poznań, 1994, 1997, 1998,
- Paweł Chomicz, Robert Ulijasz, Programowanie w jezyku C i C++, Wydawnictwo PLJ,
Warszawa, 1992,
- Kris Jamsa, Wygraj z C++, Zakład Nauczania Informatyki Mikom, Warszawa, 1996,
- Conor Sexton, Język C++ to proste, Wydawnictwo RM, Warszawa, 2001,
21
- Alan R. Neibauer, Języki C i C++. Twój pierwszy program, Komputerowa Oficyna
Wydawnicza HELP, Warszawa, 1995,
- Wiesław Porębski, Programowanie w języku C++, Komputerowa Oficyna Wydawnicza
HELP, Warszawa, 2001,
-
Adam Majczak, C++ dla licealistów i studentów, Wydawnictwo Translator S.C.,
Warszawa, 2003.