INFORMATYKA Studia Niestacjonarne Elektrotechnika. Wprowadzenie. Zakres wykładu dr inż. Michał Łanczont

Podobne dokumenty
Moduł graph w Pascalu

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne. TEMAT 8: Moduły standardowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

Kod źródłowy programu: program Grafika1; uses crt, graph; (1) var sterownik, tryb:smallint; (2)

Język programowania PASCAL

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie Delphi obliczenia, schematy blokowe

Programowanie w Turbo Pascal

INFORMATYKA Studia Niestacjonarne Elektrotechnika

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

P R OGRA M OW A N I E KOMPUTERÓW Ćwiczenia laboratoryjne

Pascal - grafika. Uruchomienie trybu graficznego. Moduł graph. Domyślny tryb graficzny

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Pascal - wprowadzenie

PASCAL Kompendium. Środowisko TURBO PASCAL Skróty klawiaturowe. Edycja kodu Pomoc spis treści. Skopiowanie zaznaczonego bloku do schowka

Okna i liczby pseudolosowe

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Instrukcja standardowa Writeln

Wprowadzenie do języka Pascal

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Kurs Turbo Pascal 7.0

INSTRUKCJA PUSTA. Nie składa się z żadnych znaków i symboli, niczego nie robi. for i := 1 to 10 do {tu nic nie ma};

Programowanie w języku Pascal

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

1 Podstawy c++ w pigułce.

Zakres wykładu INFORMATYKA. dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

LibreOffice Calc VBA

Algorytmika i Programowanie VBA 1 - podstawy

Programowanie w języku Python. Grażyna Koba

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

1 Podstawy c++ w pigułce.

WIADOMOŚCI WSTĘPNE WPROWADZENIE DO JĘZYKA TURBO PASCAL. Klawisze skrótów. {to jest właśnie komentarz, moŝna tu umieścić dowolny opis}

Wstęp do programowania. Różne różności

2.Sprawdzanie czy podana liczba naturalna jest pierwsza Liczba pierwsza to liczba podzielna tylko przez 1 i przez siebie.

PASCAL. Etapy pisania programu. Analiza potrzeb i wymagań (treści zadania) Opracowanie algorytmu Kodowanie Kompilacja Testowanie Stosowanie

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Wprowadzenie komentarzy do programu

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

Elementy języków programowania

TEST KOŃCOWY DLA KLASY III GIMNAZJUM- POGRAMOWANIE. Szkoła Podstawowa Nr 5. im. Księcia Mazowieckiego Siemowita IV w Gostyninie.

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Kompendium wiedzy z Pascala

Wstęp do programowania

Podstawy programowania w języku Visual Basic dla Aplikacji (VBA)

Podstawy programowania

Programowanie w języku Pascal

Wykład VII PASCAL - grafika;

INFORMATYKA. Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki. dr inż. Michał Łanczont

Krótki kurs obsługi środowiska programistycznego Turbo Pascal z 12 Opracował Jan T. Biernat. Wstęp

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Podstawy programowania

Pliki. Operacje na plikach w Pascalu

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Cw.12 JAVAScript w dokumentach HTML

Podstawy programowania skrót z wykładów:

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Turbo Pascal. Zadania z programowania z przykładowymi rozwiązaniami

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Wprowadzenie do programowania w VBA

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

I. Podstawy języka C powtórka

Programowanie strukturalne i obiektowe

Szybkie tworzenie grafiki w GcIde

Wstęp do programowania. Procedury i funkcje. Piotr Chrząstowski-Wachtel

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Metody numeryczne Laboratorium 2

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Informatyka 1. Przetwarzanie tekstów

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

Zasady Programowania Strukturalnego

ForPascal Interpreter języka Pascal

Przykład programu Rozwiązanie równania postaci:

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy Programowania Podstawowa składnia języka C++

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Spis treści. Podstawy posługiwania się komputerem

PASCAL FUNKCJE PREDEFINIOWANE

