Aktualizacja: 23.06.2005  Wersja: 0.4.48
Szukaj ::..
Temat ::..

..:: HOME ::..

  ::..:: INTERNETOWY SERWIS PROGRAMISTYCZNY ::..::

 

 

LEKCJA 5

LEKCJA 5 - DZIAŁANIA PRZY POMOCY MYSZKI I BŁĘDY W PROGRAMIE. 
________________________________________________________________ 
Z tej lekcji dowiesz się, 
* Jak posługiwać się myszką w środowisku IDE (DOS) 
* O czy należy pamiętać, przy tworzeniu i uruchamianiu 
programów. 
* Jak poprawiać błędy w programie. 
________________________________________________________________ 


Zanim będzie można kontynuować eksperymenty, trzeba coś zrobić, 
by robocze okno edytora było puste. Aby otworzyć takie nowe 
puste okno edytora należy: 

* Rozwinąć menu File; 
* Wybrać z menu rozkaz New (nowy). 

Na ekranie monitora otworzy się nowe puste okno zatytułowane 
"NONAME00.CPP", "NONAME01.CPP", itp (lub "bez nazwy" i o 
kolejnym numerze). Różne edytoro-podobne aplikacje mają zwyczaj 
otwierania okna dla nowego pliku tekstowego i nadawanie mu na 
początku jednej z dwóch nazw: 

[S] SŁOWNICZEK: UFO w trybie Edycji 
________________________________________________________________ 
Untitled - niezatytułowany 
Noname - bez nazwy 
(Tak na marginesie UFO to skrót od Unidentified Flying Object - 
Niezidentyfikowany Obiekt Latający, gdy przejdziemy do 
programowania obiektowego, znajomość tego terminu też Ci się 
przyda). 
________________________________________________________________ 

Nadanie plikowi dyskowemu z tekstem źródłowym programu jego 
właściwej nazwy i zapisanie go na dysku stałym komputera w 
określonym miejscu następuje w tym momencie, kiedy po napisaniu 
programu zapisujesz go na dysk rozkazem: 

File | Save lub File | Save As... 

Zapis File | Save oznacza "Rozkaz Save z menu File". Gdy po 
opracowaniu programu rozwiniesz menu File i wybierzesz rozkaz 
Save as... (zapisz jako...), pojawi się okienko dialogowe "Save 
File as" (zapis pliku jako...). 

Do okienka edycyjnego "Name" (nazwa) możesz wpisać nazwę, którą 
chcesz nadać swojemu nowemu programowi. Zwróć uwagę, że możesz 
podać nazwę pliku i jednocześnie wskazać miejsce - np.: 

Name: 
F:\USERS\ADAM\PROBY\PROGRAM.CPP 

Po wpisaniu nazwy naciśnij klawisz [Enter] lub wybierz klawisz 
[OK] w okienku dialogowym myszką. Tytuł okna edytora zmieni się 
na wybraną nazwę. 

Możesz również (jeśli odpowiedni katalog już istnieje), wskazać 
właściwy katalog w okienku z listą "Files" i dwukrotnie 
"kliknąć" lewym klawiszem myszki. 

Możesz wskazać myszką okienko edycyjne i nacisnąć lewy klawisz 
myszki, bądź naciskać klawisz [Tab] aż do momentu, gdy kursor 
zostanie przeniesiony do okienka edycyjnego. Okienko edycyjne to 
to okienko, do którego wpisujesz nazwę pliku. W okienku 
edycyjnym (Save File As) naciskaj klawisz [BackSpace] aż do 
chwili skasowania zbędnej nazwy pliku i pozostawienia tam tylko 
ścieżki dostępu - np. A:\PROBY\. Wpisz nazwę programu - np. 
PROG1.CPP. Po wpisaniu nazwy możesz nacisnąć [Enter] lub wskazać 
myszką klawisz [OK] w okienku i nacisnąć lewy klawisz myszki. 
Jeśli tak zrobisz w przypadku pustego okienka NONAME00.CPP - 
kompilator utworzy na dysku we wskazanym katalogu plik o zadanej 
nazwie - np. A:\PROBY\PROGR1.CPP (na razie pusty). Zmieni się 
także nagłówek (nazwa) okienka edycyjnego na ekranie roboczym. 

