Wykład 5 – typy – stałe – tablice – elementy grafiki.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
Programowanie wizualne
Programowanie w języku Visual Basic
PASCAL (3) dr Anna Kwiatkowska.
typy całkowite (całkowitoliczbowe)
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE 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ęść 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ęść 6: Tablice, rekordy, zbiory.
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.
Funkcje Modularyzacja : program główny , funkcje Funkcje :
P O D S T A W Y P R O G R A M O W A N I A
Kurs Pascala – spis treści
Tablice Informatyka Cele lekcji: Wiadomości: Uczeń potrafi:
INFORMATYKA Wykładowca: mgr Tadeusz Ziębakowski p. 126 I piętro (naprzeciw dziekanatu)
Ogólne jednostki programowe 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.
Podstawy programowania PP – WYK5 Wojciech Pieprzyca.
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
Wykład 2 struktura programu elementy języka typy zmienne
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
PASCAL Dr Anna Kwiatkowska.
Wprowadzenie do programowania w języku Turbo Pascal
KOMPUTEROWE WSPOMAGANIE PRAC BADAWCZYCH FORTRAN - wprowadzenie Adam FIC INSTYTUT TECHNIKI CIEPLEJ.
Typy wyrażenia, schematy blokowe, writeln, readln, if, pętle
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
AWK Zastosowania Informatyki Wykład 1 Copyright, 2003 © Adam Czajka.
O relacjach i algorytmach
Podstawy informatyki 2013/2014
Obiekty dynamiczne Tworzenie klas 3 MPDI Programowanie obiektowe W4.
Programowanie strukturalne i obiektowe
Pliki tekstowe. Operacje na plikach. mgr inż. Agata Pacek.
© A. Jędryczkowski – 2006 r. © A. Jędryczkowski – 2006 r.
TABLICE C++.
Procedury i funkcje.
Definicja pliku tekstowego Operacje wykonywane na plikach tekstowych
1. Język ObjectPascal - typ tablicowy (array)
Kalendarz 2011 Real Madryt Autor: Bartosz Trzciński.
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++
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.
Kalendarz 2011r. styczeń pn wt śr czw pt sb nd
Podstawy informatyki 2013/2014
PROGRAMOWANIE KOMPUTERÓW
Informatyka MPZI Wykład 4 Podprogramy Pliki Typ zbiorowy Rekurencja.
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
MOiPP Wykład 3 Matlab Przykłady prostych metod obliczeniowych.
Visual Basic for Applications Poziom podstawowy Zajęcia 2
Wykład 10 typ zbiorowy rekurencja.
Wykład 3 przykłady operacje na tekstach wyrażenia logiczne
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,
Podstawowe struktury danych. Typy danych.
Tablice Zajęcia 8. Definicja Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica.
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Informatyka Transport Matlab c.d. Macierze cd. Wykresy graficzne
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,
Dane, zmienne, instrukcje
Zapis prezentacji:

Wykład 5 – typy – stałe – tablice – elementy grafiki

2 Definicje typów i stałych, wartości początkowe Definicja typów definicja: typy standardowe miały swoje nazwy: integer realcharboolean string można wprowadzać nazwy (unikalne) dla swoich typów pojęcie abstrakcyjne (dla kompilatora) - nie ma reprezentacji fizycznej - brak operacji !! - użycie tylko w części opisowej - definicja poprzedza użycie type

3 np.: type dni_tyg = ( pn, wt, sr, czw, pt, sob, ndz); napis = string[ 20 ]; calkowite = integer; zakres= ; var dzien, dn: dni_tyg; nazwisko, imie: napis; i, j, k: calkowite; n: zakres; St. Wołek - Podst. Progr. Komput.

4 Definicja stałych constN = W; lub constN :typ = W; stała element posiadający: nazwę wartość określonego typu nie ulega zmianie używana w wyrażeniach N - nazwa stałej W - proste wyrażenie: stałe numeryczne stałe znakowe stałe tekstowe stałe wyliczeniowe operacje + - * / div mod bez funkcji stand. (zewnętrznych) prócz chr, ord, pred, succ definiowana w części opisowej programu (przed begin bloku wykonawczego) Postać definicji: gdy nie podamy typu, typ wynika domyślnie z wartości wyrażenia