Bloki anonimowe w PL/SQL

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Obsługa klawiszy specjalnych

Transkrypt:

INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl Wprowadzenie Pascal Turbo Pascal Free Pascal FPC, HUGO, Lazarus Object Pascal Borland Delphi Język rzadko już stosowany, ale dzięki swojej konstrukcji IDEALNY do nauki programowani, implementacji programistycznej algorytmów Mając opanowane podstawy programowania w Pascal u łatwo nauczyć się programować w dowolnym języku 2 Zakres wykładu Środowisko programowania Free Pascal Compiler Struktura (szkielet) programu Komentarz Zmienne, deklaracje zmiennych Stałe, deklaracje stałych Funkcje konwersji zmiennych Instrukcje wejścia-wyjścia Działania matematyczne 3 1

Free Pascal Kompilator Pascal a dla 16, 32 i 64 bitowych procesorów Strona projektu: http://www.freepascal.org/ Kompilator v. 3.0.2. dostępny dla: ARM Intel/i386 PowerPC(64) AMD64/Intel64 Inne Game Boy Adv. Nintendo DS. Linux Windows CE Android DOS Linux Mac OS X Solaris Windows 32-bit AIX Linux Mac OS X Nintendo WII Linux FreeBSD Solaris Windows 64-bit SPARC I8086 MIPS Środowisko projektowania wizualnego: Lazarus - http://www.lazarus-ide.org/ 4 Środowisko FPC a. b. c. a) Menu główne b) Nazwa programu c) Numer aktywnego okna d) Wskaźnik położenia kursora e) Wiersz informacji f) Ekran edycji kodu f. d. e. 5 Środowisko FPC Nowy projekt Nowy projekt z szablonu Otworzenie istniejącego projektu Zapis pliku Wydruk Domyślny katalog roboczy Powłoka Wyjście Lista ostatnich projektów 6 2

Środowisko FPC Zapisany projekt może zostać skompilowany Alt+F9 Dla prawidłowego projektu zostanie utworzony plik wykonawczy *.exe 7 Środowisko FPC Kompilacja i uruchomienie Nawigacja po kodzie przy debugowaniu 8 Środowisko FPC Błędna kompilacja Informacja o błędach Wskazanie na linię kodu zawierającą błąd 9 3

Środowisko FPC Debug kontrola wykonania poszczególnych kroków programu Ułatwia analizę działania kodu, przepływu danych Pomaga w poszukiwaniu błędów 10 Struktura programu FPC Nagłówek programu program uses const type var label procedure function (Nazwa programu); Blok deklaracji (Moduły); (Stałe); (Typy); (Zmienne); (Etykiety); (Procedury); (Funkcje); 11 Struktura programu FPC Blok wykonawczy begin begin end; if then else goto repeat until for to/downto do while do with..do case of else end := procedura funkcja (Instrukcja złożona) (instrukcja warunkowa) (Instrukcja skoku) (Instrukcja Powtarzaj ) (Instrukcja pętli) (Instrukcja dopóki) (Instrukcja wiążąca) (Instrukcja wyboru) (Instrukcja przypisania) (Wywołanie procedury) (Wywołanie funkcji) end. 12 4

Struktura programu FPC Nagłówek programu Blok deklaracji Blok wykonawczy 13 Zmienne Integer -32 768 32 767 16, 32 lub 64bit 2, 4 lub 8 B Int64-2 63 2 63-1 64bit 8 B SmallInt -32 768 32 767 16bit 2 B ShortInt -128 127 8bit 1 B Byte 0 255 8bit 1 B Word 0 65 535 16bit 2 B LongWord 0 4 294 967 295 32bit 4 B Char Pojedynczy znak 8bit 1 B 14 Zmienne Boolean True lub False, 0 lub 1 8bit 1 B ShortString 255 znaków AnsiString String Extended Double Single Currency 2 31 znaków Praktycznie bez limitu 3,6 x 10-4951 5,0 x 10-324 1,5 x 10-45 8, 16, 24 bit 1,1 x 10 4932 80bit 10 B 1,7 x 10 308 64bit 8 B 3,4 x 10 38 32bit 4 B -922 337 203 685 477,5808 64bit 922 337 203 685 477,5807 1, 2 lub 3B 8 B 15 5

