admin
|
|
« : Listopad 07, 2011, 11:50:37 » |
|
Wstêp czyli rozwa¿ania wprowadzaj±ce. W pamiêci komputera znak graficzny jakim jest litera lub cyfra reprezentowany jest w postaci liczby. Inaczej mówi±c w pamiêci komputera wraz z ³adowaniem systemu wczytywana jest tablica znaków (liter, cyfr i znaków specjalnych). Je¿eli w poleceniu wypisania na ekranie u¿yjemy np. write('A'), to wydrukowana zostanie oczywi¶cie litera "A" bez wnikania w tablicê znaków. Dlaczego tak siê dzieje? Wciskaj±c klawisz na klawiaturze wys³any zostaje do pamiêci kod wci¶niêtego klawisza (jest to w³a¶nie kod ASCII), po odszukaniu w pamiêci odpowiadaj±cej danej warto¶ci kodu znaku, zostanie on wydrukowany na ekranie. Gorzej jest, je¿eli za¿yczymy wydrukowania znaku którego nie ma na klawiaturze. Wtedy nale¿y pos³u¿yæ siê bezpo¶rednim dostêpem do znaków w³a¶nie przez przes³anie do systemu kodu ASCII odpowiadaj±cego danemu znakowi.
Jak w Pascalu wy¶wietliæ znak je¿eli znamy jego kod ASCII ? Odczytanie znaku oznaczonej w tablicy kodów ASCII jako x jest mo¿liwe dziêki poleceniu Chr(x);
Np. w tablicy ASCII znakowi 'A' odpowiada liczba = 65, a znakowi 'a' liczba = 97. Je¿eli w programie wpiszê polecenie: writeln(chr(65)); to na ekranie powinna pojawiæ siê litera 'A'. Dziêki poleceniu chr(x) istnieje mo¿liwo¶æ wy¶wietlania znaków niedostêpnych bezpo¶rednio z klawiatury. Do takich znaków mo¿na zaliczyæ znaki: Enter - chr(13), Backspace - chr(Spoko; Escape -chr(27). Funkcj± odwrotn± do chr() jest funkcja ord(x); wprowadzenie polecenia write(ord('A')) wy¶wietla kod przyporz±dkowany w tabeli kodów ASCII literze A czyli 65.
|
|
« Ostatnia zmiana: Listopad 07, 2011, 12:02:26 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #1 : Listopad 07, 2011, 12:21:53 » |
|
Zadanie 1. W±tpliwo¶æ. Napisaæ program który bêdzie wy¶wietla³ kody ASCII wci¶niêtych klawiszy. Wyj¶cie z pêtli za pomoc± klawisza: 'ESCAPE'. .
Program Glodna_aska; uses crt,dos; var a,b,z,w:word; c:char; begin clrscr; a:=0; repeat a:=a+1; write(a:5); c:=readkey; writeln(' ',ord(c)); until c=(chr(27));
end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #2 : Listopad 07, 2011, 13:07:08 » |
|
program rambler; uses crt,dos; var x,y,a,b: word; c:char; begin y:=2; a:=1;c:=chr(219); repeat y:=y+a; gotoxy(30,y); write(c);delay(100); clrscr; if (y=1) or (y=20) then a:=-a;
until keypressed; end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #3 : Listopad 21, 2011, 08:19:31 » |
|
Zadanie 2. Proszê napisaæ program prosz±cy o podanie liczby od 0 do 255. Nastêpnie wy¶wietlaj±cy znak o wprowadzonym kodzie ASCII.
program ascii; uses crt,dos; var x:integer; begin repeat clrscr; gotoxy(10,10); write('Podaj liczbe (0-255): ');readln(x); gotoxy(10,12); write('Wprowadzony kod odpowiada znakowi ',chr(x),' w kodzie ASCII'); gotoxy(10,16); write('Wcisnij dowolny klawisz');readkey; until x=0; end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #4 : Listopad 21, 2011, 10:15:59 » |
|
Przyk³ad 3. Napisaæ program który korzystaj±c z pêtli repeat until wy¶wietli kolejne kody (od 0 do 255) i odpowiadaj±ce im znaki ASCII.
program fryga; uses crt,dos; var x:integer; begin clrscr; x:=0; repeat write(x:3,chr(x):2); x:=x+1; until x=256; readkey; end.
|
|
« Ostatnia zmiana: Listopad 28, 2011, 08:43:17 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #5 : Listopad 21, 2011, 10:24:10 » |
|
Program 4. Napisaæ program który bêdzie pozwala³ na wpisywanie znaków z klawiatury bezpo¶rednio na ekran. W linijce poni¿ej bêd± wy¶wietlane odpowiadaj±ce znakom kody ASCII>
program fryga; uses crt,dos; var x:integer; y:char; begin clrscr; x:=0; repeat gotoxy(x+1,10); y:=readkey; write(y); gotoxy(x+1,12);write(ord(y)); x:=x+4; until y='1'; readkey; end.
|
|
« Ostatnia zmiana: Listopad 21, 2011, 10:42:59 wys³ane przez admin »
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #6 : Listopad 21, 2011, 11:03:38 » |
|
Program 5. Napisaæ program który pozwala wpisywaæ tekst. Linijkê ni¿ej wy¶wietla go zaszyfrowany w postaci znaków których warto¶ci przesuniête s± w kodzie ASCII o 25.
program fryga; uses crt,dos; var x,z:integer; y:char; begin clrscr; x:=0; repeat gotoxy(x+1,10); y:=readkey; z:=ord(y)+35; write(y); gotoxy(x+1,12);write(chr(z)); x:=x+1; until y='1'; readkey; end.
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #7 : Listopad 21, 2011, 11:24:11 » |
|
Przyk³ad 6. Napisaæ program dzia³aj±cy jak przyk³ad z zadania 5 lecz zakoñczenie wpisywania znaków wymaga wci¶niêcia klawisza "ESC".
program fryga; uses crt,dos; var x,z,b:integer; y:char; begin clrscr; x:=0; repeat gotoxy(x+1,10); y:=readkey; z:=ord(y)+35; write(y); gotoxy(x+1,12);write(chr(z)); x:=x+1; until ord(y)=27; readkey;
|
|
|
Zapisane
|
|
|
|
admin
|
|
« Odpowiedz #8 : Listopad 21, 2011, 11:44:10 » |
|
Polecenie generuj±ce liczby pseudolosowe w T.Pascalu. Wyznaczenie liczby losowej wymaga zainicjowania funkcji poleceniem Randomize; W programie aby wylosowaæ liczbê u¿ywamy polecenia random(x); gdzie x jest liczb± okre¶laj±c± zakres losowanych liczb. Np. random(30) oznacza, ¿e losowana liczba bêdzie z zakresu 0..30.
[b]Zadanie 5. Narysowaæ 5 krzy¿yków losowo rozmieszczonych na ekranie monitora. Wykorzystaæ pêtlê repeat until.[/b]
program lipa; uses crt,dos; var x,y,x1,y1,ile:integer; begin x:=0;clrscr;textcolor(green); randomize; ile:=0; repeat ile:=ile+1; x1:=1+random(50); y1:=1+random(10); y:=0; repeat x:=0; repeat gotoxy(x1+x,y1+y); if(x=5) or (y=5) then begin textcolor(yellow); write(chr(178));end; x:=x+1; until x=11; y:=y+1; until y=11; until ile=5; readkey; end.
|
|
« Ostatnia zmiana: Listopad 21, 2011, 12:00:35 wys³ane przez admin »
|
Zapisane
|
|
|
|
|