LEKCJA9.TXT

(21 KB) Pobierz
LEKCJA 9: O SPOSOBACH ODWOYWANIA SI DO DANYCH.  
________________________________________________________________ 
W trakcie tej lekcji poznasz:  
* sposoby wyprowadzania napisw w rnych kolorach  
* sposoby zapamitywania tekstw  
* sposoby odwoywania si do danyc i zmiennych przy pomocy ich  
nazw - identyfikatorw.  
________________________________________________________________ 
 
Moemy teraz powici chwil na zagadnienie kolorw, ktre  
pojawiaj si na monitorze. Po uruchomieniu program przykadowy  
poniej wygeneruje krtki dwik i zapyta o imi. Po wpisaniu  
imienia program zapiszczy jeszcze raz i zapyta o nazwisko. Po  
wpisaniu nazwiska program zmieni kolor na ekranie monitora i  
wypisze komunikat kolorowymi literami. Rne kolory zobaczysz  
oczywicie tylko wtedy, gdy masz kolorowy monitor. Dla  
popularnego zestawu VGA mono bd to rne odcienie szaroci.  
Tekst powinien zmienia kolor i "miga" (ang. - blinking text). 
 
[P012.CPP] 
 
#include <conio.h>  
#include <iostream.h>  
 
main()  
{  
char imie[20];  
char nazwisko[20];  
 
clrscr();  
cout << "\aPodaj imie:  ";  
cin >> imie;  
cout << "\aPodaj nazwisko:  ";  
cin >> nazwisko;  
cout << '\n' << imie << ' ' << nazwisko << '\n'; 
textcolor(4+128);   
cprintf("\nPan(i), %s %s? Bardzo mi milo!", imie, nazwisko);  
getch(); 
cout << '\a'; 
return 0; 
}  
 
Wyjanijmy kilka szczegw technicznych:  
 
cout << "\aPodaj nazwisko? ";  
/* \a to kod pisku goniczka (beep) */  
 
cin >> nazwisko;  
textcolor(4+128);    <---- funkcja zmienia kolor tekstu  
 
cprintf("\nPan(i), %s %s? Bardzo mi milo!", imie, nazwisko);  
                     ___ tu funkcja wstawi "string" nazwisko 
   |                |________ a tu wstawi "string" imie  
   |_________ funkcja wyprowadza tekst na ekran w kolorach  
                (cprintf = Color PRINTing Function) 
 
 
Operator >> pobiera ze strumienia danych wejciowych cin wpisane 
 
przez Ciebie imi i zapisuje ten tekst do tablicy znakowej  
imie[20]. Po wypisaniu na ekranie nastpnego pytania nastpuje  
pobranie drugiego acucha znakw (ang. string) wpisanego przez  
Ciebie jako odpowied na pytanie o nazwisko i umieszczenie tego  
acucha w tablicy znakowej nazwisko[]. Wywoana nastpnie  
funkcja textcolor() powoduje zmian roboczego koloru  
wyprowadzanego tekstu. Tekst nie tylko zmieni kolor, lecz take  
bdzie "miga" (blink). Funkcja cprintf() wyprowadza na ekran  
kocowy napis. Funkcja cprintf() to Color PRINTing Function -  
funkcja drukowania w kolorze. 
 
Funkcja textcolor() pozwala na zmian koloru tekstu  
wyprowadzanego na monitor. Mona przy pomocy tej funkcji take  
"zmusi" tekst do migotania. Aby funkcja zadziaaa - musimy  
przekaza jej ARGUMENT. Argument funkcji to numer koloru. Zwr  
jednak uwag, e zamiast prostego, zrozumiaego zapisu:  
 
textcolor(4);         /* 4 oznacza kolor czerwony */ 
 
mamy w programie podany argument w postaci wyraenia (sumy dwu  
liczb):  
 
textcolor(4+128);       // to samo, co:  textcolor(132);  
 
Wbrew pierwszemu mylnemu wraeniu te dwie liczby stanowi jeden  
argument funkcji. C++ najpierw dokona dodawania 4+128 a dopiero  
uzyskany wynik 132 przekae funkcji textcolor jako jej argument  
(parametr). Liczba 4 to kod koloru czerwonego, a zwikszenie  
kodu koloru o 128 powoduje, e tekst bdzie miga.  
 
Numery (kody) kolorw, ktre moesz przekaza jako argumenty  
funkcji textcolor() podano w tabeli poniej. Jeli tekst ma  
miga - naley doda 128 do numeru odpowiedniego koloru.  
 
Kod koloru przekazywany do funkcji textcolor().  
________________________________________________________________ 
 
Kod           Kolor (ang)         Kolor (pol)    Staa 
n                                                (przykad) 
________________________________________________________________ 
 
0             Black               Czarny         BLACK 
1             Blue                Niebieski      BLUE 
2             Green               Zielony        GREEN 
3             Cyan                Morski         CYAN 
4             Red                 Czerwony        
5             Magenta             Fioletowy 
6             Brown               Brzowy  
7             White               Biay  
8             Gray                Szary  
9             Light blue          Jasno niebieski  
10            Light green         Jasno zielony  
11            Light cyan          Morski - jasny 
12            Light red           Jasno czerwony  
13            Light magenta       Jasno fio;etowy (fiol-rowy) 
14            Yellow              ty  
15            Bright white        Biay rozjaniony  
128 + n       Blinking            Migajcy       BLINK  
________________________________________________________________ 
 
 
[!!!]UWAGA: 
________________________________________________________________ 
* W pliku CONIO.H s predefiniowane stae (skrajna prawa kolumna 
 
- przykady), ktre moesz stosowa jako argumenty funkcji.  
Kolor ta moesz ustawi np. przy pomocy funkcji  
textbackground() - np. textbacground(RED); 
 