[!!!]UWAGA. 
________________________________________________________________ 
Wszystkie pliki zawierające teksty programów w języku C++ 
powinny ˙mieć charakterystyczne rozszerzenie *.CPP (CPP to skrót 
od C Plus Plus), lub .C. Po tym rozszerzeniu rozpoznaje te 
programy kompilator. Nadanie rozszerzenia .C lub .CPP może 
dodatkowo wpływać na sposób kompilacji programu. Zanim wyjaśnimy 
te szczegóły, będziemy zawsze stosować rozszerzenie .CPP. 
Wszelkie inne rozszerzenia (.BAK, .TXT, .DEF, itp.) nie 
przeszkadzają w edycji i kompilacji programu, ale mogą w 
niejawny sposób wpłynąć na sposób kompilacji. 
________________________________________________________________ 

Jeśli masz puste robocze okno edytora - możesz wpisać tam 
swój własny nowy program. Wpisz: 

void main(void) 

Każdy program w C++ składa się z instrukcji. Wiele takich 
instrukcji to wywołania funkcji. W C++ rozkaz wywołania i 
wykonania funkcji polega na wpisaniu nazwy funkcji (bez żadnego 
dodatkowego słowa typu run, execute, load, itp.). Tych funkcji 
może być w programie jedna, bądź więcej. Tworzenie programu w 
C++ z zastosowaniem funkcji (takich jakgdyby mini-programików) 
przypomina składanie większej całości z klocków. 

Należy podkreślić, że: 

każdy program w C++ musi zawierać funkcję main() (ang. main - 
główna). 

Wykonanie każdego programu rozpoczyna się właśnie od początku 
funkcji main(). Innymi słowy - miejsce zaznaczone w programie 
przy pomocy funkcji main() to takie miejsce, w które komputer 
zagląda zawsze na początku wykonania programu i od tego właśnie 
miejsca rozpoczyna poszukiwanie i wykonywanie rozkazów. 


[S] Entry Point
___________________________________________________________________
Punkt wejścia do programu nazywa się:
Program Entry Point
Taki właśnie punkt wejścia wskazuje słowo main().
Punk wejścia mogą mieć nie tylko programy .EXE ale także biblioteki
(.DLL - dynamicznie dołączanie biblioteki).
____________________________________________________________________


Każda funkcja powinna mieć początek i koniec. Początek funkcji w 
C/C++ zaznacza się przez otwarcie nawiasów klamrowych { a koniec 
funkcji poprzez zamknięcie } . Początek głównej funkcji main() 
to zarazem początek całego programu. Zaczynamy zwykle od 
umieszczenia w oknie edytora C++ znaków początku i końca 
programu. 

main()
{
<-- tu rozbudowuje się tekst programu
}

Najpierw naciśnij [Enter] i przejdź do początku nowej linii. 
Umieść w tej nowej linii znak początku programu - nawias { (lewy 
nawias klamrowy). Następnie naciśnij [Enter] powtórnie i umieść 
w następnej linii prawy nawias klamrowy - }. 

[!!!] NAJPIERW Save !!! 
________________________________________________________________ 
Zanim jeszcze skończysz redagowanie programu i sięgniesz do 
klawiszy [Alt]+[R], pamiętaj, że przed próbami kompilacji i 
uruchomienia programu zawsze NAJPIERW należy zapisać program na 
dysk. Jeśli przy próbach uruchomienia coś pójdzie nie tak - masz 
pewność, że Twoja praca nie pójdzie na marne. Czasami przy 
próbach uruchamiania programów zdarza się, że błędy mogą 
spowodować zawieszenie komputera. Programista jest wtedy 
zmuszony do restartu komputera, przy wyłączeniu komputera to, co 
było tylko na ekranie i tylko w pamięci operacyjnej - niestety 
znika bezpowrotnie. 
________________________________________________________________ 

Aby zapisać tekst programu na dysk należy: 

