Podrecznik 2 - Podstawy Programowania
Download
Report
Transcript Podrecznik 2 - Podstawy Programowania
PRACA DYPLOMOWA
Temat: Elektroniczna książka dla Szkoły Policealnej
WYKONAŁY : Małgorzata Molik
Ewa Mielczarek
Nina Woźniak
Radomsko 2006
Promotor : mgr inż . Piotr Żak
SPIS TREŚCI
1.Wstęp......................................................3
2.Klocki Eli...........................................4-66
3.Grafika.............................................67-93
4.Język C++.....................................94-119
5.Podsumowanie....................................120
6.Bibliografia.........................................121
WSTĘP
Multimedialna pomoc dydaktyczna , powstała na skutek potrzeby
stworzenia materiałów pomocniczych do nauki przedmiotu podstawy
programowania , wybrane techniki programowania oraz zarządzania bazą
danych . W erze dostępu bezpośredniego do informacji jest to nowa jakość
pozwalająca w szybszy sposób dotrzeć do wybranych materiałów . Książka
elektroniczna jest opublikowana na stronie www.poi.zse-e.edu.pl
CZĘŚĆ I
KLOCKI ELI
Wstecz
Dalej
Klocki Eli
Wstecz
Dalej
Początek algorytmu
Więcej informacji
Wstecz
Dalej
Koniec algorytmu
Więcej informacji
Wstecz
Dalej
Wprowadzenie danej
Więcej informacji
Wstecz
Dalej
Wyprowadzenie wyniku
Więcej informacji
Wstecz
Dalej
Wykonanie obliczeń
Więcej informacji
Wstecz
Dalej
Sprawdzenie warunku
Więcej informacji
Wstecz
Dalej
Zapis do tablicy
Więcej informacji
Wstecz
Dalej
Odczyt z tablicy
Więcej informacji
Wstecz
Dalej
Początek procedury
Więcej informacji
Wstecz
Dalej
Wywołanie procedury
Więcej informacji
Wstecz
Dalej
Koniec procedury
Więcej informacji
Wstecz
Dalej
Początek metody
Więcej informacji
Wstecz
Dalej
Wywołanie metody
Więcej informacji
Wstecz
Dalej
Deklaracja zmiennych lokalnych
Więcej informacji
Wstecz
Dalej
Deklaracja zmiennych
globalnych
Więcej informacji
Wstecz
Dalej
Start zegara
Więcej informacji
Wstecz
Dalej
Oczekiwanie na zegar
Więcej informacji
Wstecz
Dalej
Początek konstruktora
Więcej informacji
Wstecz
Dalej
Wywołanie konstruktora
Więcej informacji
Wstecz
Dalej
Początek destruktora
Więcej informacji
Wstecz
Dalej
Zapis na taśmę
Więcej informacji
Wstecz
Dalej
Odczyt z taśmy
Więcej informacji
Wstecz
Dalej
Przewinięcie taśmy
Więcej informacji
Wstecz
Dalej
Przesunięcie wskaźnika na
określoną pozycję
Więcej informacji
Wstecz
Dalej
Przepisanie z tablicy na taśmę
Więcej informacji
Wstecz
Dalej
Przepisanie z taśmy do tablicy
Więcej informacji
Wstecz
Dalej
Sygnał dźwiękowy
Więcej informacji
Wstecz
Dalej
Odegranie muzyki
Więcej informacji
Wstecz
Dalej
Wyświetlenie filmu
Więcej informacji
Wstecz
Dalej
LINIE
Linie są wykorzystywane do
tworzenia połączeń pomiędzy klockami.
Wstecz
Dalej
LINIE c.d.
- linia pionowa
- linia pozioma
- linia w prawo do góry
- linia w lewo do góry
- linia w prawo , w dół
- linia w lewo , w dół
Wstecz
Dalej
LINIE c.d.
- połączenie od lewej , linia w dół
- skrzyżowanie bez połączenia
- połączenie od prawej , linia w dół
- połączenie od prawej , linia w górę
- połączenie od lewej , linia w górę
- połączenie od prawej i lewej , linia w dół
Wstecz
- połączenie od prawej i lewej , linia w górę
Dalej
Początek algorytmu
Klocek od , którego rozpoczyna się wykonywanie algorytmu . Może być
tylko jeden taki klocek na planszy , również w przypadku , gdy projekt
składa się z kilku plansz .
Komunikat początkowy : Można umieścić co najwyżej trzy wiersze
komunikatu .
Wykonanie: Wyświetla komunikat (jeżeli był wprowadzony) i wymaga
potwierdzenia (OK) .
Wstecz
Dalej
Wykonanie obliczeń
Wykonuje kolejno obliczenia (zmienne uzyskują wartości) .
Lista wykonania : W jednym klocku można umieścić jednocześnie 32
wiersze tekstu(przejście do nowego wiersza następuje po naciśnięciu
klawiszy (Ctrl +Enter) . Każdy wiersz stanowi oddzielną operację
i ma postać przypisania Nazwa = Wyrażenie .
Zły format wiersza lub wyrażenia powoduje powstanie błędu wykonania .
Wstecz
Dalej
Sprawdzenie warunku
Rozgałęzienie algorytmu-kieruje wykonanie lewą lub prawą stroną .
Warunek : Warunek w postaci wyrażenia logicznego, w którym mogą
występować znaki relacji oraz łączniki logiczne or i and .
Brak warunku lub zła jego postać powoduje powstanie błędu wykonania .
Jeżeli jedno z wyrażeń ma nieokreśloną wartość , to warunek przyjmuje
wartość Fałsz .
Wstecz
Dalej
Wprowadzenie danej
Przypisuje zmiennej pobraną wartość .
Komunikat : Można umieścić co najwyżej trzy wiersze komunikatu .
Nazwa zmiennej : Nazwa zmiennej , której zostanie przypisana wartość
liczbowa wpisana podczas wykonywania tego klocka . Brak nazwy
zmiennej powoduje powstanie błędu wykonania .
Wykonanie : Otwiera okno dialogowe Wprowadzenie wartości .
Wstecz
Dalej
Wyprowadzenie wyniku
Wyświetla komunikat i obliczoną wartość wpisanego wyrażenia .
Komunikat : Można umieścić co najwyżej trzy wiersze komunikatu .
Wyrażenie : Wyrażenie, którego wartość jest obliczana i wyświetlana w chwili
wykonywania klocka ; w szczególności wyrażeniem tym może być wartość
liczbowa lub zmienna. Brak wyrażenia powoduje powstanie błędu
wykonania .
Wykonanie : Otwiera okno dialogowe Wyprowadzenie wartości wyniku .
Wstecz
Dalej
Odczyt z tablicy
Przypisuje zmiennej wartość odczytaną z pola tablicy .
Wiersz : Numer wiersza pola tablicy .
Kolumna : Numer kolumny pola tablicy .
Numer wiersza i kolumny określa adres elementu tablicy . Brak obydwóch
lub jednego z parametrów określających adres powoduje powstanie błędu
wykonania .
Nazwa zmiennej : Nazwa zmiennej, której jest przypisana wartość
odczytana z pola tablicy . Brak nazwy zmiennej powoduje powstanie
błędu wykonania .
Wstecz
Dalej
Zapis do tablicy
Wpisuje wartość do pola tablicy .
Wiersz : Numer wiersza pola tablicy .
Kolumna : Numer kolumny pola tablicy .
Numer wiersza i kolumny określa adres elementu tablicy. Brak obydwóch
lub jednego z parametrów określających adres powoduje powstanie
błędu wykonania .
Wyrażenie : Dowolne wyrażenie , którego wartość jest obliczana i
umieszczana w polu określonym przez pozycję . Brak wartości
powoduje powstanie błędu wykonania .
Wstecz
Dalej
Wywołanie procedury
Przejście do wykonywania procedury. Przekazanie sterowania do innej
planszy , na której opisana jest procedura .
Nazwa : Nazwa wywoływanej procedury .
Parametry : Lista parametrów aktualnych procedury , oddzielona spacjami .
Parametrami mogą być nazwy zmiennych i liczby .
Nazwa zmiennej : Nazwa zmiennej :- wypełnia się w przypadku procedury
przekazującej wartość .
Wstecz
Dalej
Początek procedury
Rozpoczyna wykonanie procedury .
Nazwa :Nazwa procedury .
Parametry: Lista zmiennych lokalnych przejmujących wartości parametrów
aktualnych.Różna liczba parametrów w klockach Wywołania procedury
i początek procedury powoduje wystąpienie błędu wykonania , podobnie jest
sygnalizowany błąd , gdy zamiast zmiennej w liście parametrów pojawia
się wyrażenie .
Wstecz
Dalej
Koniec procedury
Kończy procedurę i powoduje powrót do nadrzędnego algorytmu .
Wyrażenie : Wiersz , w którym jest podawana wartość przekazywana przez
procedurę;może zawierać wyrażenie arytmetyczne , w szczególności
wartość lub zmienną .W przypadku braku wartości pomimo podstawienia
przy wywołaniu jest sygnalizowany błąd wykonania . Jeżeli procedura nie
przekazuje wartości – pole to pozostaje niewypełnione .
Wstecz
Dalej
Deklaracja zmiennych globalnych
Współczynnik dla różnych plansz projektu .
Lista o maksymalnej długości 32 wierszy(2048 bajtów na opis) .
Lista zmiennych : Lista deklaracji zmiennych globalnych . Nazwy
zmiennych mogą znajdować się w jednym wierszu – muszą być wtedy
oddzielone odstępami lub przecinkami .
Wstecz
Dalej
Sygnał dźwiękowy i wyświetlenie
komunikatu
Sygnał dźwiękowy.
Komunikat : Można umieścić co najwyżej trzy wiersze komunikatu .
Wykonanie : Wyświetla komunikat,generuje sygnał dźwiękowy i wymaga
potwierdzenia (OK) .
Wstecz
Dalej
Przewinięcie taśmy
Ustawienie wskaźnika na początek , czyli na pierwsze pole taśmy .
Wstecz
Dalej
Przepisanie z tablicy na taśmę
Kopiowanie danych z tablicy do taśmy .
W polach edycji należy wpisać numer pierwszego i ostatniego wiersza
oraz kolumny kopiowanych elementów z tablicy oraz określić pozycję na
taśmie , na którą zostaną skopiowane elementy .
Wstecz
Dalej
Przepisanie z taśmy do tablicy
Kopiowanie danych z taśmy do tablicy .
W polach edycji należy wpisać numer pierwszego wiersza i kolumny z tablicy
, na którą zostaną skopiowane elementy .
Wstecz
Dalej
Przesunięcie wskaźnika na
określoną pozycję
Ustawienie wskaźnika na określonym polu taśmy .
Wyrażenie : wyrażenie określające pozycję pola , na które zostanie
przesunięty wskaźnik taśmy .
Brak wyrażenia w tym polu powoduje powstanie błędu wykonania .
Wstecz
Dalej
Odczyt z taśmy
Przypisanie zmiennej wartości elementu odczytanego z taśmy .
Nazwa zmiennej : Nazwa zmiennej,której jest przypisywana wartość
elementu odczytanego z pola taśmy wskazywanego przez wskaźnik ; po tej
operacji wskaźnik taśmy jest automatycznie przesuwany na następne
pole . W przypadku braku nazwy zmiennej następuje przesunięcie
wskaźnika o jeden element .
Brak nazwy zmiennej powoduje powstanie błędu wykonania .
Wstecz
Dalej
Zapis na taśmę
Zapisanie wartości na taśmie w polu,które wskazuje wskaźnik urządzenia .
Wyrażenie : wyrażenie , którego wartość jest obliczana i umieszczona
w polu wskazywanym przez wskaźnik taśmy-po tej operacji wskaźnik
taśmy jest przesuwany automatycznie na następne pole . Brak wyrażenia
powoduje powstanie błędu wykonania .
Wstecz
Dalej
Deklaracja zmiennych lokalnych
Deklaracja lokalnych zmiennych obiektu .
Klocek deklaracji zmiennych lokalnych,w obrębie obiektu .
Sposób użycia tak jak klocka zmiennych globalnych , jednak zmienne tu
zadeklarowane widoczne są tylko przez procedury obiektu
(konstruktor ,destruktor , metody) .
Lista zmiennych:Lista deklaracji zmiennych lokalnych.Nazwy
zmiennych mogą znajdować się w jednym wierszu – muszą być wtedy
oddzielone odstępami lub przecinkami .
Wstecz
Dalej
Początek metody
Definicja metody obiektu .
Klocek początku specjalnego typu procedury – metody obiektu .
Procedura powinna być zakończona klockiem powrotu z procedury .
Wstecz
Dalej
Wywołanie konstruktora
Wywołanie konstruktora obiektu .
Wstecz
Dalej
Wywołanie metody
Wywołanie metody obiektu .
Wstecz
Dalej
Wyświetlenie filmu
Klocek pozwalający na wyświetlenie sekwencji filmowej umieszczonej w
pliku .
Plik do odtwarzania:Nazwa pliku .
Przycisk Szukaj otwiera okno dialogowe Szukaj obrazu .
Wstecz
Dalej
Odegranie muzyki
Klocek pozwalający na odtworzenie dźwięku umieszczonego w pliku .
Klocek rozpoczyna generowanie dźwięku nie czekając na zakończenie
algorytmu (odtwarzanie odbywa się niezależnie czy algorytm
wykonywany jest w trybie pracy krokowej czy ciągłej) . Klocek wymaga
zainstalowania karty dźwiękowej .
Plik do odtwarzania : Nazwa pliku .
Przycisk Uruchom pozwala w czasie edycji klocka na odsłuchanie dźwięku .
Przycisk Szukaj otwiera okno dialogowe Szukaj dźwięku .
Wstecz
Dalej
Początek konstruktora
Definicja konstruktora obiektu :
Klocek początku specjalnego typu procedury-konstruktora
obiektu . Procedura powinna być zakończona klockiem powrotu z
procedury .
Wstecz
Dalej
Początek destruktora
Definicja destruktora obiektu :
Klocek początku specjalnego typu procedury-destruktora obiektu .
Procedura powinna być zakończona klockiem powrotu z procedury .
Wstecz
Dalej
Start zegara
Rozpoczęcie pomiaru czasu .
Nazwa zegara : Nazwa zegara,który zostaje uruchomiony w momencie
wykonania tego klocka .
Lista zegarów wymiennych w algorytmie nie jest ograniczona . Brak nazwy
zegara jest sygnalizowany jako błąd wykonania .
Wstecz
Dalej
Oczekiwanie na zegar
Zakończenie pomiaru czasu .
Nazwa zegara : Nazwa zegara,na który należy czekać . Brak nazwy zegara
lub nazwa niezgodna z nazwą jakiegokolwiek uruchomionego zegara jest
sygnalizowany jako błąd wykonania .
Czas w sekundach (wyrażenie) : czas oczekiwania od momentu uruchomienia
zegara w sekundach . Wartość ta może być podana w postaci wyrażenia .
Brak wartości jest sygnalizowany jako błąd wykonania .
Wstecz
Dalej
Koniec algorytmu
Wyświetla wpisany w nim komunikat ,
kończy wykonanie algorytmu . Algorytm może zawierać kilka takich
klocków .
Komunikat końcowy : Można umieścić co najwyżej trzy wiersze
komunikatu .
Wykonanie:Wyświetlany jest komunikat,jeśli jest niepusty – to wymaga
potwierdzenia (OK.) .
Wstecz
Dalej
CZĘŚĆ II
GRAFIKA
Wstecz
Dalej
Wiadomości wstępne
Uruchomienie programu
Aby wejść do programu należy uruchomić :
Dysk C:\ Borland C: \Bin:\ bc.exe
Kompilator
Wykrywa niektóre błędy popełnione przez programistę . Błędy te można porównać
do błędów ortograficznych i składniowych języka naturalnego . Nazywa się je
błędami kompilacji . Inny rodzaj błędów to błędy wykonania . Uruchomienie
kompilatora nazywamy procesem zmierzającym do zlokalizowania przyczyn i
usunięcia znanych błędów .
Kompilator uruchamiamy poprzez wciśnięcie klawiszy Ctrl + F9 .
Wstecz
Dalej
Wiadomości wstępne Cd.
Menu i okna edycyjne
Edytor ekranowy możemy uruchomić najeżdżając na c:\borlandc\bin\bc.exe pojawia się ok
edycyjne ,
gdzie u góry znajduje się menu .
Skróty klawiaturowe
File
New
- otwarcie nowego okna edycyjnego, którym możemy pisać
program
Open
- otwarcie już istniejącego pliku F3
Save
- nagranie programu F2
Save as - nagranie pod zmienioną nazwą
Save all - nagranie wszystkiego
Quit
- wyjście z programu Alt+x
Wstecz
Dalej
Wiadomości wstępne Cd.
Edit
Undo
- cofniecie ostatniego polecenia Alt+BkSp
Redo
- cofnięcie ostatniego cofnięcia Shift+Alt+BkSp
Cut
- uciąć zaznaczony fragment Shift+Del
Copy
- kopiowanie zaznaczonego fragmentu Ctrl+Ins
Paste
- położenie skopiowanego fragmentu w miejscu kursora Shift+Ins
Clear
- wyczyszczenie zaznaczonego
Search
Find
- szukaj
Replace
- zamień
Search again - szukaj ponownie Ctrl+L
Run
Run
- uruchom Ctrl+F9
Wstecz
Dalej
Wiadomości wstępne Cd.
Trace into - śledź program z wejściem w procedury F7
Step over - śledź program bez wchodzenia w procedury F8
Degug
Evaluate/modyfy - pozwala na obliczanie wyrażeń i modyfikacje zmiennych
Ctrl+F4
Watches/Add watch – dodanie zmienną do okienka, pozwala na śledzenie
wartości zmiennych
Window
Zoom -powiększenie okienka na cały ekran F5
Cascade -ustawienie wielu okienek kaskadowo
Til -umieszczenie okienek obok siebie
Next -przejście do następnego okienka F6
Close -zamknięcie okienka Alt+F3
Help
Pomoc – F1
Topic search (pomoc kontekstowa) - podpowiedź na temat polecenia, na którym
znajduje się kursor Ctrl+F1
Index- pojawia się lista poleceń Shift+ f1
Wstecz
Dalej
Tryby Graficzne
Funkcje zawarte w bibliotece Graphics, umożliwiają rozpoznawanie
środowiska graficznego, inicjowanie grafiki pikselowej i znakowej, przełączenie
między trybem graficznym i tekstowym, ustanawianie okienek graficznych
i tekstowych, a ponadto: wyprowadzanie tekstów, wykreślanie tekstów i wykreślanie
podstawowych obiektów graficznych .
Wstecz
Dalej
Tryby Graficzne Cd.
Tryb tekstowy
Wykonanie każdego programu rozpoczyna się w trybie tekstowym . Znaki
wyprowadzane na ekran mogą być białe na czarnym tle , czarne na białym
tle, migoczące i kolorowe . Wyprowadzenie znaków odbywa się za
pośrednictwem plików skojarzonych z konsolą .
Okienko tekstowe
Po rozpoczęciu wykonywania programu domniemanym okienkiem tekstowym
jest cały ekran . Lewy górny narożnik ekranu tekstowego ma współrzędne
(1,1) , a prawy dolny ma współrzędne (col , lin) gdzie col jest liczbą kolumn ,
a lin jest liczbą wierszy ekranu .
Wstecz
Dalej
Tryby Graficzne Cd .
LIGHTGREEN - jasnozielony (10)
LIGHTCYAN - jasnoturkusowy (11)
LIGHTRED
- jasnoczerwony (12)
LIGHTMAGENTA - jasnokarmazynowy (13)
YELLOW
- żółty (14)
WHITE
Wstecz
- biały (15)
Dalej
Tryby Graficzne Cd.
Dostępne kolory
BLACK - czarny (0)
BLUE - niebieski (1)
GREEN - zielony (2)
CYAN - turkusowy (3)
RED
- czerwony (4)
MAGENTA - karmazynowy (5)
BROWN
- brązowy (6)
LIGHTGRAY
- jasnoszary (7)
DARKGRAY - ciemnoszary (8)
LIGHTBLUE - jasnoniebieski (9)
Wstecz
Dalej
Tworzenie animacji przy użyciu
stron kart graficznych
Aby stworzyć animacje przy użyciu karty graficznej należy fazy ruchu
podzielić na 4 obrazki .
Każdy z obrazków należy umieścić na odpowiedniej stronie karty graficznej .
Numery kart i trybów mogą być wyrażone za pomocą następujących symboli .
Wstecz
Dalej
Różne tryby kart graficznych
Numery kart i trybów mogą być wyrażone za pomocą następujących symboli :
Symbol karty
CGA
MCGA
EGA
EGA64
EGAMONO
IBM8514
HERCMONO
Wstecz
- karta CGA {1}
- karta MCGA {2}
- karta EGA{3}
- karta EGA64 {4}
- karta EGAMONO {5}
- karta IBM8514 {6}
- karta HERCULES{7}
Dalej
Różne tryby kart graficznych Cd.
ATT400
VGA
PC3270
Symbol trybu
CGACO
CGAC1
CGAC2
CGAC3
CGAHI
Wstecz
- karta ATT400 {8}
- karta VGA {9}
- karta PC3270 {10}
- 320 x 200, paleta 0 {0}
- 320 x 200 , paleta 1 {1}
- 320 x 200 , paleta 2 {2}
- 320 x 200 , paleta 3 {3}
- 640 x 200 , 1 strona {4}
Dalej
Różne tryby kart graf Cd.
MCGAC0
MCGAC1
MCGAC2
MCGAC3
MCGAMED
MCGAHI
EGALO
EGAHI
EGA64LO
EGA64HI
EGAMONOHI
Wstecz
- 320 x 200 , paleta 0 {0
- 320 x 200 , paleta 1 {1}
- 320 x 200 , paleta 2 {2}
- 320 x 200 , paleta 3 {3}
- 640 x 200 , 1 strona {4}
- 640 x 480 , 1 strona {5}
- 640 x 200 , 16 kolorów , 4 strony {0}
- 640 x 350 , 16 kolorów , 2 strony {1}
- 640 x 200 , 16 kolorów , 1 strona {0}
- 640 x 350 , 4 kolory , 1 strona {1}
- 640 x 350 , 64 K na karcie , 1 strona {3}
256 K na karcie , 2 strony
Dalej
Różne tryby kart graficznych Cd.
HERCMONOHI
ATT400C0
ATT400C1
ATT400C2
ATT400C3
ATT400MED
ATT400HI
VGALO
VGAMED
VGAHI
PC3270HI
IBM8514LO
IBM8514HI
Wstecz
- 720 x 348 , 2 strony {0}
- 320 x 200 , paleta 0 {0}
- 320 x 200 , paleta 1 {1}
- 320 x 200 , paleta 2 {2}
- 320 x 200 , paleta 3 {3}
- 640 x 200 , 1 strona {4}
- 640 x 400 , 1 strona {5}
- 640 x 200 , 16 kolorów , 4 strony {0}
- 640 x 350 , 16 kolorów , 2 strony {1}
- 640 x 480 , 16 kolorów , 1 strona {2}
- 720 x 350 , 1 strona {0}
- 640 x 480 , 256 kolorów
- 1024 x 768 , 256 kolorów
Dalej
Inicjacja Grafiki
Aby skorzystać z grafiki musimy ją zainicjować .
# include <graphics. h>
main ()
{
int drive = DETECT, mode ;
initgraph (& drive, &mode , "") ;
instrukcje
}
int – jest to typ całkowity
drive – numer kart graficznych
DETECT – odszukaj
mode – w jakim trybie pracuje karta
Wstecz
Dalej
Deklaracje zmiennych
Na początku funkcji main powinny wystąpić deklaracje zmiennych takich
jak :
int – jest to podstawowy typ zmiennych (typ całkowity )
float – jest to deklaracja typu rzeczywistego
Program powinien kończyć się funkcją closegraph (); - czyli zamknięcie
grafiki.
Funkcją getch()- czeka na wciśnięcie klawisza , w tym czasie można
obejrzeć rysunek.
Wstecz
Dalej
Przykład deklaracji zmiennych
# include <graphics.h>
main()
{
ciąg poleceń
closegraph () ;
getch() ;
return 0 ;
}
Wstecz
Dalej
Podprogramy graficzne
Na początku programu musimy zainicjować grafikę .
initgraph (& driver, &mode, ” ” ) ;
Drive oraz mode są wartościami całkowitymi określające typ karty oraz tryb
pracy karty graficznej. Każdy program graficzny musi kończyć się
zamknięciem grafiki .
Wstecz
Dalej
Podprogramy Graficzne Cd.
Rodzaje podprogramów graficznych
line ( x1, y1, x2, y2 ) – funkcja ta rysuje linę prostą od punktów x1 , y1
do punktów x2 , y2 . Aby uzyskać wartości max x i y stosujemy funkcje :
getmaxx która zwraca rozdzielczość w poziomie dla karty VGA i wynosi 640
getmax,y , która zwraca współrzędną pionową wynoszącą 48 .
Wstecz
Dalej
Podprogramy graficzne Cd.
linerel – wykreślenie odcinka w linii prostej łączącego punkt
wyszczególniony przez kursor z punktem odległym od niego o delta x w
poziomie i delta y w pionie .
lineto – funkcja wykreśla linię prostą od współrzędnych kursora graficznego
do współrzędnych x , y podanych w nawiasach .
circle – okrąg, funkcja wymaga trzech argumentów , dwa pierwsze oznaczają
współrzędne środka , trzecia zaś promień np .
circle (x, y, r )
arc – wykreślenie łuku okręgu o środku w punkcje x , y I promieniu r.
Począwszy od α 1 a skończywszy na α 2, np .
arc (x, y, r, α 1 ,α 2 )
Wstecz
Dalej
Podprogramy graficzne Cd.
bar – wykreślenie słupka prostokątnego, którego przeciwległe wierzchołki
mają współrzędne x1 , y1 i x2 , y2
drawpoly – wykreślenie linii łamanej składającej się z ‘n’ punktów, których
współrzędne
(x, y) następują kolejno po sobie .
ellipse – funkcja wykreśla elipse o środku w punkcie x, y i półosiach xr oraz
yr począwszy od kąta α 1 a skończywszy na kącie α 2 .
rectangle – wykreślenie prostokąta, którego przeciwległe wierzchołki mają
współrzędne (x1, y1) lewy górny róg i (x2, y2) prawy dolny róg.
setcolor – wybranie numeru koloru do wykreślania linii . W nawiasach
umieszczamy argument , który oznacza kolor. Są to liczby z zakresu od 0 – 15
. Kolory w nawiasach wpisujemy dużymi literami .
setbcolor - zmiana koloru tła
Zmiana koloru tła na taki kolor związany z pozycją o numerze Color bieżącej
palety . Wyjątek : jeśli Color ==0, kolor tła zostanie zmieniony na czarny .
Wstecz
Dalej
Podprogramy Graficzne Cd.
floodfill – (x, y, granica) funkcja wypełnia zadanym wzorem wnętrza obszaru
obejmującego punkt o współrzędnych (x,y) , ograniczonego linią , której
numer jest określony przez granice .
setfillstyle – (styl, kolor ) , ustalenie standardowego wzoru wypełnienia
obszarów . Pierwszy parametr określa styl (od 0 –12 ) , drugi zaś kolor
wypełnienia .
setfillpattern – tworzenie własnego stylu
Wstecz
Dalej
Style tekstu w trybie graficznym
outtextxy - (midx , mid y , fname[style]); - funkcja wyświetla tekst
w trybie graficznym
zaczynając od punktu o współrzędnych x i współrzędnych y , trzecim
parametrem jest styl czcionki :
outtext (styl)
0 – poziomo
HORIZ_DIR
1 – pionowo VERT_DIR
Style
DEFAULT_FONT
0
TRIPLEX_FONT
1
SMALL_FONT
2
SANS_SERIF_FONT 3
GOTHIC_FONT
4
Wstecz
Dalej
Przykład stylu tekstu w trybie
graficznym
Program wypisze zadany tekst .
#include<conio.h>
#include<graphics.h>
#include<dos.h>
main()
{
int drive = EGA, mode = EGALO ;
int x, y ;
initgraph (&drive, &mode,””) ;
x=220 ;
y=50 ;
settextstyle (4,0,2) ;
outtextxy (x , y , „Mój program”) ;
getch() ;
return 0 ;
}
Tworzenie linii użytkownika
Funkcja ustawiająca rodzaj linii – getlinesettings (graphics.h)
getlinesettings – ujawnienie parametrów linii
void getlinesettinds ( struct linesettingstype * Linelnfo)
Przypisanie strukturze Linelnfo danej typu (struct linesettindstype) , określającej rodzaj ,
wzór i grubość linii .
System musi być w trybie graficznym . Typ (struct linesettingstype) jest zdefiniowany następu
struct linesettingstype
{
int linestyle ;
unsigned upattern;
int thickness ;
}
Wstecz
Dalej
Tworzenie linii użytkownika Cd.
Pole linestyle określa numar rodzaju linii . Jeśli numerem tym jest :
USERBIT_LINE to pole upattern określa wzór linii .
Pole thickness określa grubość linii .
Wartość danych przypisanych polom linestyle i thickness mogą być
wyrażone za pomocą symboli :
Wstecz
Dalej
Tworzenie linii użytkownika Cd.
Pole linestyle
SOLID_LINE –linia ciągła {0}
DOTTED_LINE – linia kropkowana {1}
CENTER_LINE – linia centrowana {2}
DASHED_LINE – linia przerywana {3}
USERBIT_LINE – linia zdefiniowana {4}
Pole thickness :
NORM_WIDTH - linia cienka {1}
THICK_WIDTH - linia pogrubiona {3}
Wstecz
Dalej
CZĘŚĆ III
JĘZYK C++
Wstecz
Dalej
Stałe , liczby , ciągi znaków
Stałe liczbowe można napisać w trzech systemach liczbowych :
dziesiętnym , oktalnym i heksadecymalnym . Wszystkie takie liczby
mogą być tylko liczbami całkowitymi .
Rodzaje liczb
Liczby dziesiętne pisze się normalnie , np . 0 , 15 , 50000 .
Liczby oktalne poprzedzone są zerem np . 041 , 077 .
Liczby heksadecymalne są poprzedzone znakami Ox lub OX , np.
. OxCOOO OXFF .
Pojedynczy znak przedstawia się w apostrofach np . ‘a’, istnieje
inny sposób zapisu znaku po kresce pochyłej umieszcza się liczbę
oktalną (w systemie ósemkowym będącą kodem znaku np . ‘\40’
reprezentuje znak spacji ,
‘\0’ reprezentuje znak o kodzie 0) .
Wstecz
Dalej
Ciągi znaków
W tym , zapisie otrzymanie kreski ukośnej po ‘\\’, apostrofu po ‘\” ,
a cudzysłowu po ‘\”” . Należy pamiętać, że zarówno ‘k’ jak ‘\016’ czy ‘\n’ są
zawsze jednym znakiem . Ciągi znaków zamyka się cudzysłowami np. „alfa” .
W ciągach znakowych można używać znaków specjalnych np. ‘’tekst \ n’ ’ .
Do każdego ciągu znakowego program dodaje na końcu znak ‘\0’ , który ma
sygnalizować jego koniec .
Wstecz
Dalej
Nazwa zmiennej
Czyli jej identyfikator , może składać się z liter , cyfr i znaku
podkreślenia, przy czym nie może zaczynać się od cyfry . Małe i wielkie litery
są różnymi znakami . Twórcy języka C++ nie określili jak może być
najdłuższa nazwa zmiennej - pozostawili swobodę decyzji twórcą
poszczególnych realizacji C++ .
Nazwa zmiennej nie powinna zaczynać się od: !, @, $, %, ^, &, *, (, ), _ , +,
.\.
W języku C++ pewna liczba słów została zastrzeżona – nie jest
dozwolone użycie któregokolwiek z tych słów jako identyfikatora w
programie .
Do słów zastrzeżonych, nazywanych też słowami kluczowymi , należą np .
wszystkie specyfikatory typu zdefiniowane pierwotnie .
Wstecz
Dalej
Typy danych – typy zmiennych
Zmienna jest obiektem, któremu można przypisywać wartości. Dana
przypisana do zmiennej będzie przez nią reprezentowana w programie.
Wstecz
Dalej
Typy danych
•
Typ
unsigned char
char
enum
unsigned int
short int
int
unsigned long
long
float
double
long double
Wstecz
Długość
8 bits
8 bits
16 bits
16 bits
16 bits
16 bits
32 bits
32 bits
32 bits
64 bits
80 bits
0
-128
-32,768
0
-32,768
-32,768
0
-2,147,483,648
3.4 * (10**-38)
1.7 * (10**-308)
3.4 * (10**-4932)
to
to
to
to
to
to
to
to
to
to
to
Dalej
Zakres
255
127
32,767
65,535
32,767
32,767
294,967,295
147,483,647
3(10**+38)
(10**+308)
(10**+4932)
Deklarowanie zmiennych
W zależności od typu danej, jaki zmienna będzie reprezentować ,
należy odpowiednio zadeklarować zmienną, np . :
short x – deklaracja zmiennej x typu short
int y - deklaracja zmiennej y typu int
Zadeklarowanie zmiennej wystarczy , aby można było jej przypisać
wartość w czasie trwania programu , jeśli nie zadeklarujemy danej a
będziemy jej używać to zostanie zasygnalizowany błąd .
Przypisanie wartości zmiennym
int a = 7 ;
char b = ’a’ ;
float c = 7.23 ;
long d = 7 ;
W ten sposób przypisujemy wartości zmiennych .
Wstecz
Dalej
Operator przypisania
Poniższy przykład obrazuje różne typy przypisania . Przypisanie polega na
nadaniu zmiennej wartości .
Wstecz
Dalej
Przykład przypisania wartości
zmiennym
/* przypisanie wartości zmiennym */
#include<stdio.h>
#include <conio.h>
main()
{
clrscr() ;
char v ;
int x,y;
unsigned z ;
y=7; z=0xc00; x=041 ;
z+=2;
/* z=z+2 */
z– =2;
/* z=z-(-2) */
x*=y;
/* x=x*y */
x/=2;
/* x=x/2 */
Wstecz
Dalej
Przykład Cd
y<<=1;
y>>=2;
v&=32;
v^=32;
v|=32;
x=y=z=041;
x=y=z='!';
getch();
return 0;
/* przesunięcie bitowe w lewo o1 */
/* przesunięcie bitowe w prawo o 2 */
/* v=v and 32 */
/* v=v xor 32 */
/* v=v or 32 */
/* x=041, y=041, z=041 (oktalnie) */
/* x=33, y=33, z=33 */
}
Wstecz
Dalej
Konwersja danych o różnych typach
W języku C można zmiennej jednego typu przypisać wartość innego typu ,
ten proces nazywa się konwersją typu .
Wstecz
Dalej
Przykład
// współpraca danych o różnych typach
#include<stdio.h>
#include<conio.h>
main()
{
clrscr() ;
char z ;
int x;
short bajt;
z= 'A‘ ; x=32 ; bajt=-1 ;
printf(” %d”, z+x+bajt) ;
getch() ;
return 0 ;
}
Wstecz
Dalej
Struktura Programu
Program w języku C++ składa się z funkcji . Jedna z tych funkcji main()
ma znaczenie szczególne . Kompilator wymaga, aby funkcja ta była
zdefiniowana w programie . Od niej, bowiem zaczyna się wykonanie
programu .
main()
{
instrukcje ;
}
Poniższy przykład obrazuje strukturę programu . Na początku
programu należy dołączyć biblioteki . Zawierają one funkcje , z których
będzie korzystał program .
Moduł iostream.h zawiera funkcję cin i cout , które są odpowiednie za
czytanie i wyświetlanie danych, iomanip.h zawiera funkcję setw(k)
odpowiedzialną za określenie szerokości wyświetlonego pola , conio.h
natomiast zawiera funkcję getch() , która czeka na naciśnięcie klawisza ,
umożliwiając nam obejrzenie wyników działania programu .
Wstecz
Dalej
Przykład
//program wczytuje dane, które później wyświetla na ekranie
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
main()
{
int a,b,k ;//deklaracja zmiennych całkowitych
clrscr() ; /*czyszczenie ekranu*/
cout<<”Podaj dane a=” ;
//wyświetlenie napisu Podaj dane a=
cin>>a ; //wczytanie wartości a
cout<<”Podaj b=”<<endl ; /*wyświetlenie napisu Podaj dane b= i
przejście do drugiej linii*/
cin>>b ; //wczytanie wartości b
k=5 ;
//przypisanie zmiennej k wartości 5
cout<<”a=”<<setw(k)<<a<<” b=”<<setw(10)<<b<<endl;
getch();
return 0;
}
Wstecz
Dalej
Wyprowadzenie danych na ekran
Funkcja printf()
Instrukcją , która wyprowadza dane na ekran jest funkcja printf() .
Pozwala ona na wyprowadzenie na ekran znaków i liczb w odpowiednich
formatach . Parametry funkcji można podzielić na dwie grupy , pierwsza to
format , według którego będą wyprowadzane dane umieszczone w drugiej
grupie .
Wzorce formatów wyprowadzają liczbę w postaci
%d – dziesiętnej
%o – oktalnej
%x – hexadecymalnej
%u – adresowej
%c – jeden znak
%s – wyprowadza ciąg znaków
Wstecz
Dalej
Przykład
Poniższy program pozwala zaobserwować działanie poszczególnych formatów.
#include<conio.h>
#include<studio.h>
main()
{
clrscr();
printf(“%d\n”, 12000) ;
printf(“%o\t(8)\n” ,255) ;
printf(“%6x\n”, 65535) ;
printf(“%u\n”, -1) ;
printf(“%7c\n”,’H’) ;
printf(“%-7c\n”,’H’) ;
printf(“%-10s%s\n”,”wielka”,”gra”) ;
printf(“%1.1s%1.1s%-2.1s…\n”,”ciąg”,”dalszy”,”nastąpi”) ;
printf(“a\bb\n”) ;
printf(“punkt\r1”) ;
printf(“\41”) ;
getch() ;
}
Wstecz
Dalej
Funkcja cout
Jest strumieniem wyjściowym , jest automatycznie otwierany z chwilą
uruchomienia programu . Do wstawienia danych do strumienia wyjściowego
wykorzystujemy operator << (podwójny znak mniejszości) . Należy jeszcze
zapamiętać , że wszystkie niezbędne prototypy są umieszczone w pliku
nagłówkowym iostream.h (należy go dołączyć przy pomocy dyrektywy #
include ) .
Wstecz
Dalej
Przykład
Poniższy program wczytuje i wyświetla dane
# include <iostream. h>
# include <iomanip. h>
# include <conio. h>
main()
{
int a, b, k ;
clrscr() ;
cout << “ podaj daną a= ” ;
cin >> a;
cout << „ podaj daną b= ”<< endl ;
cin>> b ;
k=5 ;
cout << ” a= ”<<setw(k)<<a<< “ b = ”<<setw(k)<< b<< endl ;
getch() ;
return 0 ;
}
Wstecz
Dalej
Wczytywanie danych z klawiatury
Funkcja Scanf()
Służy do wczytywania, pobierania danych z klawiatury i ma następującą
postać :
Scanf ( ” wzorzec ”, & zmienna ) ;
Do wcześniej zadeklarowanej zmiennej o nazwie „zmienna” zapisujemy
wartość , którą użytkownik poda z klawiatury . Przed nazwą zmiennej
występuje wzorzec konwersji . Określa on typy zmiennej, którą wczytujemy .
Wstecz
Dalej
Funkcja Scanf() Cd.
Typ zmiennej
Liczba całkowita
Liczba rzeczywista
Ciąg znaków
Pojedynczy znak
Deklaracja
int A ;
float B ;
char*C ;
char D ;
Wstecz
Wzorzec
%d
%f
%s
%c
Przykład
scanf (” %d ”, & A ) ;
scanf
(” %f ”, & float B ) ;
scanf (” %s ”, & char*C ) ;
scanf (” %c ”, & char D ) ;
Dalej
Funkcja Cin
W Języku C++ cin jest strumieniem wejściowym . Strumień ten jest
automatycznie otwierany z chwilą uruchomienia programu . Wstawienie
danych do strumienia wejściowego stosujemy operator >> ( podwójny
znak większości .
Należy jeszcze zapamiętać, że wszystkie niezbędne prototypy są umieszczone
w pliku nagłówkowym iostream.h (należy go dołączyć przy pomocy dyrektywy
# include ) .
Wstecz
Dalej
Przykład
#include<iostream.h>
void main(void)
{
int a, b, c;
cout<< “ Podaj wartość zmiennej a : ” ;
cin>>a ;
cout<< ” Podaj wartość zmiennej b : ”<<endl ;
cin>>b ;
cout<< ” a= ”<<a<<” b = ”<<b<<endl ;
}
Symbol endl oznacza koniec linii i powoduje przeniesienie kursora do linii
następnej .
Wstecz
Dalej
Operatory 2 argumentowe
Jeśli zmienna otrzyma wartość, to można tą wartość modyfikować przy użyciu
poniższych operatorów .
*
+
-mnożenie
- dodawanie
- -odejmowanie
/
-dzielenie
% -reszta z dzielenia
<< -przesunięcie bitów w lewo
>> -przesunięcie bitów w prawo
<
-mniejsze
> -większe
<=
-mniejsze równe
>=
-większe równe
= = -równe
!=
-różne
Wstecz
operatory arytmetyczne
operatory logiczne
Dalej
Operatory 2 argumentowe Cd.
^
- różnica symetryczna bitów
│
- suma bitów
&& - koniunkcja
operatory bitowe
║
- alternatywa
?:
- operator warunkowy
Wstecz
Dalej
Operatory 1 argumentowy
-a -operator zmiany znaku
!a -negacja logiczna
++a -preinkrementacja
a++ -postinkrementacja
--a -predekrementacja
a-- -postdekrementacja
Inkrementacja to podwyższenie wartości o jednostkę .
Dekrementacja to zmniejszenie wartości o jednostkę .
Post oznacza , że wartość zmiennej będzie zmieniona po operacji .
Pre oznacza , że wartość zmiennej będzie zmieniona przed operacją .
Język C jest bardzo zwięzły w swym zapisie co pozwala skrócić kod źródłowy , ale
jednocześnie można zagmatwać działanie programu .
Ważne jest to czy operator inkrementacji (dekrementacji) znajduje się przed czy po
argumencie , efekt działania programu będzie różny . Oto przykład :
a+=b++, a=a+b++ <=> a=a+b, b=b+1
++a+=b, a=++a+b <=> a=a+1, a=a+b
Wstecz
Dalej
Operator Sizeof
Innym operatorem jednoargumentowym jest Sizeof(int) podaje zajętej
pamięci przez typ danej umieszczonej w nawiasach np. :
Sizeof(int)=2 ,
Sizeof(short)=2 ,
Sizeof(float)=4 .
Wstecz
Dalej
Funkcja warunkowa
Operator warunkowy osiada trzy argumenty , ogólna postać wygląda
następująco
wartość = ((a>b) ? True : False)
lub
warunek
? wartość wyrażenia , jeżeli warunek jest prawdziwy
: wartość wyrażenia , jeżeli warunek jest fałszywy
Zmienna wartość może przyjąć jedną z dwóch wartości True albo False .
Zależy to od warunku (a>b) , jeśli jest prawdziwy to wartość = True , jeżeli jest
fałszywy to wartość = False .
wartość = (3 > 1 ? 4 : 2 )
wartość = 4
wartość = (3 < 1 ? 4 : 2 )
wartość = 2
Wstecz
Dalej
Przykład Funkcji warunkowej
// operator warunkowy
#include <iostream.h>
#include <conio.h>
main()
{
char wartość,k=32;
wartość=k == ' ' ? 'T': 'N';
cout<<wartość<<endl;
getch();
return 0;
}
powyższy program sprawdzi czy k==’ ‘ jeśli tak to przypisze zmiennej
wartość znak ‘T’ , jeśli nie to przypisze zmiennej wartość znak ‘N’ następnie
wyświetli ją na ekranie.
Wstecz
Dalej
Kolejność wykonywania działań
Wstecz
Dalej
Kolejność wykonywania działań Cd.
Wstecz
Dalej
Kolejność wykonywania działań Cd.
Wiązanie lewe oznacza , że operator najpierw potrzebuje wartości z lewej
strony , analogicznie wiązanie prawe oznacza , że operator potrzebuje
najpierw wartości z prawej strony .
W wyrażeniu (5-3)*6 mnożenie poczeka na wartość z lewej strony i dopiero
pomnoży wynik przez 6 .
Zbadajmy kilka przykładów dla różnych operatorów
A= 5*2*3+ 4/2/6
A= 2 +++ 3
A= !4 + – – 2
A= 4 + !2 +++ 3
Wstecz
Dalej
Instrukcja if ... else
Instrukcja warunkowa pozwala na kierowanie działaniem programu w
zależności od określonych warunków logicznych .
Ogólna postać instrukcji
if (wyrażenie)
instrukcja 1 ;
else
instrukcja 2 ;
Prawda w języku C jest to wartość różna od zera, natomiast fałsz jest
równy zero .
Dla if ... else tylko jedna z instrukcji zostanie wykonana . Program sprawdzi
wartość wyrażenia w nawiasach i jeśli będzie to prawda wtedy zostanie
wykonana instrukcja 1 , jeśli będzie to fałsz instrukcja 2 .
Jest to bardzo przydatne w sytuacjach , w których musimy dokonać
wyboru między różnymi drogami rozwiązywania problemu .
Wstecz
Dalej
Przykład
//program obrazuje zasadę działania
//instrukcji if ... else
#include <iostream.h>
main()
{
int a ;
cin>>a ;
if(a>0)
cout<< ” Podana liczba jest większa od zera” ; //jeśli warunek jest prawdziwy
else
cout<< ” Podana liczba jest mniejsza od 0 ” ; //jeśli warunek jest fałszywy
}
Powyższy program wczytuje wartość a i następnie sprawdza czy a jest większe od
zera , jeśli tak to wykonuje instrukcję pod if , jeśli nie to wykonuje instrukcję pod
else .
Wstecz
Dalej
Instrukcja Switch
Jest to instrukcja wyboru, z kilku możliwości wybieramy tylko jedną i w
zależności od tego przełączamy program do określonej instrukcji, stąd też
nazwa switch (przełącznik).
Wstecz
Dalej
Przykład instrukcji switch
#include<stdio.h>
#include<conio.h>
int main(void)
{
clrscr() ;
short nr_m ;
cout<< ”podaj nr miesiąca ” ;
cin>>nr_m
switch(nr_m)
{
Wstecz
Dalej
Instrukcja break i continue
Program wczyta wartość nr_m i w zależności od podanej wartości wyświetl
nazwę miesiąca . Każda inna wartość spoza zakresu spowoduje pojawienie się
napisu „nie ma takiego miesiąca”, jest za to odpowiedzialna opcja default .
Instrukcja break powoduje zatrzymanie instrukcji switch , w miejscu wystąpi
break gdyby to pominąć zostaną wyświetlone wszystkie miesiące poniżej
wczytanego miesiąca .
Instrukcja BREAK – Jej działanie polega na przerwaniu wykonywania
określonej instrukcji strukturalnej switch , for , while i do… while oraz przejściu
do wykonywania następnej instrukcji po nich występującej .
Instrukcja CONTINUE – ma akurat odwrotny kierunek ucieczki w stosunku do
break . Powoduje bowiem wyjście z pętli for, while lub do…while , ale do
początku . Wznawia więc wykonywanie instrukcji powtarzania .
Wstecz
Dalej
Pętle
Pętla polega na wykonywaniu tych samych czynności w kółko tak długo jak
długo jest spełniony określony warunek. Trzy najczęściej wykorzystane pętle
to:
WHILE,
DO...WHILE,
FOR.
Wstecz
Dalej
Pętla While
WHILE (wyrażenie)
{
instrukcje;
}
Działanie pętli jest następujące, najpierw sprawdzana jest wartość wyrażenia
w nawiasach i jeśli jest prawdą (różna od zera) to wykonywana jest instrukcja. Je
wyrażenie jest fałszywe wtedy kończy się działanie pętli. Ilość obrotów pętli nie jes
góry znana,
zależy to od wartości wyrażenia. Może się zdarzyć, że pętla nie wykona się ani ra
przy zerowej wartości w nawiasie.
Wstecz
Dalej
Przykład Pętli While
//program sumuje wczytane liczby
//aż napotka zero,
#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
main()
{
int a,suma=0;
while((cin>>a),a!=0)
{
cout<<”a=”<<a<<endl;
suma+=a;
cout<<”suma=”<<suma<<endl;
}
return 0;
}
Wstecz
Dalej
Pętla Do...
Jej działanie jest nieco inne od WHILE różnica polega na tym, że najpierw
jest wykonywany ciąg instrukcji a potem sprawdzana wartość.
Ta cecha powoduje, że pętla DO...WHILE wykona się przynajmniej raz.
DO
{
instrukcje;
}
WHILE(wyrażenie);
Wstecz
Dalej
Przykład Pętli Do...
Poniższy program wypisuje na ekranie liczby od zera do dziewięciu.
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
clrscr();
int k=0;
do
cout<<k++<<endl;
while(k<10);
}
Wstecz
Dalej
Pętla For
Jest inna od pozostałych, główną różnicą jest to , że ilość obrotów pętli jest
ściśle określona przez warunek wewnątrz nawiasów.
FOR(i=0;i<10;i++)
{
instrukcje;
}
Parametry w nawiasie oznaczają:
i=0 początkowa wartość parametru i
i<10 warunek który określa koniec pętli,
i++ określa o ile ma się zmieniać parametr i, w tym wypadku jest to 1.
Instrukcja wewnątrz pętli wykona się dokładnie 10 razy.
Wstecz
Dalej
Przykład pętli for
//operator warunkowy
#include<iostream.h>
#include<conio.h>
Main()
{
clrscr();
short i;
for(i=1;i<11;i++)
cout<<i<<endl;
getch();
return 0;
}
Wstecz
Dalej
Przykład Cd.
case 1: cout<<”styczeń”) ; break ;
case 2: cout<<”luty”) ; break ;
case 3: cout<<”marzec”) ; break ;
case 4: cout<<”kwiecień”) ; break ;
case 5: cout<<”maj”) ; break ;
case 6: cout<<czerwiec”); break ;
case 7: cout<<”lipiec”) ; break ;
case 8: cout<<”sierpien”) ; break ;
case 9: cout<<”wrzesien”) ; break ;
case 10: cout<<”pazdziernik”) ; break ;
case 11: cout<<”listopad”) ; break ;
case 12: cout<<”grudzien”) ; break ;
default: cout<<”nie ma takiego miesiąca”) ;
}
getch();
return 0;
Wstecz
Dalej
Funkcje
Funkcje są to odrębne kawałki, z których można poskładać cały
program, mają tą zaletę, że definiuje się je tylko raz a można wiele razy
wywołać, zmniejsza to kod źródłowy
Programu
Program staje się łatwiejszy w sprawdzaniu. Raz napisaną funkcję można
wykorzystać w innych programach.
Definicja funkcji musi zawierać:
-typ danej zwracanej przez funkcję
- nazwę funkcji
-w nawiasach typ i nazwę danych pobieranych przez funkcję
-ciało funkcji
Wstecz
Dalej
Przykład funkcji
float fun(char k, int b, float z)
{
z+=k-sqrt(b)/k ;
return (z*z) ;
}
Powyższa funkcja nazywa się fun, będzie zwracać wartość typu rzeczywistego
równa z*z
i pobierać trzy zmienne :
-zmienną k, która jest typu znakowego ,
- zmienną b typu całkowitego ,
- zmienną z typu rzeczywistego
Instrukcja return kończy działanie funkcji , jeśli podamy wyrażenie po return to
zostanie ono udostępnione w postaci wartości tej funkcji . Jeśli w ciele funkcji
nie ma instrukcji return , to wartość tej funkcji jest pomijana . Jeśli nie ma
oznaczenia typu danej , jaką funkcja zwraca to przyjmuje się typ (int) . Podobna
sytuacja zachodzi , jeśli nie podane są typy parametrów .
Wstecz
Dalej
Rekurencja
Polega na wywołaniu danej funkcji w jej treści . Rekurencja może być
bezpośrednia i pośrednia .
Rekurencja bezpośrednia zachodzi wtedy , gdy w tekście funkcji występuje
wywołanie jej samej . Natomiast z rekurencją pośrednią mamy do czynienia
wtedy , gdy tekst funkcji zawiera wywołanie funkcji , w wyniku działania
której następuje wywołanie danej funkcji .
Wstecz
Dalej
Przykład Rekurencji
# include <iostream.h>
# include <iomanip.h>
void main(void)
{
int i, nowa, max, pom[10];
// i – zmienna kontrolna
// nowa – aktualna liczba
// pom – tablica pomocnicza zawierająca liczodwrotn kolejności
// odczytanie wartości liczby
cout << ” podaj wartość liczby ” <<endl;
cin>>nowa;
i=0;
do
pom[i++]=nowa%10;
// następna cyfra
while ((nowa /=10)>0);
// nowa liczba
// wypisanie cyfr liczby
while (--i>=0)
cout<<setw(4)<<pom[i];
}
Wstecz
Dalej
Zmienne globalne i lokalne
Zmienne globalne są widoczne w całym programie , ich wartość
można odczytać w każdym zakątku programu jest to bardzo pomocne , gdy
korzystamy np. . ze stałych .
Dodatkową cechą tych zmiennych jest to , że są zerowane przy deklaracji .
Zmienne lokalne są widoczne tylko w obszarze funkcji, w której zostały
zadeklarowane, poza tą funkcją nie istnieją. W momencie deklaracji
otrzymują przypadkowe wartości.
Wstecz
Dalej
Przyklad
int k ;
//zmienna k jest typu
globalnego
main()
{
int b ;
cout<<a<<” ”<<b ;
}
//zmienna b jest typu lokalnego
Zjawiskiem, które może wystąpić między oboma typami zmiennych to zjawisko
przysłaniania . Jeśli nadamy zmiennej lokalnej i globalnej tą samą nazwę to zmienna
lokalna może zasłonić zmienną globalną i będzie dostępna jedynie zmienna lokalna .
Wstecz
Dalej
Tablice
Tablica jest to ciągły obszar pamięci , w którym możemy przechowywać
dane tego samego typu .
Deklaracja tablicy składa się z nazwy typu danych , jakie będzie
przechowywać , nazwy oraz wymiaru tablicy w nawiasach kwadratowych .
int tablica
Float dane[3]=
Char napis[3]={‘a’,’1’,’a’}
Char napis[4]=”ala”
Powyższe definicje deklarują tablice i jednocześnie przypisują im
wartości początkowe . Zadeklarowano dwie tablice o nazwie napis, jedna
zajmuje 3 pola, druga 4 , obie zawierają to samo . Różnica jednego pola
wynika z zapisu łańcucha znaków , który dopisuje do łańcucha znak końca
‘\0’, co zwiększa zarezerwowany obszar o jedno pole .
Wstecz
Dalej
Przykład
\\ użycie pętli do wypisania elementów tablicy
#include<conio.h>
#include<stdio.h>
#include<iostream.h>
char tab[3]={‘a’,’b’,’c’};
main()
{
short i;
clrscr();
for(i=0;i<3;i++)
cout<<tab[i];
getch();
}
Wstecz
Dalej
Wskaźniki
Oprócz zmiennych przechowujących dane typu całkowitego, znakowego,
rzeczywistego, istnieją jeszcze zmienne proste, którym można przypisać wskazywanie
danych.
Nazywają się zmiennymi wskazującymi lub wskaźnikami. Zmienna taka
przechowuje wartości, które są adresami w pamięci, pod którymi można znaleźć daną.
Wskaźnik jest adresem stąd zawsze powinien zajmować tyle samo miejsca (2 bajty)
niezależnie od tego jaka dana wskazuje.
Wstecz
Dalej
Operator adresu
Operator adresu jest jednoargumentowy i może być użyty do otrzymania
adresu zmiennej w pamięci i jest to ”&”. Może on być użyty do otrzymania
adresu zmiennej
w pamięci. Np.:
main ()
{
int z;
z=33;
printf (” %x ”, & z);
/* start */
/* deklaracja zmiennej */
/* wydruk adresu
zmiennej w pamięci */
}
Wstecz
Dalej
Operator wydobycia
Jest jednoargumentowy i czyni dokładnie odwrotnie niż operator adresu tzn.
mając adres powoduje odczyt zawartości, która znajduje się pod tym adresem.
Oznaczamy go „*”. Jego argumentem może być tylko adres.
Wstecz
Dalej
Działania na wskaźnikach
Wskaźniki są adresami, więc wydaje się możliwe podwyższać je i obniżać
powodując zmiany wskazań.
Przykład
main ()
{
char *nazwisko;
nazwisko=” KOWALSKI”;
}
Zmienna nazwisko jest adresem pierwszego znaku w ciągu „ KOWALSKI \ 0 ”.
Jeśli ten znak ma być udostępniony, to używa się operatora wydobycia. Dlatego
*nazwisko reprezentuje znak ‘K’. Jeśli podwyższymy wskaźnik przez np.
nazwisko+ = 1, to zmienna nazwisko wskazuje znak ‘O’ , a wyrażenie *nazwisko
jest tymże znakiem.
Wstecz
Dalej
Łańcuchy znakowe i wskaźnik
W języku C++ teksty przechowuje się w tablicach typu char. Jest to typ
umożliwiający zapamiętanie jednego znaku, a w tablicy możemy zapamiętać
dowolnie długi tekst w postaci łańcucha znaków. Zwróćmy uwagę, że
inicjując tablicę łańcuchem znaków, używamy znaku cudzysłowu (” ”), a
przy zapisywaniu pojedynczego znaku wykorzystujemy znak apostrofu (‘ ’).
W znakach cudzysłowu występuje stała tekstowa, a w apostrofach stała
znakowa (dla stałych tekstowych kompilator automatycznie dodaje znak
kończący ‘0’).
Wstecz
Dalej
Funkcje znakowe
Dołączenie pliku nagłówkowego string.h przy pomocy dyrektywy procesora
#include <string.h>
daje możliwość korzystania z wielu funkcji wykonujących operacje
na tekstach . .
.
funkcja strlen() - liczy długość tekstu
Wstecz
Dalej
Przykład Funkcji strlen()
#include <stdio.h>
#include <string.h>
int main(void)
{
char *string = "Borland International„ ;
printf("%d\n", strlen(string)) ;
return 0 ;
}
Wstecz
Dalej
Funkcje znakowe Cd
funkcja strcmp() - porównuje dwa teksty
Wstecz
Dalej
Przykład funkcji strcmp()
#include <string.h>
#include <stdio.h>
int main(void)
{
char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc„ ;
int ptr ;
ptr = strcmp(buf2, buf1) ;
if (ptr > 0)
printf("buffer 2 is greater than buffer 1\n") ;
else
printf("buffer 2 is less than buffer 1\n") ;
ptr = strcmp(buf2, buf3) ;
if (ptr > 0)
printf("buffer 2 is greater than buffer 3\n") ;
else
printf("buffer 2 is less than buffer 3\n") ;
return 0 ;
}
Wstecz
Dalej
Funkcje znakowe Cd
funkcja strcpy() – dokonuje kopiowania tekstów
Przykład
#include <stdio.h>
#include <string.h>
int main(void)
{
char string[10] ;
char *str1 = " abcdefghi „ ;
strcpy(string, str1) ;
printf("%s\n", string) ;
return 0 ;
}
Wstecz
Dalej
Struktury
W języku C++ można tworzyć bardziej złożone struktury danych , do
których zaliczamy struktury oraz unie .
W strukturach mogą być przechowywane elementy różnego typu ,które
nazywamy polami .
Strukturę tworzymy , podając ze słowem kluczowym struct nazwę struktury,
następnie w nawiasach klamrowych deklaracje pól .
Oto przykład definicji struktury .
struct data
{
int dzień ,
miesiąc ,
rok ;
char miejsce[20] ;
};
Wstecz
Dalej
Struktury Cd.
W powyższej deklaracji struktury są cztery pola o nazwach: dzień, miesiąc, rok
oraz miejsce.
Trzy pierwsze pola są typu int, a ostatnie to tablica znaków.
Deklaracja struktury data wprowadza nowy typ danych. Zmienne tego typu
deklarujemy analogicznie jak inne zmienne.
Wstecz
Dalej
Struktury Cd.
Poniższy program obrazuje zastosowanie struktury, której wartość jest
przypisywana
w momencie deklaracji
struct
/* deklaracja struktury z przypisaniem wartości jej polom składowym*/
{
char ulica [8];
int nr_domu;
/* zajętość równa 10 bajtów*/
}
f={‘s’, ’z’, ’e’, ’r’, ’o’, ’k’, ’a’,’\ 0,4};
main()
{
printf (” %d ”, f. nr. domu);
printf (” %c ”, f. ulica [2] );
}
Wstecz
Dalej
Unie
Podobnie jak struktura, unie definiuje typ strukturalny zawierający kilka
pól, z tą różnicą, że można przypisywać wartość tylko jednej składowej unii.
Pozostałe pola nie są określone. A oto przykład definicji unii o nazwie unia1
zawierającej dwa pola.
union unia1
{
int a;
char b;
};
Zmienną un1 typu unia1 deklarujemy w zwykły sposób
unia1 un1;
Jeżeli przypiszemy pierwszemu polu pewną wartość np.:
un1.a=123;
to drugie pole nie jest określone, a gdy przypiszemy drugiemu polu pewna
wartość np.:
un1.b=’x’;
to pierwsze pole nie jest określone.
Wstecz
Dalej
Przykład Unii
Do wypełnienia jest ankieta składająca się z czterech rubryk: nazwisko, imię,
płeć i właśnie: jeśli ankietowany jest kobietą, to wpisuje nazwisko panieńskie,jeśli
zaś mężczyzną, to wpisuje stosunek do służby wojskowej. Nie ma potrzeby
przygotowywać pamięci na to, co wpisze kobieta lub
mężczyzna, gdyż z powodzeniem jedno pole wystarczy ( kobieta nie służy w wojsku,
a mężczyzna nie ma nazwiska panieńskiego).
Wstecz
Dalej
Przykład Unii-Cd.
struct
ankieta
{
char *nazwisko;
char *imię;
short płeć;
union
{
char *naz_pan;
short wojsko;
}
dane;
}
osoba;
Wstecz
/* etykieta struktury */
/* 2 bajty */
/* 2 bajty */
/* 1 bajt: 1- kobita, 0- mężczyzna */
/* brak etykiety unii */
/* 2 bajty */
/* 1 bajt: 0- przedpob., 1- rez. */
Dalej
Dołączanie pliku # include
Przed uruchomieniem kompilatora zawsze jest wywoływany preprocesor , który
przetwarza wiersze programu rozpoczynające się znakiem # . Taki wiersz nazywamy
dyrektywą preprocesora .
Podstawową dyrektywą preprocesora jest # include , umożliwiająca włączenie do
programu pliku o podanej nazwie. Ma ona dwie postacie :
# include <nazwa>
lub
# include ” nazwa ”
Jeżeli nazwa pliku (nazwa ) jest umieszczona w nawiasach kątowych , to oznacza, że
jest to plik nagłówkowy dostępny w systemie C++ . Natomiast jeżeli nazwa pliku jest
podana w cudzysłowie , to jest to plik zdefiniowany przez użytkownika .
Na zakończenie podkreślmy , że dyrektywy preprocesora nie kończą się
średnikiem tak jak instrukcje w języku C++ ( końcem dyrektywy jest koniec wiersza) .
Wstecz
Dalej
Praca z plikami (zapis , odczyt)
Plik pełni w C++ właściwie jedną rolę : określa zasięg pliku
tzn. zasięg dla globalnych funkcji oraz globalnych zmiennych . Plik
jest także tradycyjnie jednostką pamięci i jednostką kompilacji .
Skoro plik jest jednostką kompilacji , to po wprowadzeniu do niego
jakiejkolwiek zmiany , trzeba cały plik ponownie kompilować . Aby w
języku C++ wykonać pewne operacje na plikach należy utworzyć
obiekt odpowiedniej klasy . I tak , aby czytać zawartość pliku
niezbędny jest obiekt klasy ifstream , do pisania musimy dysponować
obiektem klasy ofstream , a do wykonania operacji zapisu lub
odczytu musimy utworzyć obiekt klasy fstream . Wymienione klasy
będą dostępne dopiero po dodaniu do programu dyrektywy :
#include <fstream.h>
Wstecz
Dalej
Przykład zapisu danych do pliku
#include<fstream.h>
#include<string.h>
void main (void)
{
char nazwa [ 100 ], x[ 100 ], y[ 100 ] ;
int a ;
cout<<” Podaj nazwa pliku ”<<endl ;
cin>>nazwa ;
// utworzenie obiektu klasy ofstream
ofstream plik_dane (nazwa) ;
if ( ! plik_dane )
Wstecz
Dalej
Przykład Cd.
{
cout<< ” Pliku nie można otworzyć ” <<endl ;
return ;
}
strcpy ( x , ”abc”) ;
strcpy ( y , ”xyz”) ;
a = 100 ;
// zapis danych do pliku
plik_dane << x << ” ”<< a << ” ” << y << endl ;
// zamknięcie pliku
plik_dane. close() ;
}
Wstecz
Dalej
Podsumowanie
Dynamiczny rozwój języków programowania zmusza do aktualizacji
książki, po to aby przedstawiała rzeczywisty stan wiedzy. Dlatego
proponujemy aby nie skupiać się wyłącznie na tej pracy, ale uzupełniać
wiedzę poprzez dostępne media.
Wstecz
Dalej
Bibliografia
1.www.poi.zse-e.edu.pl
2.www.wikipedia.pl
3. www.infogim10.republika.pl/eli.html
4. Anna Struzińska-Walczak, Krzysztof Walczak” Nauka programowania dla
początkujących.C++” Wyd.W&W.Warszawa.1999 rok.