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
|
|
|
|
|