Darmowe Forum

Turbo Pascal => Turbo Pascal semestr I => Wątek zaczęty przez: admin Listopad 07, 2011, 11:50:37



Tytuł: Kod ASCII
Wiadomość wysłana przez: 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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;


Tytuł: Odp: Kod ASCII
Wiadomość wysłana przez: admin 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.


Polityka cookies
Darmowe Fora | Darmowe Forum

gry life olimp gangnh mylittlepets