– 4 –
2. Budowa i działanie list jednokierunkowych
CO TO JEST ???
– FRAGMENT DROGI
– WSTĘGA ZA OKNEM
– WZÓR NA OKNIE
– ŻYRAFA
– SŁOŃCE
– KWIAT
– WZÓR GEOMETRYCZNY
– KOŁO W MŁYNIE
– MEKSYKANIN
W SOMBRERO
NA ROWERZE
CZY KTOŚ OBSERWOWAŁ KRĘCĄCĄ SIĘ PARABOLICZNĄ ANTENĘ ???
SKĄD WIEMY, ŻE ZWIERZĘ, NA KTÓRE PATRZYMY, TO PIES ???
SHIH-TZU
JAMNIK
OWCZAREK
BULDOG
HIENA
YORKSHIRE
A TERAZ, CZY JEST MOŻLIWOŚĆ DOWOLNEJ INTERPRETACJI ???
CZY OCZY WIDZĄ ???
OD CZEGO więc ZALEŻY, CO WIDZIMY ???
– OD WYOBRAŹNI
– OD KONTEKSTU
– OD SUMY NASZYCH ŻYCIOWYCH DOŚWIADCZEŃ
– OD SUMY DOŚWIADCZEŃ CAŁEJ CYWILIZACJI, CZYLI OD ... KULTURY
WIDZIMY STÓŁ i NAZYWAMY TĘ RZECZ STÓŁ. Z JAKICH DWÓCH ELEMENTÓW SKŁADAMY POJĘCIE „STÓŁ” ???
– jeśli obcokrajowiec powie „TISCH”, to my nie rozumiemy, że to „STÓŁ”, nawet jeśli widzimy tę rzecz,dla nas „STÓŁ”, dla Niemców „TISCH”, dla Amerykanów i Anglików „TABLE”, itp.
– pojęcie „STÓŁ” to STÓŁRZECZ + STÓŁNAZWA , te dwa elementy są ściśle ze sobą związane
– jeśli nie ma nazwy, to możemy nie rozumieć, czym jest rzecz
– jeśli nie ma rzeczy, to możemy nie rozumieć nazwy(ale czasem rozumiemy pojęcia abstrakcyjne, bez fizycznie istniejącej rzeczy)
Ø
ØA
– LICZBA CAŁKOWITA / NATURALNA ZERO
– CYFRA / ZNAK ZERO
– ZNAK ZERO NAPISANY PRZEZ INFORMATYKA
– LICZBA 0.0 RZECZYWISTA,ALE NAPISANA W SKRÓCIE
– BIT ZERO, CZYLI BRAK INFORMACJI / SYGNAŁU
– JAKIŚ ZNAK GRAFICZNY
– DWA ZNAKI ’Ø’ i ’A’
– NAPIS ’ØA’ Z DWÓCH ZNAKÓW
– NAPIS O DŁUGOŚCI ORD(0)=48 Z PIERWSZYM ZNAKIEM ’A’, DALSZYCH ZNAKÓW BRAK
– LICZBA HEXADECYMALNA
– LICZBA 10 WYRAŻONA W UKŁADZIE HEX
MASZ ZA ZADANIE DOSTARCZYĆ PRZESYŁKĘ.W JAKI SPOSÓB (na trzy sposoby) ZIDENTYFIKUJESZCEL DOSTARCZENIA PRZESYŁKI ???
– poprzez ADRES, czyli dojdziesz do drzwi lub do skrzynki pocztowej, która jest odpowiednikiem adresu
– poprzez identyfikację OBSZARU, np. adresat jest twoim znajomym, wiesz gdzie on mieszka,idziesz do niego i w jego mieszkaniu zostawiasz przesyłkę, nawet nie musisz dokładnie znać adresu
– poprzez identyfikację osoby, czyli WARTOŚCI, np. adresat jest twoim znajomym,więc jeśli wejdziesz do jego mieszkania i go zobaczysz, wręczysz mu przesyłkę
Wartość ◄≡► Adres ◄≡► Obszar
Do tej pory posługiwaliśmy się wyłącznie WARTOŚCIĄ
OBSZAREM też, ale to było dla nas niezauważalne
ADRES nie jest WARTOŚCIĄ, tylko ją WSKAZUJE !!!
PO CO TO WSZYSTKO ???
BO CZASEM PROGRAMISTA CHCE ZOBACZYĆ ŻYRAFĘ
tzn. jak w naszym przykładzie
czasem chce zobaczyć liczbę ZERO,kiedy indziej znak ZERO,albo jeszcze coś innego
ZOBACZYMY TERAZ EFEKTY OGLADANIAZAWARTOŚCI PAMIĘCI OPERACYJNEJ NA RÓŻNE SPOSOBY
{===========================================================================}
Program Wsk1Demo;
Uses Crt;
Var Wart :Integer; { wartosc jest liczba calkowita typu Integer }
Ref :^Integer; { wskaznik do obszaru, w ktorym "widzimy" wartosc }
{ typu Integer, za chwile zamienimy to na ^Char }
{Ref od angielskiego Reference oznacza Odwolanie, Adres, Wskazanie }
begin
ClrScr;
Wart:=65; { do zmiennej Wart w PO wstawiamy liczbe typu Integer }
Ref:=Addr(Wart); { albo Ref:=@Wart; wyznaczamy adres tej wartosci w PO }
writeln(Ref^); { Ref wskazuje na obszar, a Ref^ jest jego zawartoscia }
{ dla Ref:^Integer; zobaczymy/wyswietlimy liczbe 65 }
{ dla Ref:^Char; zobaczymy/wyswietlimy znak A }
writeln; write('Nacisnij Enter...'); readln;
end.
Program Wsk2Demo; { tym razem bedziemy zagladac do obszaru, }
Uses Crt; { ktory "widzimy" jako opisana nizej tablice }
Type Tws =array [1..10] of Integer;
{ za chwile zamienimy Integer na Char }
{ i bedziemy miec tablice zawierajaca znaki }
Var Wart :Integer;
Ref :^Tws; { wskaznik do obszaru, w ktorym "widzimy" tablice }
begin { typu Tws }
Wart:=65; { do obszaru zmiennej Wart w PO wstawiamy liczbe typu }
{ Integer, ale bedziemy patrzec na ten obszar tak, }
{ jakby zawieral tablice typu Tws }
Ref:=@Wart; { albo Ref:=@Wart; wyznaczamy adres tej wartosci w PO }
writeln(Ref^[1]); { Ref wyznaczylismy jako adres obszaru zmiennej Wart, }
{ ale Ref z definicji wskazuje obszar z tablicĄ }
{ typu Tws, wiec Ref^ "zobaczy" tablice w miejscu, }
{ gdzie zostala wpisana liczba Wart, dlatego Ref^[1] }
{ jest pierwszym elementem tej tablicy }
{ dla Tws...Integer; zobaczymy/wyswietlimy liczbe 65 }
{ dla Tws...Char; zobaczymy/wyswietlimy znak A }
EFEKTY OGLADANIA ZAWARTOŚCI PAMIĘCI OPERACYJNEJ
INNE WERSJE METOD z POPRZEDNICH ZAJĘĆ
{====================================================================================================}
Program Wsk3Demo; Uses Crt;
Type Tws =String[10];{ lancuch o dlugosci maksymalnej 10 znakow, czyli obszar zawierajacy 11 bajtow}
{ razem z bajtem okreslajacym dlugosc lancucha }
Ttt =Array [0..10] of Byte; { tablica 11-tu liczb typu Byte }
Var Wart :Tws; { tym razem Wart jest napisem typu Tws }
tt :Ttt; { natomiast tt jest tablica typu Ttt z liczbami }
{ i bedzie zapisana w innym obszarze niz Wart }
Ref :^Tws; { wskaznik do obszaru, w ktorym "widzimy" napis Wart }
k :Integer; { zmienna licznika petli }
ClrScr; Wart:='ABCDEFGHIJ';{do obszaru zmiennej Wart w PO wstawiamy napis }
{ z 10-tu znakow, czyli zajmujemy 11 bajtow }
{ czyli adres, ktory wskazuje wpisany tam String }
{ Ref wskazuje na obszar, a Ref^ jest jego zawartoscia }
Move(Ref^,tt,11); { obszar Ref^, czyli napis, czyli 11 bajtow, przesuwamy do obszaru z tablica tt}
{ w obszarze wskazanym przez Ref "widzimy" 11 bajtow, }
...
bomaszko