Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
Typy strukturalne Typ tablicowy.
PASCAL (3) dr Anna Kwiatkowska.
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Instrukcje strukturalne
OBJECT PASCAL Marzena Szałas.
ZŁOŻONOŚĆ OBLICZENIOWA
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 3: Podstawowe elementy języka.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 2: Wstęp do programowania w Pascalu © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 5: Typy porządkowe, wyliczeniowe i okrojone. Definiowanie.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Rekursja Copyright, 2004 © Jerzy R. Nawrocki Teoretyczne podstawy informatyki.
Programowanie imperatywne i język C
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
Kurs Pascala – spis treści
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Typy pochodne 1 Często dogodnie jest wprowadzić nowy typ, który jest podobny do istniejącego, niemniej jednak różny. Niech T będzie pewnym typem. Możemy.
Dynamiczne struktury danych 1
Tablice jednowymiarowe 1
Typy danych – podstawy 1 W Adzie wszystkie dane muszą być określonego typu. Definicja Typ danych (data type) jest to zbiór wartości i operacji, które można.
Typy prywatne 1 Typy prywatne W Adzie typy prywatne (private types) służą do bezpiecznego udostępniania danych zdefiniowanych w pakiecie, z którego korzysta.
Rekordy 1 Definicja Typ strukturalny nazywamy typem rekordowym, jeżeli zawiera pewną liczbę nazwanych składowych, które mogą być różnych typów. Dostęp.
Stałe i zmienne 1 Definicja Literałem (literal) nazywamy wartość danej jawnie pisaną w programie Przykład Ada.Float_Text_Io.Put ( ); Definicja Stałą
Wykład 2 struktura programu elementy języka typy zmienne
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
Pliki. Pliki Pliki jako pamięć nieulotna Pliki jako pamięć nieulotna Nazwy, atrybuty i prawa dostępu Nazwy, atrybuty i prawa dostępu atrybuty atrybuty.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
Podprogramy.
Typy złożone, case, stałe. Typ zbiorowy type typ_zb = set of typ_podstawowy; Typem podstawowym może być tylko typ porządkowy. Typem podstawowym może być
PROGRAMOWANIE STRUKTURALNE WYKŁAD 2
Schemat Hornera Mgr inż. Michał Szucki.
Programowanie imperatywne i język C Copyright, 2006 © Jerzy R. Nawrocki Wstęp do.
Podstawy informatyki 2013/2014
Podstawy programowania
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
Andrzej Jędryczkowski Nie da się napisać większego programu bez podziału go na części zwane podprogramami. Podprogram to wyróżniona część programu.
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
Struktura programu w Turbo Pascalu.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
Procedury i funkcje.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
Wykład 5 – typy – stałe – tablice – elementy grafiki.
1. Język ObjectPascal - typ tablicowy (array)
Pliki Pojęcie i rodzaje plików Definicja typu plikowego Operacje wykonywane na plikach elementowych.
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Podstawy programowania w języku C i C++
Programowanie strukturalne i obiektowe
Zbiory i rekordy mgr inż. Agata Pacek. Deklaracja typu zbiorowego (określa ilość elementów w zbiorze) type biegi=set of 0..6; Definiowanie zmiennej typu.
Tablice w Turbo Pascalu.
Informatyka MPZI Wykład 4 Podprogramy Pliki Typ zbiorowy Rekurencja.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
Wykład 10 typ zbiorowy rekurencja.
1 Wykład 7 sortowanie BitButton format tekstu rysunki typ rekordowy.
Ogólna struktura programu w TP
Informatyka 2 MPDI Wykład 9 Delphi tablice, rekordy.
Informatyka MPDI2 Wykład 10 DELPHI cd. - zmienne tablicowe,
Programowanie obiektowe Wykład 9 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/15 Dariusz Wardowski.
Podstawowe struktury danych. Typy danych.
Programowanie imperatywne i język C Copyright, 2007 © Jerzy R. Nawrocki Wstęp do.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
P ASCAL Definicje, deklaracje, podstawowe instrukcje 1.
Wykład 1 Informatyka II MPZI2 sem.letni. Tablice Tablice deklarujemy array [ lista typów indeksów ] of typ bazowy (składowych) np. var t1,t2:array [1..5,
Zapis prezentacji:

Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory © Jan Kaczmarek

Typy strukturalne Typy strukturalne są używane do opisu obiektów złożonych, tzn. takich, które w danym momencie przechowują nie jedną, ale kolekcję wielu wartości. Typy strukturalne definiuje się na podstawie pewnych schematów strukturalizacji podając typy składowych i metodę strukturalizacji, określającą mechanizm dostępu do danych elementów struktury. W Pascalu mamy cztery rodzaje struktur: - tablice – opisywane typami tablicowymi - rekordy – opisywane typami rekordowymi - zbiory – opisywane typami zbiorowymi - pliki – opisywane typami plikowymi

Tablice Tablica składa się z elementów jednakowego typu, przy czym każdy element tablicy może być jawnie nazwany (wskazany), a liczbę elementów ustala się w chwili opisywania (deklarowania) tablicy i nie można tej liczby zmienić. Tablica posiada regularną strukturę i dlatego jest używana do reprezentowania regularnych układów danych, np. wektorów: lub macierzy: 8 -4 6 12 -3 10 2 4 9 2 7 3 10 4 5 1 11 6 9 8 12

Typy tablicowe Definicja typu tablicowego ma postać: type identyfikator-typu = array [typy-indeksów] of typ-bazowy; gdzie: typy-indeksów – oddzielone przecinkami opisy typów porządkowych (najczęściej wykorzystuje się tu typy okrojone lub wyliczeniowe) typ-bazowy – dowolny typ prosty lub strukturalny. Rozmiar tablicy ustalony jest na etapie kompilacji. Przykłady: type wektor = array [1..10] of integer; //10 elementów macierz = array [-10..10, 1..8] of real; //168 elementów tab1 = array [5..8, Boolean] of byte; //8 elementów tab2 = array [1..5] of array [1..20] of real; //100 elementów tablica = array [1..5, 1..20] of real; //100 elementów var T1: macierz; //deklaracja tablicy typu macierz T2: array [1..20] of byte; //deklaracja tablicy 20 elementów typu byte

Dla tablic metoda dostępu do danych nazywa się indeksowaniem Dla tablic metoda dostępu do danych nazywa się indeksowaniem. Indeksem może być dowolne wyrażenie zgodne z odpowiadającym mu na danej pozycji typem indeksu podanym w definicji typu tablicowego. Wartości indeksów są wyliczane w chwili odwołania się do elementu tablicy. Przykłady: T1[3, 7] := 2.5; T1[3][7] := 2.5; T2[5] := 5; var //wczytywanie danych do tablicy T1 : macierz; i, j : integer; begin for i:=-10 to 10 do for j:=1 to 8 do begin write (‘kolejny element = ’); readln (T1[i, j]); end; end.

program suma; {program znajdowania sumy n elementów jednowymiarowej tablicy A} {$APPTYPE CONSOLE} uses SysUtils; var n, i : integer; suma : real; A : array [1..100] of real; //tablica A ma co najwyżej 100 elementów begin write (‘podaj n: ‘); readln (n); //1<=n<=100 for i:=1 to n do //wczytywanie elementów tablicy A begin write (’podaj A[’, i, ’] =’); readln (A[i]); end; suma := 0; for i:=1 to n do suma := suma+A[i]; write (’suma = ’ , suma); readln; end.

program maximum; {program znajdowania największego elementu w tablicy A} {$APPTYPE CONSOLE} uses SysUtils; var n, i : integer; max : real; A : array [1..100] of real; //tablica A ma co najwyżej 100 elementów begin write (‘podaj n: ‘); readln (n); //1<=n<=100 for i:=1 to n do //wczytywanie elementów tablicy A begin write (’podaj A[’, i, ’] =’); readln (A[i]); end; max := A[1]; for i:=2 to n do if A[i]>max then max := A[i]; write (’najwiekszy element = ’ , max); readln; end.

Rekordy Rekordem nazywamy złożoną strukturę danych, której elementy, zwane polami, mogą być (w odróżnieniu od tablic) różnych typów (prostych lub strukturalnych). Pola muszą mieć różne identyfikatory, a ich ilość jest z góry ustalona. Rekord posiada strukturę używaną do reprezentowania układów różnego typu danych, tworzących pewne całości: Nr indeksu D123456 Imię Adam Nazwisko Kowalski Miejscowość Poznań Adres ul. Mickiewicza 22 m. 3 Kierunek studiów informatyka Rok 3 Semestr Z Pesel 88021601123 NIP 777-888-23-24 Telefon (61) 8765432

Typy rekordowe Definicja typu rekordowego ma postać: Typy rekordowe Definicja typu rekordowego ma postać: type identyfikator-typu = record lista-deklaracji-pól; end; gdzie lista-deklaracji-pól ma postać: lista-identyfikatorów-pól : opis-typu; Ostatnie pole może być polem wariantowym postaci: case pole-wyróżnikowe of wykaz-wariantów; gdzie pole-wyróżnikowe może być identyfikatorem typu porządkowego lub deklaracją zmiennej porządkowej wykaz-wariantów ma postać: lista-etykiet-wyboru : (lista-deklaracji-pól)

Przykład: type data = record. //typ rekordowy. dzien : 1. 31; Przykład: type data = record //typ rekordowy dzien : 1..31; //typ okrojony miesiac : 1..12; rok : integer; end; rodzaj = (ciezarowy, osobowy); //typ wyliczeniowy pojazd = record //typ rekordowy marka, kolor : string[20]; data_rejestracji : data; case typ : rodzaj of //pole wariantowe ciezarowy : (ladownosc : real); osobowy : (ilosc_osob : byte); end; var auto : pojazd; //deklaracja zmiennej rekordowej

Metody dostępu do pól rekordów - kwalifikowanie za pomocą selektora, który ma postać: identyfikator-rekordu.identyfikator-pola gdzie identyfikator-rekordu to zmienna rekordowa Uwaga! Kropka oddziela nazwę zmiennej rekordowej od identyfikatora pola. - instrukcja wiążąca postaci: with lista-zmiennych do instrukcja; Umieszczenie zmiennej rekordowej na liście-zmiennych oznacza, że do pól tej zmiennej można odwoływać się wewnątrz instrukcji wiążącej za pomocą samych identyfikatorów pól. Identyfikatory te są traktowane w instrukcji wewnętrznej tak, jak zmienne. Instrukcja with z1, z2, ..., zn do instrukcja; jest równoważna instrukcji zagnieżdżonej with z1 do with z2 do .............. with zn do instrukcja;

Przykłady: auto. marka := ’Ford’; auto. data_rejestracji Przykłady: auto.marka := ’Ford’; auto.data_rejestracji.dzien := 4; auto.data_rejestracji.miesiac := 6; auto.data_rejestracji.rok := 2007; with auto do begin marka := ’Ford’; data_rejestracji.dzien := 4; data_rejestracji.miesiac := 6; data_rejestracji.rok := 2007; end; with auto.data_rejestracji, auto do begin marka := ’Ford’; dzien := 4; miesiac := 6; rok := 2007; end;

Zbiory Zbiory wraz z operacjami na nich zdefiniowanymi umożliwiają zapis obliczeń teoriomnogościowych. Struktury te mają jednak zastosowanie w ograniczonym zakresie. Każdy zbiór jest zbiorem wszystkich podzbiorów (tzw. zbiorem potęgowym), łącznie ze zbiorem pustym, typu bazowego. Typ bazowy musi być typem porządkowym o maksymalnie 256 elementach (liczby porządkowe elementów muszą być z przedziału 0-255). Przykład: Typ bazowy = {a, b, c} Zbiór = {[ ], [a], [b], [c], [a,b], [a,c], [b,c], [a,b,c]}

Typy zbiorowe Definicja typu zbiorowego ma postać: Typy zbiorowe Definicja typu zbiorowego ma postać: type identyfikator-typu = set of typ-porządkowy; Zmienne tego typu zajmują od 1 do 32 bajtów. Ilość zajmowanych bajtów = ord(max) div 8 – ord(min) div 8 + 1. Konstruktor zbioru ma postać [ ]. Przykłady: type pory_roku = (wiosna, lato, jesien, zima); //typ wyliczeniowy pory = set of pory_roku; //typ bazowy – pory_roku liczby = set of 1..8; //typ bazowy – 1..8 litery = set of ’a’..’z’; //typ bazowy – ’a’..’z’ var Z1 : pory; //1 bajt Z2 : liczby; //2 bajty Z3 : litery; //4 bajty ord(’z’)=122, ord(’a’)=97 Z1 := [ ]; //przykłady podstawień Z1 := [lato, zima]; Z2 := [1, 2, 5]; Z3 := [’a’..’d’];

Wartości zmiennych typu zbiorowego nie można wypisać w standardowy sposób przy pomocy instrukcji write, writeln. Na zmiennych zbiorowych można wykonywać operacje teoriomnogościowe. Operatory teoriomnogościowe operator operacja argumenty wynik ----------------------------------------------------------------------------------------------------- + suma zbiorów typ zbiorowy typ zbiorowy – różnica zbiorów typ zbiorowy typ zbiorowy * iloczyn zbiorów typ zbiorowy typ zbiorowy <= jest zawarty, jest podzbiorem typ zbiorowy Boolean >= zawiera, jest nadzbiorem typ zbiorowy Boolean = równy typ zbiorowy Boolean <> różny typ zbiorowy Boolean in należy, jest elementem typ bazowy, zbiór Boolean

Przykład: var z1, z2, zw : set of (a, b, c, d); w : Boolean; begin z1 := [a..c]; z2 := [a, b]; zw := z1+ z2; // zw=[a, b, c] zw := z1+ [d]; // zw=[a, b, c, d] zw := z1 – z2; // zw=[c] zw := z1 – [c]; // zw=[a, b] zw :=z1*z2; // zw=[a, b] zw := z1+ [ ] // zw=z1 w := a in z1; // w=true w := z1<= [a, c] // w=false end.