• Nie Znaleziono Wyników

Laboratorium informatyki II. Język Pascal. Semestr letni. Ćwiczenie 7.

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium informatyki II. Język Pascal. Semestr letni. Ćwiczenie 7."

Copied!
1
0
0

Pełen tekst

(1)

Laboratorium informatyki II. Język Pascal. Semestr letni.

Ćwiczenie 7.

Wskaźniki i zmienne dynamiczne

Cel ćwiczenia: definiowanie zmiennych wskaźnikowych; dostęp do zmiennych za pomocą wskaźników; inicjowanie wskaźników adresami zmiennych statycznych; wskaźniki typu pointer; rzutowanie wskaźników (konwersja typu); wyznaczanie adresu fizycznego zmiennej;

wyprowadzanie segmentu i offsetu wskaźników; tworzenie wskaźnika na zadany adres pamięci; tworzenie zmiennych dynamicznych na stercie i przypisywanie ich adresów wskaźnikom (procedury new, dispose, getmem, freemem).

1. Zdefiniować wskaźnik na zmienną typu integer. Zainicjować wskaźnik adresem zmiennej statycznej a = 5 typu integer. Wyprowadzić na ekran zawartość zmiennej za pomocą wskaźnika oraz za pomocą identyfikatora zmiennej (wartości powinny być identyczne).

2. Zdefiniować wskaźnik typu pointer. Zainicjować wskaźnik adresem zmiennej x = 2.5 typu real. Wyprowadzić na ekran wartość wskaźnika (segment i offset) oraz zawartość obszaru wskazywanego.

3. Zdefiniować zmienną b = 20 typu integer. Zdefiniować wskaźnik typu pointer i zainicjować go adresem zmiennej b. Przypisać wartość wskaźnika typu pointer do wskaźnika typu

integer. Wyprowadzić zawartość pamięci wskazywanej przez każdy ze wskaźników.

4. Opracować funkcję, która wyznacza adres wskazywany przez wskaźnik typu pointer (wykorzystać funkcje OFS i SEG). Adres fizyczny jest obliczany ze wzoru:

adres = seglongint(16) + ofs. Nagłówek funkcji: longint adres(p: pointer).

5. Zdefiniować stałe (const) typu char, integer, longint, real oraz wskaźniki na stałe.

Zainicjować wskaźniki adresami stałych. Wyprowadzić adresy fizyczne stałych oraz ich zawartości.

6. Zdefiniować wskaźnik p typu pointer. Zainicjować wskaźnik (np. za pomocą Ptr lub za pomocą bezpośredniego podstawienia wartości) adresem początku pamięci ekranu

w trybie znakowym (adres $B8000 - wskaźnik $B800:$0000). Wyprowadzić na ekran wybrany znak wykorzystując zdefiniowany wskaźnik.

7. Zdefiniować wskaźniki na zmienne typu char, integer, longint, real. Za pomocą procedury new utworzyć zmienne dynamiczne typu char, integer, longint, real i zapamiętać ich adresy w odpowiednich wskaźnikach. Wczytać z klawiatury dane do utworzonych zmiennych dynamicznych. Wyprowadzić za pomocą wskaźników zawartości zmiennych.

Wykorzystując procedurę dispose zwolnić pamięć przydzieloną zmiennym. Wyprowadzić stan

pamięci na początku i na końcu programu (memavail).

8. Opracować procedurę wczytującą do bufora o rozmiarze K bajtów, utworzonego na stercie za pomocą procedury getmem, D pierwszych bajtów określonego pliku (D <=K).

Wyświetlić zawartość bufora na ekranie w postaci znakowej (znaki nie dające się

(2)

wyświetlić zastąpić kropkami). Przed zakończeniem programu zwolnić pamięć za pomocą freemem. Wyprowadzić stan pamięci na początku i na końcu programu (memavail).

Cytaty

Powiązane dokumenty

Cel ćwiczenia: projektowanie algorytmów wykorzystujących pętle; przekazywanie parametrów do procedur i funkcji; obliczanie sum szeregów; praca w trybie znakowym ekranu.. Sprawdzić

Cel ćwiczenia: projektowanie algorytmów rekurencyjnych; rekurencja bezpośrednia i pośrednia; przekazywanie parametrów do procedur i funkcji; zarządzanie stosem programu1.

Opracować procedurę, która tworzy losowy łańcuch typu string[20] złożony z małych liter (znaki łańcucha należą do przedziału [’a’,...,’z’].. Opracować procedurę,

b) odczytywania elementu z kolejki; c) wyprowadzania zawartości kolejki na ekran d) wyprowadzania długości kolejki oraz zawartości zmiennych pocz (początek kolejki) i kon

Cel ćwiczenia: projektowanie algorytmów wykorzystujących pliki tekstowe (text) oraz pliki zdefiniowane (file of ...); łączenie posortowanych plików; wstawianie danej

wyprowadzanie na ekran zawartości dowolnego pliku; kopiowanie fragmentu pliku, modyfikowanie zawartości pliku, znajdowanie zadanej sekwencji bajtów w pliku;

Opracować procedury umożliwiające obsługę kolejki typu FIFO zrealizowanej za pomocą listy jednokierunkowej o następującej strukturze type L = ^lst; lst

o wartościach większych). Zaprojektować procedury: a) dodawania losowego elementu (np. losowa liczba z przedziału od 0 do 100) do drzewa (element powinien być wstawiony do drzewa