Okna i liczby pseudolosowe

Podobne dokumenty
Wykład VII PASCAL - grafika;

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

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

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

Moduł graph w Pascalu

Programowanie w Turbo Pascal

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

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

Tryb graficzny w Pascalu

GRAFIKA PROGRAMOWANA W PASCALU ==================================

Użycie przestrzeni papieru i odnośników - ćwiczenie

lekcja 8a Gry komputerowe MasterMind

Przed rozpoczęciem pracy otwórz nowy plik (Ctrl +N) wykorzystując szablon acadiso.dwt

Programowanie. Grafika w języku j programowania. Klasa 2 Lekcja 16 GRAFIKA

Jak zrobić klasyczny button na stronę www? (tutorial) w programie GIMP

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Język programowania PASCAL

Box model: Content. Content - obszar zawartości określany jest za pomocą deklaracji wysokości i szerokości.

Lekcja 5 - PROGRAMOWANIE NOWICJUSZ

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

RYSUNEK TECHNICZNY I GEOMETRIA WYKREŚLNA INSTRUKCJA DOM Z DRABINĄ I KOMINEM W 2D

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

Programowanie. Wprowadzanie danych i wyprowadzanie wyników. Klasa 2 Lekcja 24 WEJŚCIE/WYJŚCIE

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

Obsługa klawiszy specjalnych

Celem ćwiczenia jest zapoznanie się z podstawowymi funkcjami i pojęciami związanymi ze środowiskiem AutoCAD 2012 w polskiej wersji językowej.

CorelDraw - podstawowe operacje na obiektach graficznych

Szybkie tworzenie grafiki w GcIde

AUTOCAD teoria i zadania z podstaw rysowania Rysowanie linii, prostej, półprostej, punktu, trasy, polilinii. Zadania geodezyjne.

TWORZENIE OBIEKTÓW GRAFICZNYCH

3.7. Wykresy czyli popatrzmy na statystyki

Laboratorium z Grafiki InŜynierskiej CAD. Rozpoczęcie pracy z AutoCAD-em. Uruchomienie programu

Tak przygotowane pliki należy umieścić w głównym folderze naszego programu. Klub IKS

Jak przesłać mapę do urządzenia lub na kartę pamięci?

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

MS Word Długi dokument. Praca z długim dokumentem. Kinga Sorkowska

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Główne elementy zestawu komputerowego

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

Scenariusz lekcji Ozobot w klasie: Spacer losowy po układzie współrzędnych

Zaznaczanie komórek. Zaznaczenie pojedynczej komórki polega na kliknięciu na niej LPM

AKADEMIA MORSKA KATEDRA NAWIGACJI TECHNICZEJ

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Instytut Politechniczny Państwowa Wyższa Szkoła Zawodowa. Diagnostyka i niezawodność robotów

Programowanie w języku Pascal

INSTRUKCJA KALIBRACJI TRUETRUE

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Minimalna wspierana wersja systemu Android to zalecana 4.0. Ta dokumentacja została wykonana na telefonie HUAWEI ASCEND P7 z Android 4.

Raporty systemowe. Omówienie funkcjonalności. Spis treści

Ćwiczenie pochodzi ze strony

Ćwiczenie 4 - Tabele

CorelDraw - obiekty tekstowe

Luty 2001 Algorytmy (7) 2000/2001

Podczas tej lekcji przyjrzymy się, jak wykonać poniższy rysunek przy pomocy programu BobCAD-CAM

4. Rysowanie krzywych

Program graficzny MS Paint.

Opis implementacji: Poznanie zasad tworzenia programów komputerowych za pomocą instrukcji języka programowania.

Tworzenie i modyfikacja modelu geologicznego

Baltie - programowanie

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

2 Przygotował: mgr inż. Maciej Lasota

Lokalizacja jest to położenie geograficzne zajmowane przez aparat. Miejsce, w którym zainstalowane jest to urządzenie.

Przedmiotowy Konkurs Informatyczny LOGIA powołany przez Mazowieckiego Kuratora Oświaty

Program V-SIM tworzenie plików video z przebiegu symulacji

Ćwiczenie nr 2 - Rysowanie precyzyjne

Ćwiczenie Stany nieustalone w obwodach liniowych pierwszego rzędu symulacja komputerowa

Informacje o członkach WSRM na

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Podstawy pozycjonowania CSS

Narysujemy uszczelkę podobną do pokazanej na poniższym rysunku. Rys. 1

Podstawy i języki programowania

Ilość cyfr liczby naturalnej

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

ToonDoo Maker tworzenie pojedynczej sceny komiksowej

Pokaz slajdów na stronie internetowej

4.Arkusz kalkulacyjny Calc

Rysowanie punktów na powierzchni graficznej

Niezawodność diagnostyka systemów laboratorium. Ćwiczenie 2

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów...

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Programowanie Delphi obliczenia, schematy blokowe

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Instrukcja wprowadzania graficznych harmonogramów pracy w SZOI Wg stanu na r.

