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 (...
Infesto