5 np.: const N = 10; N1:integer=10; max_Liczba = 1024*N-16; lba_znakow = ord( 'z' ) - ord( 'a' ) + 1; nazwisko = 'Kowalski'; tak = true; nie = false; są predefiniowane stałe, np.: false = 0 true = 1 maxInt = pi =

6 Typ tablicowy (array) Pojęcie i opis array [ lista typów indeksów ] of typ bazowy (składowych) Pojęcie: - skończony zbiór elementów tego samego typu składowego - o położeniu (selekcji) określanym przez indeks (numer) składowej np.: wektor, macierz o składowych tego samego typu typ porządkowy (o ograniczonym zakresie): okrojony integer okrojony char wyliczeniowy boolean dowolny: prosty strukturalny (bez plików) tablica tablic,napisów, rekordów Opis:

7 Uwagi tablice służą do gromadzenia wielu wartości tego samego typu (nietrwałe – tylko w pamięci operacyjnej – później poznamy jak zapisywać do plików) wymiar tablicy – 1-wektor 2-prostokątna 3- przestrzenna rozmiar – w każdym wymiarze! zawartość – dowolna – także inna tablica! np. array [1..5,1..5] of array [1..2,1..2] of integer;

8 przykłady: array[ ] of integer; fizycznie: w pamięci operacyjnej kolejne wartości typu bazowego ułożone regularnie wierszami array[ 1..20, 1..30] of real; array[ 1..20] of array[ 1..30] of real; może być też 30 wierszy i 20 kolumn, zależy od wizualizacji

9 type dni_tyg = ( pn, wt, sr, cw, pt, sb, nd ); zakres = ; dane = array[ boolean, zakres, dni_tyg] of char; Indeksami mogą być także wartości typu wyliczeniowego bądź znakowego

10 uwagi: wymiar, rozmiar tablica 1, 2, 3 - wymiarowa rozmiar 20 wierszy na 30 kolumn ( 20 x 30) rozmiar statyczny - wyrażony typem indeksów nie mogą być wyrażenia np.: var n: integer; tab: array[ 1..10, 1.. n] of...; mogą być indeksy ujemne array [ ] of real

11 Zmienne tablicowe indeksowane (składowe)całościowe

12 zmienne indeksowane (składowe) - dostęp do składowych Z [ W 1,..., W n ] Przykłady:var x: array[ ] of real; Użycie x[ 1 ] - 1-szy element wektora, typu real x[ k ] - k-ty element x[ 2*k - 1 ] - element nr 2k-1 x[ 2 ] := 10.5; y := 10*x[ k ] - 5.2; floatToStr( x[ k ] ); floatToStr( sin( sqrt( x[ abs( 2*k ) + 10 ] ) ) ); indeksy wyrażenia typu zgodnego z typem indeksów zgodne co do liczby, typu i kolejności z deklaracją nazwa tablicy W typu składowego użycie - w wyrażeniach lub instrukcjach, jak zmienne typu składowego

13 zmienne całościowe - tylko przypisanie - dla typów tożsamych! brak:+ - * / porównania np: var x, y: array[ 1..5] of integer ; begin y[1] := 35 ; x := y; //przepisz y do x edit1.text:= IntToStr(x[1]); end

14 type dni_tyg = ( pn, wt, sr, cw, pt, sb, nd ); var dane: array[ dni_tyg, boolean ] of real; begin dane[ pn, true ] := 10.2; k:=5; memo1.lines.add( 'Wynik = ' + floatToStr( dane[ wt, k < 2 ]/1000 ) ); if dane[ sr, k =5 ] > 3E2 then...; typeopis = ( nazw, imie ); var grupa: array[ , opis ] of string[20]; begin grupa[ 1, nazw ] := 'Kowalski'; if grupa [ k, imie ] = 'Jan' then...; for k:= 1 to 10 do Memo1.lines.add( grupa[ k, nazw ] + + grupa[ k, imie ] ); if grupa [ k, nazw ][1] = 'S' then...; Przykłady:

15 const osoby: array[ 1..3] of string[20] = ( 'Nowak', 'Kowalski', 'Nycz' ); wartości początkowe zmiennych tablicowych dla tablic konstrukcja typu ( (st 11, st 21,..., st n1 ), (st 12, st 22,..., st n2 ),... (st 1m, st 2m,..., st nm ) ) const wyniki: array[ 1..3, 1..4] of real = ( ( 3, 4, 4.5, 5), ( 2, 3.5, 5.0, 4.5) (5.0, 4, 3.5, 2) )

