modsim podstawy

background image

MODSIM – podstawy języka

Języki symulacyjne - MODSIM

1

Michał Kapałka

mkapalka@wat.edu.pl

MODSIM – Podstawy języka

1.

Podstawowe cechy języka:

a.

język obiektowo zorientowany do programowania symulacji

dyskretno-zdarzeniowej

b.

składnia zbliżona do składni języków: Ada, Modula 2, Pascal

c.

wersje dla systemów: Windows, Windows NT, UNIX, OS/2 na

platformy sprzętowe PC oraz RISC

d.

MODSIM II wymaga preinstalowanego środowiska C/C++ (np..

MSVC v 1.5)

2.

Umożliwia realizację:

a.

upływu czasu

b.

interakcji obiektów

c.

wizualizacji i animacji

d.

monitorowania przebiegu symulacji

3.

Programy w MODSIM

Moduły:

- dokładnie jeden moduł główny

MAIN MODULE (nazewnictwo: Mnazwa.mod)

- dowolną liczbę par modułów skojarzonych w osobnych plikach:

DEFINITION MODULE - zawiera deklaracje struktur, procedur i

obiektów; udostępnia procedury innym modułom, nie może być

kodu wykonywalnego (nazewnictwo: Dnazwa.mod)

IMPLEMENTATION MODULE - zawiera kod wykonywalny oraz

dodatkowe deklaracje (nazewnictwo: Inazwa.mod)

- stałe, typy, zmienne i procedury zadeklarowane w module

DEFINITION są widoczne w skojarzonym IMPLEMENTATION oraz

mogą być importowane z innych modułów

Importowanie:

elementy zaimportowane do modułu DEFINITION nie są

widoczne w IMPLEMENTATION

nie można importować z modułu MAIN

do importowania służy polecenie IMPORT, np.

FROM UtilMod IMPORT DateTime, Delay;

sekwencja FROM ... IMPORT ... musi być umieszczona na

początku modułu (przed innymi sekwencjami poleceń)

Identyfikatory:

Nazwy zdefiniowanych przez użytkownika elementów

programowych, np. modułów, stałych, zmiennych, typów,

procedur itd.

Wymagania:

o

nierozdzielony ciąg znaków (bez spacji, myślników oraz

podkreśleń)- liter i/lub cyfr

o

pierwszy znak- litera (!)

Uwaga: w MODSIM rozróżnia się małe/wielkie litery

Przykład:

o

licznik, LICZNIK, Pole1, liczbaStanowiskObslugi...

Deklaracje:

Słowa kluczowe położone przed częścią kodu programowego,

opisującą definiowane przez użytkownika wyrażenia

przyjmujące stałe i zmienne wartości oraz opisujące nowe typy

danych

Definiowanie stałej wartości:

o

CONST

MaxLiczbaPacjentow = 30;

Definiowanie nowego typu danych:

o

TYPE

DniWolne = ( Sobota, Niedziela );

DynamicznaTablica = ARRAY INTEGER OF

REAL;

Definiowanie wyrażenia przyjmującego wartości zmienne:

o

VAR

liczbaPacjentow : INTEGER;

tablica : DynamicznaTablica; {zmienna referencyjna}

Automatyczna inicjalizacja wartości zmiennych podstawowego

typu :INTEGER: 0,REAL : 0.0,BOOLEAN : FALSE,STRING: null

,CHAR: CHR(0)

Operatory:

Podstawowe działania

:=

przypisanie

+

dodawanie/konkatenacja łańcuchów string

-

odejmowanie/znak ujemności

*

mnożenie

/

dzielenie rzeczywiste

DIV

dzielenie całkowitoliczbowe

MOD

modulo

Relacje logiczne

= ,<> ,<, <=, >

Działania logiczne

OR , AND, NOT

Uwaga: operandy muszą być kompatybilne

Instrukcje sterujące:

Instrukcja warunkowa IF

Instrukcja wyboru CASE