Modelowanie krawędziowe detalu typu wałek w szkicowniku EdgeCAM 2009R1

Podstawy MATLABA, cd.

Cel ćwiczenia: Celem ćwiczenia jest nabranie wprawy w rysowaniu kół i okręgów o zadanych rozmiarach.

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego

Pokażę w jaki sposób można zrobić prostą grafikę programem GIMP. 1. Uruchom aplikację GIMP klikając w ikonę na pulpicie.

Tworzenie szablonów użytkownika

Instrukcja rejestracji programu MicroSurvey FieldGenius.

Zajęcia z aplikacją ScratchJr mogą zostać przeprowadzone na dwa sposoby:

Pomorski Czarodziej 2016 Zadania. Kategoria C

Informatyka II. Laboratorium Aplikacja okienkowa

Zadanie Wstaw wykres i dokonaj jego edycji dla poniższych danych. 8a 3,54 8b 5,25 8c 4,21 8d 4,85

Transkrypt:

8.1. Okno graficzne ViewPort Zacznijmy od rzutu oka na tabelkę graficznych funkcji i procedur bibliotecznych. Znajduje się tam procedura graficzna SetViewPort(), która służy do tworzenia okien graficznych na ekranie. Jeśli chcemy, by Pascal otworzył okno w odpowiednim miejscu, musimy w momencie wywołania tej procedury podać kilka dodatkowych informacji. Omówione to zostało krok po kroku w poniższym podrozdziale. Okna graficzne klasy ViewPort są prostokątne, wystarczy zatem podać cztery współrzędne ekranowe w pikselach: q q X1 współrzędna pozioma górnego lewego narożnika okna (Left-Top X Coordinate), q q Y1 współrzędna pionowa górnego lewego narożnika okna (Left-Top Y Coordinate), q q X2 współrzędna pozioma dolnego prawego narożnika okna (Right-Bottom X Coordinate), q q Y2 współrzędna pionowa dolnego prawego narożnika okna (Right-Bottom Y Coordinate). Poza tym może się okazać, że rysunek nie mieści się w oknie. Możemy zażyczyć sobie, by to, co wystaje poza okno, zostało obcięte (ClipOn) lub było rysowane nadal już poza oknem (ClipOff). Aby zaakcentować granice okna, wybierzemy tryb rysowania z obcinaniem, zastosujemy więc tę procedurę w następujący sposób: SetViewPort(100, 100, 600, 400, ClipOn); Cały ekran graficzny czyści się tak: ClearDevice; 8 Okna i liczby pseudolosowe

Rozdział 8 t Okna i liczby pseudolosowe Aktywne okno graficzne stanowiące część ekranu czyści się tak: W przykładowym programie powinno być wyraźnie widać, że na ekranie zostało utworzone okno graficzne, które przykryło część ekranu. W tym celu najpierw na całym ekranie narysujemy przecinające się na kopertę linie, a następnie utworzymy okno i wyczyścimy je. Przykryta część linii zniknie. Line(0, 0, GetMaxX, GetMaxY); Line(0, GetMaxY, GetMaxY, 0);... SetViewPort(100, 100, 600, 400, ClipOn); Lewy górny narożnik ekranu ma współrzędne: X = 0, Y = 0. Układ współrzędnych ekranowych przenosi się do lewego górnego narożnika okna graficznego. Aby pokazać tę zmianę, zastosujemy dwukrotnie przeniesienie kursora graficznego do punktu o współrzędnych ekranowych (50 50). Za pierwszym razem będą to współrzędne bezwzględne, za drugim względne, liczone już od narożnika nowo utworzonego okna. W programie przykładowym możemy to zrobić na przykład tak: PutPixel(50, 50, White); { <-- zapal piksel bialy w punkcie X = 50, Y = 50 } OutText( <-- Tu punkt 50 x 50 );... SetViewPort(100, 100, 600, 400, ClipOn); PutPixel(50, 50, White); { <-- zapal piksel w punkcie X = 50, Y = 50 (W OKNIE!) } OutText( <-- Tu punkt 50 x 50, tym razem w OKNIE ); By sam fakt powstania okna był wyraźnie zauważalny, możemy zamalować całą powierzchnię okna na przykład na czerwono. Możemy w tym celu skorzystać ze znanej już procedury SetFillStyle() (ustaw rodzaj wypełniacza), a następnie użyć procedury FloodFill() (wypełnij wnętrze). SetFillStyle(SolidFill, Red); lub tak: SetFillStyle(1, Red); Po ustaleniu rodzaju i koloru wypełniacza pozostało już tylko wypełnić okno: FloodFill( 0, 0, White ); { - rozpocznij wypelnianie obszaru od punktu 0,0 - kontynuuj wypelnianie az do obrzeza obszaru w kolorze bialym white } 70