16 type dni_tyg = ( pn, wt, sr, cz, pt, sb); dane= array[ 1..10, dni_tyg ] of string[20]; var rozklad: array[ 1..10] of dane; grupa,x3: dane; x1:string; x2:char; begin rozklad[ 1 ][ 1, pn ] := 'matematyka'; //grupa1 termin 1 poniedziałek rozklad[ 2, 3, pt ] := 'fizyka'; //...można też tak rozklad[ 3] [4][ sb ]:= 'informatyka'; //... lub tak grupa[ 3, pt ] := 'fizyka'; x1 := grupa [ 2,sb]; //x1 to element typu string x2 := grupa [ 2,sb][ 8 ]; //x2 to 8–my znak elementu 2 x3 := rozklad [ 2 ]; // tablica dla 2 grupy end; Tablice hierarchiczne: Zagnieżdżanie tablic – rozkład zajęć

17 Wczytać N liczb do wektora i zsumować co drugie (nieparzyste indeksy) const N=100; type zakres = 1..N; var k, k_max: zakres; dana: string; suma: real; x: array [ 1.. N ] of real; begin k_max := Memo1.Lines.Count; //przepisanie z Memo do tablicy for k := 1 to k_max do x [ k ] := StrToFloat(Memo1.Lines [ k -1]); suma := 0; for k := 1 to ( k_max+1 ) div 2 do suma := suma + x [ 2*k - 1 ]; Memo1.Lines.add( 'Suma w nieparzystych wynosi: ' + FloatToStr( suma ) ); end;

18 Edycja wielowierszowa TStringGrid właściwości: informacja tekstowa zorganizowana w tabelę (wiersze, kolumny) ColCount, RowCount:integer- liczba kolumn i wierszy FixedCols, FixedRows:integer- liczba stałych (szarych) kolumn i wierszy Cells[nr_k, nr_w: integer]: string- zawartość komórki Rows, Cols[nr].ComaText:string- cały wiersz, kolumna (ciąg wartości) służy do programowego wpisywania tekstu ColWidths[nr]- szerokość w pikselach RowHeights[nr]- wysokość w pikselach Options- opcje (np. goEditing)

19 Przykłady: StringGrid1.Cols[0].CommaText := ', 1, 2, 3, 4'; StringGrid1.Rows[0].CommaText := ', Nazwisko, Imię, kwota'; StringGrid1.Rows[0].CommaText := ', " Nazwisko", " Imię", " kwota"'; StringGrid1.Cells[1, 2]:= 'Kowalski'; StringGrid1.Cells[2, 2]:= 'Jan'; StringGrid1.Cells[3, 2]:= '123,00 zł'; StringGrid1.Options := StringGrid1.Options + [goEditing]; StringGrid1.Options := StringGrid1.Options + [goColSizing, goRowSizing]; Options jest tzw. typu zbiorowego (nie znamy jeszcze) – jeśli zbiór zawiera goEditing (true w ObjectInspektorze) to można edytować komórkę w czasie biegu programu

20 Wykorzystanie tablic w grafice bitmapowej Niektóre komponenty (wizualne) posiadają właściwość obiektową Canvas (tło, płótno) Form1.Canvas.Pixels[ 100, 100] :=clRed; Canvas posiada właściwość: Pixels [ N, M] która umożliwia dostęp do pikseli i modyfikację ich koloru. Możemy ją traktować jak dwuwymiarową tablicę o wymiarach współrzędnych komponentu, wypełnioną danymi typu TColor Przykład – przypisanie koloru N pixel komponent M

21 Przykład - linia prosta var i:integer; begin for i:=1 to 85 do Form1.Canvas.Pixels[ 400+i, 400+2*i] :=clRed; end;

22 var w,k,w1,k1:integer; begin for w:=1 to 5 do for k:=1 to 5 do for w1:=1 to 25 do for k1:=1 to 25 do if ((w+k) mod 2 = 0) then Form1.Canvas.Pixels[ 100+(w-1)*25+w1, 100+(k-1)*25+k1] :=clRed; end; Przykład zagnieżdżania pętli - szachownica Form1.Canvas.Pixels[ 100+(w-1)*50+w1, 100+(k-1)*50+k1] :=rgb(120*w,20*(w+k),200*k); Można użyć standardowej funkcji rgb do modyfikacji koloru z argumentami zależnymi od liczników "pętli":