Inf 2 2 id 212904 Nieznany

background image

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.

background image

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.

background image

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;

background image

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>

background image

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;

}

background image

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++.

background image

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 ";

background image

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;

}

background image

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;

background image

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;

}

background image

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";

background image

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.

background image

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

background image

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.

background image

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

background image

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

background image

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))

background image

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.

background image

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).

background image

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,

background image

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.


Wyszukiwarka

Podobne podstrony:
inf 2 id 212896 Nieznany
M INST inf s id 274726 Nieznany
inf 1 4 id 212899 Nieznany
inf 2 id 212896 Nieznany
inf kw bis id 212922 Nieznany
el inf 11 part05 fale02 id 1572 Nieznany
Inf kp wyd V id 212921 Nieznany
Inf Lab02 id 212934 Nieznany
Inf testy1112 id 212971 Nieznany
el inf 11 part06 faleEM id 1572 Nieznany
inf kw bis id 212922 Nieznany
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany

więcej podobnych podstron