* Wybrać z menu rozkaz File | Save As... albo 
* Nacisnąć klawisz funkcyjny [F2] (działa jak File | Save) 

Po wydaniu rozkazu Save możesz być pewien, że Twój program jest 
bezpieczny i komputer może się spokojnie "ZAWIESIĆ" nie czyniąc szkody. 
Aby skompilować i uruchomić ten program należy: 

* Wybrać rozkaz Run | Run 
* Nacisnąć kombinację klawiszy [Ctrl]+[F9] 

Podobnie jak wcześniej, kompilator wyświetli na ekranie okienko 
zawierające komunikaty o przebiegu kompilacji. Po zakończeniu 
kompilacji nastąpi wykonanie programu. Na moment mignie roboczy 
ekran użytkownika. Na nieszczęście program nic nie robi, więc 
nic się tam nie wydarzy. 

Aby przeanalizować, jak kompilator C++ reaguje na błędy w 
programach, zmień tekst w pierwszej linii programu na błędny: 

vod main(void) 



Spróbuj powtórnie skompilować i uruchomić program. 

Kompilator wyświetli okienko, w którym pojawi się komunikat o 
błędach. W taki właśnie sposób kompilator taktownie informuje 
programistę, że nie jest aż taki dobry, jak mu się czasami 
wydaje. Komputer jest niestety pedantem. Oczekuje (my, ludzie 
tego nie wymagamy) absolutnej dokładności i żelaznego 
przestrzegania pewnych zasad. "Zjadając" jedną literę naruszyłeś 
takie zasady, co zauważył kompilator. 

W górnej części ekranu kompilator wyróżnił paskiem podświetlenia 
ten wiersz programu, który zawiera błąd. W dolnej części ekranu, 
w tzw. okienku komunikatów (ang. Message window) pojawił się 
komunikat, jaki rodzaj błędu został wykryty w Twoim programie. W 

danym przypadku komunikat brzmi: 

Declaration syntax error - Błąd w składni deklaracji 

Co to jest deklaracja? 

Pierwsza linia (wiersz) funkcji nazywa się deklaracją funkcji. 
Taka pierwsza linia zawiera informacje ważne dla kompilatora: 
nazwę funkcji oraz tzw. typy wartości używanych przez funkcję. 
Komunikat o błędzie oznacza, że nieprawidłowo została napisana 
nazwa funkcji lub nazwy typów wartości, którymi posługuje się 
funkcja. W naszym przypadku słowo void zostało przekręcone na 
"vod", a słowo to ma w C++ specjalne znaczenie. Słowo "void" 
jest częścią języka C++, a dokładniej - słowem kluczowym (ang. 
keyword). 

[S] Function declaration - Deklaracja funkcji. 
Keyword - Słowo kluczowe. 
________________________________________________________________ 

Function declaration - Deklaracja funkcji. 
Pierwszy wiersz funkcji jest nazywany deklaracją funkcji. Ten 
wiersz zawiera informacje dla kompilatora C++ pozwalające 
poprawnie przetłumaczyć funkcję na kod maszynowy. 

Keyword - Słowo kluczowe. 
to specjalne słowo wchodzące w skład języka programowania. Słowa 

kluczowe to słowa o zastrzeżonym znaczeniu, które można stosować 
w programach wyłącznie w przewidzianym dla nich sensie. 
________________________________________________________________ 