IF Wyrażenie logiczne1
Sekwencja działań
[ ELSIF Wyrażenie logiczne2
Sekwencja działań]
[ ELSIF Wyrażenie logiczne3
Sekwencja działań]
[ ELSE
Sekwencja działań ]
END IF;

CASE [typ prosty | string]
WHEN a..e, m: Sekwencja działań
WHEN p: Sekwencja działań
WHEN x...z: Sekwencja działań
[ OTHERWISE

Sekwencja działań ]
END CASE;

Instrukcje pętli WHILE

Instrukcje pętli LOOP

WHILE Wyrażenie logiczne
Sekwencja działań
END WHILE;

LOOP
Sekwencja działań
END LOOP;

Instrukcje pętli REPEAT

Instrukcje pętli FOR

REPEAT
Sekwencja działań
UNTIL Wyrażenie logiczne;

FOR ident := wyrażenie TO | DOWNTO
wyrażenie [BY wyrażenie]
Sekwencja działań
END FOR;

Instrukcje pętli FOREACH

FOREACH obiekt IN GROUP
Sekwencja działań
END FOREACH;

Instrukcja natychmiastowego opuszczenia pętli: EXIT

Uwaga: -END występuje w parze z nazwą pętli

Procedury:

Nazwana, ograniczona kluczowymi słowami część kodu

programowego, dostępna z innych części programu poprzez

nazwę, realizująca określone operacje

Typy:

o

funkcje- określają zwrotnie wartość

o

procedury- nie zwracają żadnych wartości

Deklaracja :

PROCEDURE NazwaProcedury(IN w1:W1;INOUT w2:W2;OUT

w3:W3)[ : TypZwracanejWartości];

CONST ...TYPE ... VAR ...

background image

MODSIM – podstawy języka

Języki symulacyjne - MODSIM

2

Michał Kapałka

mkapalka@wat.edu.pl

BEGIN

......

[RETURN ...]

END PROCEDURE;

Wywołanie procedury:

o

[w := ] NazwaProcedury(... , ... , ...);

Lista parametrów:

o

IN- wartość przekazywana do procedury

o

OUT- wartość zwracana przez procedurę po słowie

RETURN

o

INOUT- wartość zmiennej przekazana do procedury i

zwrócona do tej zmiennej, bez tworzenia kopii

zmiennej

Złożone typy danych:

Struktury statyczne :
FIXED ARRAY- uporządkowany skończony zbiór elementów jednego
typu
Pole = (..., figuraSzachowa, ...);
planszaSzachowa = FIXED ARRAY [1..8],[1..8] OF Pole;

elementy tablicy są jednego typu

elementy tablicy muszą mieć ustalony rozmiar

alokują ilość pamięci, zależną od ilości i typu
zadeklarowanych w definicji tablicy elementów

dostęp do elementów tablicy przez indeksy: plansza[2, 3]

nie mogą być przekazywane jako parametr IN procedur

FIXED RECORD- zdefiniowana przez użytkownika struktura danych
złożona ze skończonej liczby nazwanych pól prostego lub złożonego
typu
SrodekWalki = FIXED RECORD;
typ : TypSrodkaWalki;
zasieg : REAL;
szybkostrzelnosc : REAL;
jednostkaAmunicyjna : INTEGER;
END RECORD;

elementy rekordu muszą mieć ustalony rozmiar

alokują ilość pamięci, zależną od ilości i typu zadeklarowanych w
definicji rekordu pól

dostęp do pola uzyskuje się przez złożenie nazwy rekordu
oraz nazwy pola, np. srodekwalki.zasieg

może być używany w operacjach arytmetycznych oraz
wyrażeniach logicznych, np. srodekwalki.zasieg := 500.0;

Struktury dynamiczne :
ARRAY : tablica dynamicznie powoływana i usuwana przez
procedury wbudowane NEW oraz DISPOSE
VAR kolejkiSklepu : ARRAY INTEGER, INTEGER OF BOOLEAN;
k : INTEGER;
BEGIN

... NEW( kolejkiSklepu, 1..5);

FOR k := 1 TO 5

NEW(kolejkiSklepu[k], 1..k); DISPOSE(kolejkiSklepu[k]);