* Manipulujc kolorem tekstu musisz pamita, e jeli kolor  
napisu:  
- foreground color, text color 
i kolor ta:  
- background color  
oka si identyczne - tekst zrobi si NIEWIDOCZNY. Jeli kaesz 
 
komputerowi pisa czerwonymi literami na czerwonym tle -  
komputer wykona rozkaz. Jednake wikszo ludzi ma kopoty z  
odczytywaniem czarnego tekstu na czarnym tle. Jest to jednak  
metoda stosowana czasem w praktyce programowania do kasowania  
tekstw i elementw graficznych na ekranie.  
________________________________________________________________ 
 
 
Powoujc si na nasze wczeniejsze porwnanie (NIE TRAKTUJ GO  
ZBYT DOSOWNIE!),zajmiemy si teraz czym, co troch przypomina  
rzeczowniki w normalnym jzyku.  
 
O IDENTYFIKATORACH - DOKADNIEJ.  
 
Identyfikatorami (nazwami) mog by sowa, a dokadniej cigi  
liter, cyfr i znakw podkrelenia rozpoczynajce si od litery  
lub znaku podkrelenia (_). Za wyjtkiem sw kluczowych, (ktre 
 
to sowa kluczowe - MUSZ ZAWSZE BY PISANE MAYMI LITERAMI)  
mona stosowa i mae i due litery. Litery due i mae s  
rozrniane. Przykad:  
 
[P013.CPP]  
 
#include <stdio.h>  
#include <conio.h>  
 
float PI = 3.14159;          <-- staa PI 
float r;                     <-- zmienna r 
 
int main(void)  
{  
  clrscr(); 
    printf("Podaj promien ?\n");  
    scanf("%f", &r);  
    printf("\nPole wynosi P = %f", PI*r*r );  
    getch();  
  return 0;  
}  
 
* Uyte w programie sowa kluczowe:  
int, float, void, return.  
 
* Identyfikatory  
- nazwy funkcji (zastrzeone):  
main, printf, scanf, getch, clrscr.  
- nazwy zmiennych (dowolne):  
PI, r.  
 
* Dyrektywy preprocesora:  
# include  
 
Zwr uwag, e w wierszu:  
float PI = 3.14159;  
nie tylko DEKLARUJEMY, zmienn PI jako zmiennoprzecinkow, ale  
take od razu nadajemy liczbie PI jej warto. Jest to tzw.  
ZAINICJOWANIE zmiennej. 
 
[Z] 
________________________________________________________________ 
1. Uruchom program przykadowy. Sprbuj zamieni identyfikator  
zmiennej PI na pisane maymi literami pi. Powinien wystpi  
bd.  
________________________________________________________________ 
 
Dla porwnania ten sam program w wersji obiektowo-strumieniowej: 
 
 
[P013-1.CPP] 
 
#include <stdio.h>  
#include <conio.h>  
 
const float PI = 3.14159;          <-- staa PI 
float r;                           <-- zmienna r 
 
int main(void)  
{  
  clrscr(); 
    cout << "Podaj promien ?\n";  
    cin >> r;  
    cout << "\nPole wynosi P = " << PI*r*r;  
    getch();  
  return 0;  
}  
 
LITERAY.  
 
Literaem nazywamy reprezentujcy dan NAPIS, na podstawie  
ktrego mona jednoznacznie zidentyfikowa dan, jej typ,  
warto i inne atrybuty. W jzyku C++ literaami mog by:  
* acuchy znakw - np. "Napis";  
* pojedyncze znaki - np. 'X', '?';  
* liczby - np. 255, 3.14  
 
[!!!] Uwaga:  BARDZO WANE !!! 
________________________________________________________________ 
* Rol przecinka dziesitnego spenia kropka. Zapis Pi=3,14 jest 
 
nieprawidowy.  
* Prba zastosowania przecinka w tej roli SPOWODUJE BDY !  
________________________________________________________________ 
 
Liczby cakowite mog by: 
* Dziesitne (przyjmowane domylnie - default); 
* semkowe - zapisywane z zerem na pocztku: 
017 = 1*8 + 7 = 15 (dziesitnie); 
* Szesnastkowe - zapisywane z 0x na pocztku: 
0x17 = 1*16 + 7 = 23 (dziesitnie); 
0x100 = 16^2 + 0 + 0 = 256 . 
 
Liczby rzeczywiste mog zawiera cz uamkow lub by zapisane 
 
w postaci wykadniczej (ang. scientific format) z liter "e"  
poprzedzajc wykadnik potgi. 
 
Przykad: 
 
Zapis liczbyWarto dziesitna  
 
.01230.0123 
123e4123 * 10^4 = 1 230 000 
1.23e31.23 * 10^3 = 1230  
123e-40.0123  
 
Literay skadajce si z pojedynczych znakw maj jedn z  
trzech postaci:  
 
* 'z' - gdzie z oznacza znak "we wasnej osobie";  
* '\n' - symboliczne oznaczenie znaku specjalnego - np.  
sterujcego - tu: znak nowej linii;  
* '\13' - nr znaku w kodzie ASCII.  
 
UWAGA:  
'\24' - kod semkowy !         (dziesitnie 20) 
'\x24' - kod SZESNASTKOWY !    (dziesitnie 36) 
  
 
[S]SLASH, BACKSLASH.  
Kreska "/" nazywa si SLASH (czyt. "slasz") - amane,  
ukonik zwyky. Kreska "\" nazywa si BACKSLASH (czyt.  
"bekslasz") - ukonik odwrotny.  
 
Uzupenimy teraz list symboli znakw z poprzedniej lekcji.  
 
Znak SEMKOWOASCII (...
Zgłoś jeśli naruszono regulamin