Zmienne i stałe Cechą charakterystyczną składni Pascal a jest to, że praktycznie każda linia kodu kończy się znakiem ; 16 Systemy liczbowe System dwójkowy (system binarny, pozycyjny) liczby zapisywane za pomocą dwóch cyfr 0 i 1. Podstawą systemu jest liczba 2. System dziesiętny system pozycyjny zapisywany za pomocą cyfr od 0 do 9, podstawą systemu jest cyfra 10 System szesnastkowy system hexadecymalny, o podstawie 16, do zapisu wykorzystuje się cyfry 0 do 9 i litery A, B, C, D, E i F 17 Dwójkowy na dziesiętny 53 53:2=26 reszty 1 26:2=13 reszty 0 13:2=6 reszty 1 3:2=3 reszty 0 3:2=1 reszty 1 1:2=0 reszty 1 1011101 1 0 1 1 1 0 1 6 5 4 3 2 1 0 (1*2 6 )+(0*2 5 )+(1*2 4 )+(1*2 3 ) +(1*2 2 )+(0*2 1 )+(1*2 0 )= 64+16+8+4+1= 93 110101 93 18 6

Szesnastkowy na 0 0 0000 12188 101110101101 1 1 0001 2 2 0010 C 12188:16=761 reszty 12 1011 1010 1101 3 3 0011 761:16=47 reszty 9 47:16:2 reszty 15 F 4 4 0100 2:16=0 reszty 2 B A D 5 5 0101 BAD 6 6 0110 2F9C 2 1 0 7 7 0111 2 F 9 C 8 8 1000 3 2 1 0 9 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 (2*16 3 )+(F*16 2 )+(9*16 1 )+(C*16 0 )= (2*16 3 )+(15*16 2 )+(9*16 1 )+(12*16 0 )= (2*4096)+(15*256)+(9*16)+(12*0)= 8192+3840+144+12= 12188 (11*16 2 )+(10*16 1 ) +(13*16 0 )= (11*256)+(10*16) +(13*1)= 2816+160+13= 2989 15 F 1111 12188 2989 19 Wyjścia-Wyjścia Program komputerowy komunikuje się z użytkownikiem za pomocą standardowych portów wejścia-wyjścia Wejścia: Klawiatura Dysk (plik) Myszka (inne urządzenie wskazujące) Wyjścia: Ekran monitora Dysk (plik) 20 Wejścia-Wyjścia Podstawowa komunikacja z portem wyjściowym, ekranem, realizowana jest za pomocą instrukcji : write( text, zmienna); writeln( text, zmienna); Druga wersja dodatkowo przenosi kursor do nowej linii w konsoli Wyświetla tekst ujęty w apostrofach lub zawartość zmiennej 21 7

Wejścia-Wyjścia Przy wyświetlaniu danych liczbowych możliwe jest sformatowanie jest do postaci wymaganej Liczba cyfr wyświetlana Liczba cyfr po przecinku Pi:=3.141592654; writeln(pi:4:3); writeln(25*pi:6:3); writeln(3.141592654:5:4) 22 Wejścia-Wyjścia Podstawowym wejściem programu jest klawiatura Komunikacja realizowana jest za pomocą funkcji: read(zmienna); readln(zmienna); Dodatkowa funkcja zatrzymanie działania programu i oczekiwanie na wciśnięcie dowolnego klawisza read; readln; 23 24 8