Popraw błąd w tekście. Aby robocze okienko edytora stało się 
oknem aktywnym, wskaż kursorem myszki dowolny punkt w oknie 
edytora i naciśnij lewy klawisz myszki, albo naciśnij klawisz 
[F6]. Zmień słowo "vod" na "void". Przy pomocy klawiszy ze 
strzałkami umieść migający kursor po prawej stronie nawiasu { 
sygnalizującego ˙początek programu i naciśnij [Enter]. Spowoduje 
to wstawienie pomiędzy początek a koniec programu nowej pustej 
linii i umieszczenie kursora na początku nowego wiersza. Wpisz 
do nowego wiersza instrukcję oczyszczenia ekranu (odpowiednik 
instrukcji CLS w Basicu): 

clrscr(); 

W C++ clrscr() oznacza wywołanie funkcji czyszczącej roboczy 
ekran programu (User screen). Nazwa funkcji pochodzi od skrótu: 

CLeaR SCReen - czyść ekran. 

Że to funkcja - można rozpoznać po dodanej za nazwą parze 
nawiasów okrągłych - (). W tym jednak przypadku wiersz: 

clrscr(); 

stanowi nie deklarację funkcji, lecz wywołanie funkcji (ang. 
function call). C++ znalazłszy w programie wywołanie funkcji 
wykona wszystkie rozkazy, które zawiera wewnątrz funkcja 
clrscr(). Nie musisz przejmować się tym, z jakich rozkazów 
składa się funkcja clrscr(). Te rozkazy nie stanowią części 
Twojego programu, lecz są zawarte w jednym z "fabrycznych" 
plików bibliotecznych zainstalowanych wraz z kompilatorem C++. 


[S] 
Function - Funkcja 
Fuction call - Wywołanie funkcji 
________________________________________________________________ 

Funkcja to coś przypominające mini-program. Funkcja zawiera 
listę rozkazów służących do wykonania typowych operacji (np. 
czyszczenie ekranu, wyświetlanie menu, wydruk, czy sortowanie 
listy imion). W programach posługujemy się zwykle wieloma 
funkcjami. Poznałeś już najważniejszą funkcję główną - main(). W 
C/C++ możesz posługiwać się gotowymi funkcjami (tzw. 
bibliotecznymi) a także tworzyć nowe własne funkcje. Na razie 
będziemy posługiwać się gotowymi funkcjami dostarczanymi przez 
producenta wraz z kompilatorem C++. 
________________________________________________________________ 


Włącz kompilację i próbę uruchomienia programu. 
Kompilator stwierdzi, że program zawiera błędy. 
Naciśnij dowolny klawisz, by zniknęło okienko kompilacji. 
Kompilator napisał: 

Error: Function clrscr should have a prototype 

(Funkcja clrscr powinna mieć prototyp) 

[???] O co mu chodzi? 
________________________________________________________________ 
Tzw. PROTOTYP funkcji to coś bardzo podobnego do deklaracji 
funkcji. Prototyp służy do przekazania kompilatorowi pewnych 
informacji o funkcji jeszcze przed użyciem tej funkcji w 
programie. Dla przykładu, gdy pisałeś pierwszą linię programu: 

void main(void) 

podałeś nie tylko nazwę funkcji - main, lecz także umieściliśmy 
tam dwukrotnie słowo void. Dokładnie o znaczeniu tych słów 
napiszemy w dalszej części książki. Na razie zwróćmy jedynie 
uwagę, że podobnych "dodatkowych" informacji dotyczących funkcji 
clrscr() w naszym programie nie ma. 
________________________________________________________________ 


Zwróć uwagę, że zapisy:

main() int main(void) main(void) {
{ { } }

}

są całkowiecie równoważne. Fakt, że słowa kluczowe void (w nawiasie) 
i int (przed funkcją i tylko tam!) mogą zostać pominięte wskazuje, że są 
to wartości domyślne (default settings) przyjmowane automatycznie.

Funkcja clrscr() została napisana przez programistów z firmy 
BORLAND i znajduje się gdzieś w osobnym pliku dołączonym do 
kompilatora C++. Aby móc spokojnie posługiwać się tą funkcją w 
swoich programach, powinieneś dołączyć do swojego programu 
informację w jakim pliku dyskowym znajduje się opis funkcji 
clrscr(). Taki (dość szczegółowy) opis funkcji nazywa się 
właśnie prototypem funkcji. Aby dodać do programu tę (niezbędną) 
informację 

* naciśnij [F6] by przejść do okna edytora 
* ustaw migający kursor na początku tekstu programu 
* naciśnij [Enter] dwukrotnie, by dodać dwie nowe puste linie do 

tekstu programu 
* na samym początku programu wpisz: 

#include <conio.h> 

Takie specjalne linie (zwróć uwagę na podświetlenie) 
rozpoczynające się od znaku # (ASCII 35) nie są właściwie 
normalną częścią składową programu. Nie stanowią one jednej z 
instrukcji programu, mówiącej komputerowi CO NALEŻY ROBIĆ, lecz 
stanowią tzw. dyrektywę (rozkaz) dla kompillatora C++ - W JAKI 
SPOSÓB KOMPILOWAĆ PROGRAM. Dyrektywa kompilatora (ang. compiler 
directive) powoduje dokonanie określonych działań przez 
kompilator na etapie tłumaczenia programu na kod maszynowy. W 
danym przypadku dyrektywa 

#include ....

(ang. include - włącz, dołącz) powoduje włączenie we wskazane 
miejsce zawartości zewnętrznego tekstowego pliku dyskowego - np.:

CONIO.H, 

(plik CONIO.H 
nazywany ˙także "plikiem nagłówkowym" znajduje się w podkatalogu 
\INCLUDE). Kompilator dołącza zawartość pliku CONIO.H jeszcze 
przed rozpoczęciem procesu kompilacji programu. 

Naciśnij kombinację klawiszy [Ctrl]+[F9]. Spowoduje to 
kompilację i uruchomienie programu (Run). Przykładowy program 
powinien tym razem przekompilować się bez błędów. Po dokonaniu 
kompilacji powinien szybko błysnąć ekran użytkownika. Po tym 
błysku powinien nastąpić powrót do roboczego środowiska IDE 
kompilatora C++. Jeśli nie zdążyłeś się przyjrzeć i chcesz 
spokojnie sprawdzić, co zrobił Twój program - naciśnij 
kombinację klawiszy [Alt]+[F5]. 
Dzięki działaniu funkcji clrscr() ekran będzie całkowicie 
czysty. 

[S] Compiler directive - DYREKTYWA KOMPILATORA 
________________________________________________________________ 

Dyrektywa kompilatora to rozkaz wyjaśniający kompilatorowi C++ w 
jaki sposób dokonywać kompilacji programu. Dyrektywy kompilatora 
zawsze rozpoczynają się od znaku # (ang. hash). 
Kompilatory C++ posiadają pewien dodatkowy program nazywany 
PREPROCESOREM. Preprocesor dokonuje przetwarzania tekstu 
programu jescze przed rozpoczęciem właściwej kompilacji. 
Dokładniej rzecz biorąc #include jest właściwie dyrektywą 
preprocesora (szczegóły w dalszej części książki). 
________________________________________________________________ 


[Z] - Propozycje zadań do samodzielnego wykonania.
________________________________________________________________ 
1. Spróbuj poeksperymentować "zjadając" kolejno różne elementy w 

poprawnie działającym na początku programie: 

- litera w nazwie funkcji 
- średnik na końcu wiersza 
- cudzysłów obejmujący tekst do wydrukowania 
- nawias ( lub ) w funkcji printf() 
- nawias klamrowy { lub } 
- znak dyrektywy # 
- całą dyrektywę #include <stdio.h> 

Porównaj komunikaty o błędach i zgłaszaną przez kompilator 
liczbę błędów. Czy po przekłamaniu jednego znaku kompilator 
zawsze zgłasza dokładnie jeden błąd? 
________________________________________________________________ 

______________________________________________________________________
EOF 

 


DZIAŁ C&C++
...

TYP I NAZWA PLIKÓW  DO POBRANIA:
.....
...
... LEKCJA5.txt 17kB
FORMAT ARCHIWUM:
...
...

 

 

Strona poœwięcona jest technologiom programowania C++ z wykorzystaniem pakietu Visual C++, Pascal, DELPHI, C oraz technologiom tworzenia grafiki komputerowej z wykorzystaniem OpenGl i innych technik.
Wszelkie materiały zamieszczone zostały na stronie w celach dydaktycznych. Autor nie ponosi odpowiedzialnoœci za treœci materiałów oraz skutki wywołane ich wykorzystaniem.

(c) P.PARDEL 2001-2005 gg:1991389

Serwis znajduje się na serwerze www.friko.pl ..::..::..