Darmowe Forum
Maj 02, 2024, 08:54:33 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Czy dotarł do Ciebie email aktywacyjny?

Zaloguj się podając nazwę użytkownika, hasło i długość sesji
Aktualności: Forum zostało uruchomione!
 
   Strona główna   Pomoc Zaloguj się Rejestracja  
Strony: [1]
  Drukuj  
Autor Wątek: Kod ASCII  (Przeczytany 21020 razy)
admin
Administrator
Ekspert
*****
Wiadomości: 821


Email
« : 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Administrator
Ekspert
*****
Wiadomości: 821


Email
« 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
Strony: [1]
  Drukuj  
 
Skocz do:  

Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap

Polityka cookies
Darmowe Fora | Darmowe Forum

endermanpl justplay companions amazonsolidarnosc croissanta