Komentarz Pisząc program należy mieć na uwadze, że pamięć autora może być zawodna oraz program może być analizowany i modyfikowany przez inne osoby Należy możliwie często opisywać przeznaczenie lub sposób działania istotnych fragmentów kodu Należy umieszczać w kodzie komentarze Tekst oznaczony jako komentarz jest pomijany przez kompilator 25 Komentarz W Pascalu komentarz może zostać zapisany na dwa sposoby: 1. Jednowierszaowa po podwójnym znaku slesha // Stosowana w celu opisu pojedynczego wiersza kodu programu a:=15; //współczynnik wielomianu 2. Wielowierszowa zamknięta między nawiasy klamrowe { } Stosowany przy opisie większych fragmentów kodu 26 Komentarz {Pozostawienie komentarza z niezamkniętym nawiasem oznacza że kompilator będzie traktował wszystko, writeln( Kod zostanie pominięty ); readln(y); aż do nawiasu zamykającego jako komentarz} writeln( Ta linia zostanie zinterpretowana popranie ); 27 9

Moduły Biblioteki zawierające dodatkowe funkcje i procedury owe moduły: 1.crt: obsługa tekstu i kursora w konsoli 2.graph: funkcje graficzne pascala 3.math: funkcje matematyczne 4.sysutils: narzędzia systemowe 5.dateutils: funkcje czasu 28 Moduł crt Czyszczenie okna konsoli: ClrScr; Kasowanie znaków w linii od aktywnego kursora ClrEol; Ustawienie pozycji kursora gotoxy(10,20); Sprawdzenie czy naciśnięty został klawisz if KeyPressed then 29 Kolor tekstu TextColor(red); Moduł crt Kolor tła za tekstem TextBackground(green); Odczytanie znaku naciśniętego klawisza x:=readkey; ReadKey: Odczytanie współrzędnych kursora writeln( x=,wherex,,y= WhereY); 30 10

Moduł crt Tworzenie nowego okna na ekranie Window(x1,y1,x2,y2); Pełny ekran konsoli ma wymiary 80 znaków w 25 wierszach x1,y1 współrzędne lewego górnego rogu okna x2,y2 współrzędne prawego dolnego rogu okna Window(20,10,60,15); {okno na środku ekranu} 31 Założenia programu: 1. Powitanie 2. Na środku ekranu zadaje pytania i pobiera dane o dane osobowe: a. imię, b. nazwisko, c. data urodzenia 3. Na pełnym ekranie wyświetla pełne powitanie z informacją o ilości dni do urodzin 32 diagram 33 11