END FOR; ...

DISPOSE(kolejkiSklepu);

w przypadku tablicy wielowymiarowej należy pamiętać
o oddzielnym powołaniu jej pól

procedurą DISPOSE można zwalniać tylko wcześniej
zaalokowane obszary pamięci

do chwili powołania tablicy typ ARRAY jest
inicjalizowany na wartość NILARRAY

tablice mogą być operandami w wyrażeniach logicznych
’ = ’, ’ < > ’.

RECORD : struktura danych podobna do FIXED RECORD
- różnice:

zajmuje pamięć dopiero po wykonaniu NEW(...), zwalnia
natychmiast po wykonaniu DISPOSE(...)

pola mogą być dynamicznymi strukturami danych

TYPE

graczType = RECORD

imie : STRING;

team : STRING;

pozycja : positionType;

kolejnyGracz : graczType;

END RECORD;

VAR

team, gracz : playerType;

BEGIN

NEW(gracz);

team :=gracz;

NEW(gracz);

gracz.kolejnyGracz := team;

team := gracz;...

dla rekordu predefiniowane są typy:

NILREC - wartość zmiennej typu RECORD do chwili zaalokowania
pamięci
ANYREC - kompatybilny z każdym typem RECORD, nie wolno
używać go w procedurze NEW

rekordy mogą być operandami w wyrażeniach logicznych z
operatorami: ’ = ’ , ’ < > ’

Obiekty:

OBJECT : dynamicznie powoływana i usuwana struktura danych (
poprzez NEW(...) i DISPOSE(...) )

zajmuje pamięć dopiero po wykonaniu NEW(...), zwalnia
natychmiast po wykonaniu DISPOSE(...)

pola opisują cechy obiektu- mogą być dowolnego typu

metody opisują zachowanie obiektu- są odpowiednio
formułowanymi procedurami

MODSIM II zapewnia:

dziedziczenie

polimorfizm

hermetyzację danych i metod

interakcje obiektów

hierarchiczność- kompatybilność typów w dzedziczeniu

Podstawowe metody:
ASK - działanie natychmiastowe, podobne do działania procedury
lub funkcji- nie wytraca czasu symulacji
Deklaracja:
ASK METHOD nazwa_metody [(lista parametów)]
ASK METHOD PodajStan( INOUT stan : REAL );
Wywołanie:
ASK obiekt [TO] nazwa_metody [(lista parametrów)]
ASK kasa TO PodajStan( aktualnyStan );

TELL - związana jest z upływem czasu symulacji;
w jednej chwili może być wykonywane kilka metod TELL
Deklaracja:
TELL METHOD nazwa_metody [(lista parametrów)]

TELL METHOD Obsluga( IN czas : REAL );
Wywołanie:
TELL obiekt [TO] nazwa_metody [(lista parametrów)] [ IN
opóźnienie]
TELL kasa TO Obsluga( 5.0 );
WAIT DURATION,WAIT FOR, WAIT FOR … TO FIRE – związane z
synchronizacją i upływem czasu


Wyszukiwarka

Podobne podstrony:
Podstawowe zasady udzielania pomocy przedlekarskiej rany i krwotoki
Farmakologia pokazy, Podstawy Farmakologii Ogólnej (W1)
Podstawy fizyczne
CZLOWIEK I CHOROBA – PODSTAWOWE REAKCJE NA
Podstawy elektroniki i miernictwa2
podstawy konkurencyjnosci
KOROZJA PODSTAWY TEORETYCZNE I SPOSOBY ZAPOBIEGANIA
PODSTAWOWE ZABIEGI RESUSCYTACYJNE (BLS) U DZIECI
01 E CELE PODSTAWYid 3061 ppt
Epidemiologia jako nauka podstawowe założenia
PODSTAWY STEROWANIA SILNIKIEM INDUKCYJNYM
06 Podstawy syntezy polimerówid 6357 ppt
4 socjalizacja jako podstawowy proces spoeczny
Podstawy MN 2007
Podstawy zzl 3

więcej podobnych podstron