8.2. Generowanie i stosowanie liczb pseudolosowych Możemy wstawić na przykład kolor czarny (Black), żółty (Yellow) czy niebieski (Blue). Żadnego z tych kolorów procedura z całą pewnością nie napotka wewnątrz okna będzie więc kontynuowała wypełnianie aż zamaluje całe okno. Właśnie o to nam chodziło. 8.2. Generowanie i stosowanie liczb pseudolosowych Ostatnia rzecz, którą zastosujemy w programie przykładowym, to generator liczb pseudolosowych. Nazwa procedury, która go uruchamia, jest taka sama w kilku różnych językach programowania. Turbo Pascal nie jest tu wyjątkiem. Brzmi ona Randomize(). Można łatwo sprawdzić, że maszyna losująca Turbo Pascala generuje zawsze ten sam ciąg liczb pseudolosowych. Wystarczy zastosować w programie (bez Randomize()):... X := Random(100); Write(X);... Istota tej funkcji polega na tym, że od wywołania Randomize() do pierwszego losowania X := Random(100); w programach mija zwykle różna ilość czasu. Pozwala to maszynie losującej trochę się pokręcić. Po uruchomieniu generatora możemy za pomocą funkcji X := Random(N); przypisać zmiennej wartość pseudoprzypadkową z wybranego zakresu wartości. Przedział wartości podajemy jako parametr w momencie jej wywołania. Na przykład do generowania liczb losowych potrzebnych do typowania zakładów totalizatora potrzebny jest ciąg 6 wartości losowych z zakresu 1 49. Takie liczby można wygenerować tak: Program Randomizacja; Uses Crt; Var X, i : Integer; BEGIN Randomize; For i := 1 To 6 Do Begin X := Random(49) + 1; WriteLn(X); End; END. Oto przykład wykorzystania liczb pseudolosowych Llos1 i Llos2 w programie. Po ich wylosowaniu zastosujemy je jako współrzędne końca linii prostej: Randomize; Llos1 := Random(700); 71

Rozdział 8 t Okna i liczby pseudolosowe Llos2 := Random(500);... Line(100, 100, Llos1, Llos2); Dzięki temu wszystkie linie rozpoczynają się w jednym punkcie (tu: o współrzędnych okienkowych 100, 100) i tworzy się pęk półprostych. Liczby 700 i 500 służące do tzw. skalowania liczb pseudolosowych są duże, toteż wiele linii będzie miało punkt końcowy już poza granicami okna. Pamiętajmy, że w takiej sytuacji rysunek przesłoni także to, co znajduje się poza oknem. Aby rysunek był bardziej przyjemny optycznie, wykorzystano tu liczbę losową także do określania koloru rysowanej linii prostej. Zamiast posługiwać się dodatkową zmienną pomocniczą: Z := Random(15); SetColor(Z); postąpiono prościej: SetColor( Random(15) ); Liczbę kolorów, spośród których wolno losować, ograniczono do 15. Poniżej zaprezentowano cały kod programu. Listing L801.PAS Program Okno_Graficzne; Uses Crt, Graph; Var Karta, Tryb, i, j, LLos1, LLos2: Integer; BEGIN Karta := Detect; InitGraph(Karta, Tryb, C:\TP\BGI ); Line(0, 0, GetMaxX, GetMaxY); Line(0, GetMaxY, GetMaxX, 0); PutPixel(50, 50, White); OutText( <-- Tu wspolrz. 50 x 50 calego ekranu. ); MoveTo(10, 450); OutText( Czekam na klawisz... ); SetViewPort(100, 100, 500, 250, ClipOn); SetFillStyle(1, Red); FloodFill(0, 0, Red); 72

8.2. Generowanie i stosowanie liczb pseudolosowych Randomize; PutPixel(50, 50, White); OutText( <-- Tu, wspolrz. 50 x 50 w oknie ); Repeat Begin SetColor(Random(15)); LLos1 := Random(700); LLos2 := Random(500); Line(100, 100, LLos1, LLos2); End; Until KeyPressed; CloseGraph; END. Ekran roboczy programu wygląda tak, jak pokazano na rysunku 8.1. Rysunek 8.1. Okno graficzne i pęk półprostych generowanych losowo 73

Rozdział 8 t Okna i liczby pseudolosowe UWAGA Losowanie może odbywać się z powtórzeniami (domyślnie) albo bez powtórzeń. Przykład losowania bez powtórzeń na nośniku elektronicznym. Dotychczasowe programy posługują się już zmiennymi, procedurami i funkcjami, choć rozdział poświęcony zmiennym dopiero przed nami. Jeśli poniższe zadania będą sprawiać kłopoty, zaleca się powrót do nich po lekturze rozdziału o zmiennych. ĆWICZENIA 1. 2. Narysuj schemat blokowy przykładowego programu z tego rozdziału. Rozważ możliwość parametryzacji przykładowego programu z tego rozdziału. 3. Napisz dowolny program drukujący liczby pseudolosowe w trybie tekstowym. Upewnij się, że po ujęciu procedury { Randomize; } w nawiasy klamrowe (znaki komentarza) kolejność liczb będzie zawsze taka sama, a po jej odblokowaniu kolejność ta zmieni się. 74