kod program Program_1; uses Crt, sysutils, dateutils; var imie, nazwisko,data: string; dd,mm,yyyy :Word; dni: integer; begin writeln('dzień Dobry'); writeln('witam w moim pierwszym programie'); writeln('na początek proszę o odpowiedzenie na kilka pytań!'); 34 - kod write( Możemy zacząć...?'); readkey; ClrScr; window(25,8,55,17); writeln('podaj swoje imię:'); readln(imie); ClrScr; writeln('podaj swoje nazwisko:'); readln(nazwisko); ClrScr; writeln('podaj datę urodzenia w formacie yyyy-mm-dd:'); 35 kod readln(data); ClrScr; writeln('dziękujemy za podanie informacji!'); write('możemy kontynuować...!'); readkey; ClrScr; window(1,1,80,25); writeln('witam Cię serdeczne ',imie,' ',nazwisko,'.'); 36 12

- kod DeCodeDate(Date,yyyy,mm,dd); writeln (format ('Dzisiaj jest %d,%d,%d ',[dd,mm,yyyy])); DeCodeDate(strtodate(data),yyyy,mm,dd); dni:=daysbetween(encodedate(2017,mm,dd), Date); writeln('do twoich urodzin jest ',dni,' dni. '); readkey; end. 37 Konwersja daty systemowej do trzech zmiennych przechowujących informacje o roku, miesiącu i dniu DeCodeDate(Date, yyyy,mm,dd); Konwersja daty zapisanej w postaci roku, miesiąca i dnia do formatu DateTime EnCodeDate(yyyy,mm,dd); Funkcje wymagają aktywacji modułu dateutils 38 Obliczenie dni pomiędzy dwoma datami realizuje funkcja DaysBetween Funkcja wymaga podpięcia modułu dateutils d:=daysbetween(date1,date2); Zmienne date1 i date2 w formacie TDateTime Konwersja do formatu żądanego za pomoca funkcji konwersji (np.: StrToDate) lub funkcji EncodeDate() 39 13

y Formatowanie łańcucha tekstowego na podstawie danych zgromadzonych w tablicy Funkcja wymaga podpięcia modułu Sysutils Text:=format( tekst plus %d/%d/%d,[100,100,100]); d - liczba rzeczywista, przeważnie typu integer, u - nieokreślona liczba rzeczywista, 40 e - wartość zmiennoprzecinkowa, formatu "naukowego", f - wartość zmiennoprzecinkowa, do dwóch miejsc po przecinku, g - wartość zmiennoprzecinkowa, n - numer, z separatorem części dziesiętnych, m - wartość pieniężna, p - wskaźnik, adres do pamięci, s - łańcuch, x - wartość heksadecymalna. 41 Funkcja skoku W prostych programach stosuje się czasem funkcję skoku goto label; w celu powtórzenia określonego fragmentu kodu Jest to pozostałość z języków niestrukturalnych jak BASIC Obecne stosuje się pętle warunkowe Skorzystanie z funkcji wymaga zdefiniowania kotwicy typu Label i jej umieszczenia w wybranym miejscu kodu źródłowego 42 14

Funkcja skoku 43 Funkcje konwersji Funkcje systemowe wymagające modułu SysUtils Stosowane gdy wymagane jest dostosowanie zmiennej do wymogów wejściowych funkcji lub procedury FloatToStr StrToFloat CurrToStr StrToCurr Konwersja pomiędzy typem liczbowym, zmiennoprzecinkowym a znakowym Konwersja między typem walutowym a znakowym StrToDate DateToStr StrToTime TimeToStr IntToStr StrToInt Konwersja pomiędzy data lub czas a typem znakowym Konwerscja pomiędzy typem liczbowym, całkowitym a znakowym 44 Funkcje matematyczne Pascal w module math dostarcza programiście pokaźną bibliotekę funkcji matematycznych Funkcje trygonometryczne, operują na kontach podanych w radianach Funkcje wykładnicze Funkcje konwersji (radiany na stopnie itp.) Rachunek pseudolosowy Funkcje warunkowe 45 15

Funkcje matematyczne Podstawowe działania: +, -, *, / div dzielenie z obcięciem reszty mod dzielenie z zachowaniem reszty abs(x) moduł liczby x cell(x) zwraca liczbę całkowitą x floor(x) zwraca liczbę całkowitą x sqrt(x) liczy pierwiastek power (x,n) liczy potęgę n liczby x sign(x) zwraca znak x (-1,0,1) 46 Trygonometryczne sin(x) liczy sinus konta x w rad. cos(x) liczy cosinus tan(x) liczy tangens cotan(x), cot(x) liczy cotangens arcsin(x) liczy arcus sinus liczby arccos(x) liczy arcuscosinus liczby arctan(x) liczy arcustangens liczby degtorad(x) konwersje pomiędzy radtodeg(x) stopniani a radianami 47 Generator liczb losowych Pascal posiada rozbudowane narzędzia generowania liczb losowych Uruchomienie generatora liczb losowych randomize; Losowanie liczby z przedziału (0,1) random; Losowanie liczby z przedziału (0,±x), losowane są wartości całkowite z zadanego przedziału random(25); 48 16

Generator liczb losowych Losowanie liczby z zadanego przedziału (x,y), zwracana jest liczba całkowita z zadanego przedziału RandomRange(-100,80); Losowana jest liczba z podanego wektora (zbioru) liczb RandomFrom(wektor); Wektor zawiera liczby całkowite typu integer lub int64 49 Opóźnienie czasowe Czasami istnieje konieczność aby pisany program wykonywał określoną czynność w określonym czasie Pascal dostarcza w module Crt procedury delay(x), wstrzymującej działanie programu o x milisekund delay(2000); Co odpowiada 2 s 50 Opóźnienie czasowe 51 17

Grafika Free Pascal udostępnia moduł graph za pomocą którego można w oknie graficznym rysować obiekty wektorowe Za pomocą grafiki wektorowej można uzupełnić program o rysunki i wykresy Można ustawić jedną z predefiniowanych rozdzielczości o jednej z dostępnych palet barw 52 Grafika Otwarcie okna graficznego inicjowane jest poleceniem: InitGraph(gd,gm,Font_path); Zmiena Font_Path wskazuje katalog z czcionkami BGI, domyslnie można ustawić zmienną pustą Na zakończenie należy zamknąć okno graficzne poleceniem: CloseGraph; 53 Grafika Zmienna gd może przyjmować: 1. detect 3. D2bit 6. D12bit domyślna 4. D4bit 7. D16bit 2. D1bit 5. D8bit Zmienna gm może przyjmować: 1. 0 wykrywanie max 2. m320x200 3. m320x256 amiga 9. m640x400 10. m640x480 11. m800x600 4. m320x400 amiga/atari 12. m832x624 mac 5. m512x384 mac 13. m1024x768 6. m640x200 vga 14. m1280x1024 7. m640x256 amiga 15. m1600x1200 8. m640x350 vga 16. m2048x1536 54 18

Grafika GetMaxX, GetMaxY Maksymalne wartości X i Y dla aktywnego okna graficznego GetX, GetY aktualne współrzędne kursora X i Y MoveTo(x,y) przenosi kursor we skazane miejsce MoveRel(dx,dy) przesuwa kursor GetColor zwraca aktywny kolor ClearDevice czyści okno graficzne i ustawia kursor w (0,0) 55 Grafika Rysowanie łuku Arc(x,y,a,b,r); x,y środek łuku; a, b kąty otwarcia i zamknięcia łuku; r promień łuku Rysowanie prostokąta Bar(x1,y1,x2,y2); Rectangle(x1,y1,x2,y2); 56 Grafika Kolor linii: x nazwa koloru lub wartość numeryczna koloru SetColor(x); Wypełnienie: x rodzaj wypełnienia, y kolor wypełnienia SetFillStyle(x,y); 1. EmptyFill 2. SolidFill 3. LineFill 4. ltslashfill 5. SlashFill 6. BkSlashFill 7. LtBkSlashFill 8. HatchFill 9. XHatchFill 10.InterLeaveFill 11.WideDotFill 12.CloseDotFill 57 19

Grafika Elipsa Elipse(x,y,a,b,dx,dy); Rysowanie linii LineTo(x,y); LineRel(dx,dy); Rysowanie prostopadłościanu Bar3d(x1,y1,x2,y2,z,TOP); 58 Grafika Wycięty okrąg i elipsa PieScile(x,y,a,b,r); Sector(x,y,a,b,dx,dy); Okrąg Circle(x,y,r); Ustawianie stylu linii SetLineStyle(x,0,y); x: Solidln, Dottedln, Centerln, Dashedln y: NormWidth, ThickWidth 59 Grafika Pisanie tekstu OutText( Tekst pisany w oknie ); Tekst we wskazanym miejscu OutTextXY(x,y, Tekst na ekran ); Wyrównanie tekstu SetTextJustify(hor, ver); hor: LeftText, CenterText, RightText ver: BottomText, CenterText,TopText 60 20

Grafika Format tekstu SetTextStyle(font,kierunek,rozmiar); Font: DefaultFont, TriplexFont, SmallFont, SansSerifFont, GothicFont, ScriptFont, TSCRFont, LCOMFont, EuroFont, BoldFont Kierunek: HorizDir, VertDir Rozmiar: w pikselach 61 Program rysuje w oknie graficznym prostokąt o zadanych wymiarach, położeniu, kolorze linii Program rysuje wykreślony prostokąt obrócony o określony kąt względem zadanego punktu Program wykreśla podpis rysunku oraz opisuje obydwa prostokąty Program wyświetla rysunek przez 20s, po tym czasie zamyka się 62 Wyznaczanie współrzędnych punktu przy obrocie względem początku układu współrzędnych X n =Xcos(a) Ysin(a) Y n =Xsin(a)+Ycos(a) 63 21

W sytuacji gdy punkt obrotu nie jest w początku układu równania przyjmują postać X n =(X X o )cos(a) (Y Y o )sin(a)+x o Y n =(X X o )sin(a)+(y Y o )cos(a)+y o 64 Pascal rysuje prostokąt równolegle do osi xy Nie potrafi narysować prostokąta obróconego o zadany kąt Obrócony prostokąt należy narysować za pomocą funkcji LineTo lub DrawPoly DrawPoly wymaga znajomości tablic, które nie wchodzą w zakres tego wykładu 65 Sin(x) Cos(x) Round(x) Rectangle(x1,y1,x2,y2) MoveTo(x,y) LineTo(x,y) x div y DegToRad(x) Delay(x) Math, crt, graph 66 22

program przyklad; uses math, crt, graph; var a,b,x,y:integer; gd, gm:integer; xo,yo,alfa: integer; alfa_rad: single; xn,yn: integer; Begin 67 write('program rysuje prostokąt a następnie'); writeln(' obraca go względem zadanego punktu o podany kąt'); writeln(); writeln('podaj wymiary prostokąta (a,b) oraz współrzędne jego środka (x,y)'); write('a='); readln(a); write('b='); readln(b); write('x='); readln(x); write('y='); readln(y); 68 writeln('podaj punkt obrotu (x,y) oraz kąt obrotu alfa.'); write('x='); readln(xo); write('y='); readln(yo); write('alfa='); readln(alfa); alfa_rad:=degtorad(-alfa); 69 23

gd:=detect; gm:=0; initgraph(gd,gm,''); setcolor(red); rectangle(x - a div 2,y + b div 2,x + a div 2, y - b div 2); rectangle(round(x-a/2),round(y+b/2), round(x+a/2),round(y-b/2)); 70 xn:=round(((x-a/2)-xo)*cos(alfa_rad)- ((y+b/2)-yo)*sin(alfa_rad)+xo); yn:=round(((x-a/2)- xo)*sin(alfa_rad)+((y+b/2)- yo)*cos(alfa_rad)+yo); writeln('xn=',xn,' yn=',yn); moveto(xn,yn); 71 xn:=round(((x+a/2)-xo)*cos(alfa_rad)- ((y+b/2)-yo)*sin(alfa_rad)+xo); yn:=round(((x+a/2)- xo)*sin(alfa_rad)+((y+b/2)- yo)*cos(alfa_rad)+yo); writeln('xn=',xn,' yn=',yn); lineto(xn,yn); 72 24

xn:=round(((x+a/2)-xo)*cos(alfa_rad)-((y-b/2)-yo)*sin(alfa_rad)+xo); yn:=round(((x+a/2)-xo)*sin(alfa_rad)+((y-b/2)-yo)*cos(alfa_rad)+yo); writeln('xn=',xn,' yn=',yn); lineto(xn,yn); xn:=round(((x-a/2)-xo)*cos(alfa_rad)-((y-b/2)-yo)*sin(alfa_rad)+xo); yn:=round(((x-a/2)-xo)*sin(alfa_rad)+((y-b/2)-yo)*cos(alfa_rad)+yo); writeln('xn=',xn,' yn=',yn); lineto(xn,yn); xn:=round(((x-a/2)-xo)*cos(alfa_rad)-((y+b/2)-yo)*sin(alfa_rad)+xo); yn:=round(((x-a/2)-xo)*sin(alfa_rad)+((y+b/2)-yo)*cos(alfa_rad)+yo); writeln('xn=',xn,' yn=',yn); lineto(xn,yn); delay(5000); closegraph; readkey() end. 73 74 25