(Rozdział Opis wewnętrznego języka)

Wielkość: px
Rozpocząć pokaz od strony:

Download "(Rozdział Opis wewnętrznego języka)"

Transkrypt

1 POLITECHNIKA CZĘSTOCHOWSKA WYDZIAŁ INŻYNIERII MECHANICZNEJ I INFORMATYKI KATEDRA INŻYNIERII KOMPUTEROWEJ PRACA MAGISTERSKA Mechanizmy stosowane w systemach operacyjnych - system dydaktyczny (Rozdział Opis wewnętrznego języka) Sebastian Świerczyna nr albumu: kierunek: Informatyka specjalność: Inżynieria oprogramowania i Systemy Informatyczne promotor: dr inż. Jarosław Bilski Częstochowa

2 Spis treści 1. OPIS WEWNĘTRZNEGO JĘZYKA PODSTAWOWE INFORMACJE NA TEMAT JĘZYKA Bloki instrukcji Komentarze TYPY DANYCH, DEKLAROWANIE I OPERACJE NA NICH Typy zmiennych Deklarowanie zmiennych Operatory Konwersje między typami zmiennych INSTRUKCJE STERUJĄCE Instrukcja warunkowa - if Instrukcja iteracyjna - for FUNKCJE BIBLIOTECZNE Funkcje arytmetyczne Obsługa konsoli WRITE READ Obsługa komunikacji międzyprocesowej SEND BLOCK_SEND RECEIVE BLOCK_RECEIVE MSG_RESULT Obsługa semaforów CREATE_SEMAPHORE RELASE_SEMAPHORE OPEN_SEMAPHORE WAIT SIGNALIZE WAIT_MULTIPLE SEM_RESULT Obsługa urządzeń MAKE_DEVICE RELASE_DEVICE OPEN_DEVICE CLOSE_DEVICE WRITE CLEAR_DEVICE DEV_CLEAR SEEK POS SIZE Procesy i ich obsługa

3 CREATE_PROCESS GET_MY_ID SPIS TABEL

4 1. Opis wewnętrznego języka Aby użytkownik mógł przeprowadzać symulacje według własnego scenariusza, aplikacja została wyposażona w wewnętrzny język programowania. Niniejszy rozdział zawiera opis składni i reguł którymi należy kierować się podczas pisania programów w tym języku. Dokumentacja poszerzona jest o spis funkcji bibliotecznych, wraz z pełnym opisem ich działania. Koniecznym jest tak dokładne omówienie tego zagadnienia, gdyż język ten stanowi trzon systemu, a umiejętne z niego korzystanie umożliwia efektywną prace z symulatorem. 1.1 Podstawowe informacje na temat języka Język stosowany w opisywanym systemie jest w pewnym stopniu oparty na składni języka C. Zachowano najbardziej podstawowe elementy tego języka - umożliwiające deklarowanie zmiennych oraz operacje na tych zmiennych. Mamy także do dyspozycji funkcje IF i FOR - sterujące przebiegiem wykonywania programu. Możliwe jest również zamykanie poszczególnych linii programu w bloki. Wewnętrzny język został wzbogacony o wbudowane funkcje, służące zarządzeniem obiektami istniejącymi wewnątrz systemu. Każda linia zawierająca instrukcje musi być zakończona znakiem: ; (średnik). Wyjątkiem są linie instrukcji sterujących (IF, FOR). Dodatkowym obostrzeniem w stosunku do języka protoplasty jest to, że w pojedynczej linii może znaleźć się maksymalnie jeden rozkaz do wykonania Bloki instrukcji Składnia języka umożliwia zamykanie pewnych zbiorów następujących po sobie rozkazów w bloki. Bloki takie można zagnieżdżać, tzn. w każdym bloku może znaleźć się inny blok instrukcji. Takie zamknięcie instrukcji w blok jest konieczne przy podawaniu listy rozkazów do instrukcji sterujących. Dodatkowo warto pamiętać, że zmienne zadeklarowane w takich blokach mają zakres lokalny, ograniczający się właśnie do bloku, w którym zostały zadeklarowane. 4

5 Instrukcje, które chcemy zamknąć w blok, muszą być ujęte w nawiasy klamrowe ( {, } ). W linii, w której otwieramy, lub zamykamy taki blok, nie może znaleźć się żadna inna instrukcja. Przykład: { rozkaz; rozkaz; { rozkaz; } } Komentarze Wiersz programu, lub jego fragment może pełnić role komentarza. W niniejszym języku można tworzyć tzw. komentarze jednoliniowe. Znakiem rozpoczynającym komentarz jest - # (ang. hash). Jeśli kompilator napotka taki znak, ignoruje wszystko, co znajdzie się na prawo od tego znaku, włącznie ze znakiem oznaczającym początek komentarza. Przykład: rozkaz; # to już nie jest brane pod uwagę 1.2 Typy danych, deklarowanie i operacje na nich Podstawowym elementem kodu źródłowego każdego programu są zmienne. W języku programowania używanym w tym systemie, są do dyspozycji trzy typy zmiennych. Dwie typu liczbowego i jedna typu łańcuchowego. Aby możliwe było odniesienie się do zawartości przechowywanej wewnątrz zmiennej, konieczne jest jej zadeklarowanie. Wymiana danych pomiędzy różnymi typami może zachodzić automatycznie, bądź też konieczne jest użycie pewnych funkcji konwertujących. 5

6 1.2.1 Typy zmiennych Ponieważ zmienne mogą przechowywać dane różnego typu, konieczne jest wprowadzenie kilku typów zmiennych. W poniższej tabeli zebrano wszystkie dostępne typy, wraz z krótkim opisem i ich zakresem. Tabela 1. Typy zmiennych Nazwa Typ Opis Zakres INT liczby całkowite Zmienna służąca do przechowywania liczby niebędącej ułamkiem. Rozróżniany jest znak liczby. Przykład: -123 FLOAT liczby zmiennoprzecinkowe liczby, która może być ułamkiem. Zmienna służąca do przechowywania Rozróżniany jest znak liczby. Znakiem używanym do oddzielenia części całkowitej od dziesiętnej jest. (kropka). od: 2 31 do: od do: STRING Przykład: łańcuchy znaków Zmienna służąca do przechowywania łańcuchów znaków. Dozwolone są wszelakie znaki, poza znakiem (znak cudzysłowie). Przykład: Ala ma kota. Kot ma 2 lata. Maksymalna długość: Deklarowanie zmiennych Aby móc używać wewnątrz programu zmiennej, konieczne jest jej uprzednie zadeklarowanie. Dopiero po zadeklarowaniu zmiennej mamy możliwość wykonywania na niej jakichkolwiek operacji. Poniższe wytyczne definiują poprawną nazwę deklarowanej zmiennej: 6

7 nazwa zmiennej musi składać się wyłącznie z liter i cyfr. Dopuszczalne jest także użycie znaku _ (podkreślenie), nazwa nie może zaczynać się od cyfry, w nazwach zmiennych nie można stosować znaków diakrytycznych, należy pamiętać, że rozróżniana jest wielkość liter stosowanych w nazwie. Deklarując zmienną należy używać poniższego schematu: typzmiennej(nazwazmiennej); typzmiennej nazwazmiennej - nazwa jednego z typów zmiennych. Dozwolone typy to INT, FLOAT, STRING, - nazwa zmiennej, zgodna z wytycznymi. Przykłady deklaracji zmiennych: INT(a); deklaracja zmiennej o nazwie a, typu całkowitego, FLOAT(b); deklaracja zmiennej o nazwie b, typu zmiennoprzecinkowego, STRTIG(c); deklaracja zmiennej o nazwie c, typu łańcuchowego Operatory Operator jest pewną funkcją wywoływaną dla danych argumentów (nazywanych operandami) w następujący sposób: a symboloperatora b Funkcja ta przeważnie zwraca jakąś wartość, która może być dalej przekazywana. Zazwyczaj mamy do czynienia z funkcjami dwuargumentowymi (np.: a=b,a+b), lub jednoargumentowymi (np.: -b,!a). Z operatorów można oczywiście budować wyrażenia (np.: c=a*(a+b)). Operatory logiczne mogą wykonywać operacje na operandach typu liczbowego. Podobnie jak w języku programowania C przyjęto, że liczba zero oznacza fałsz (ang. False). Natomiast każda inna liczba, różna od zera oznacza prawdę (ang. True). Priorytety operatorów są zgodne z priorytetami zdefiniowanymi dla języka C. 7

8 Tabela 2. Operatory dla typów liczbowych Nazwa Znaczenie Przykład! negacja logiczna!a - zmiana znaku -a = przypisanie a=b + dodawanie a+b - odejmowanie a-c * mnożenie a*b / dzielenie a/b < porównanie, mniejsze a<b > porównanie, większe a>b <= porównanie, mniejsze lub równe a<=b >= porównanie, większe lub równe a>=b == porównanie, równe a==b!= porównanie, różne a!=b && koniunkcja (AND) a&&b alternatywa (OR) Tabela 3. Operatory dla typu łańcuchowego Nazwa Znaczenie Przykład = przypisanie a=b + konkatenacja łańcuchów a+b Konwersje między typami zmiennych Każdy typ zmiennych może przechowywać dane różnego rodzaju. Konieczne jest zatem zdefiniowanie reguł, w jaki sposób typy zmiennych można konwertować pomiędzy sobą. W przypadku zmiennych typu liczbowego (INT, FLOAT), sprawa konwersji jest wręcz naturalna. Konwersja wyżej wymienionych typów zachodzi automatycznie. Wszędzie tam, gdzie możemy użyć typu całkowitego, równie dobrze można użyć zmiennej zmiennoprzecinkowej i odwrotnie. Należy jednak pamiętać, że w przypadku konwersji zmiennej, będącej liczbą rzeczywistą, na liczbę całkowitą, następuje utrata dokładności - część będąca ułamkiem zostaje bezpowrotnie utracona w procesie konwersji. 8

9 Jeśli zachodzi konieczność konwersji miedzy typami liczbowymi, a typem łańcuchowym, należy użyć do tego wbudowanej funkcji konwertującej. W zależności, w którą stronę ma zajść konwersja, mamy do wyboru dwie funkcje: FLOATTOSTR(FLOAT tostring) Parametr wywołania: tostring - liczba, która ma być przekształcona w łańcuch znaków. STRING - liczba przekształcona w ciąg znaków. STRTOFLOAT(STRIG tofloat) Parametr wywołania: tofloat - ciąg znaków, który ma być przekształcony w liczbę. Należy zadbać o to, aby łańcuch dało się konwertować do liczby. Jeśli będzie to niemożliwe zostanie zwrócony błąd. FLOAT - łańcuch znaków przekształcony w liczbę. 1.3 Instrukcje sterujące Instrukcje sterujące mają za zadanie kontrolować sposób wykonywania kolejnych instrukcji programu. Podstawowymi instrukcjami tego typu są funkcje if oraz for. Właśnie te dwie instrukcje zostały dołączone do składni języka stosowanego w tym systemie. Kolejne funkcje sterujące, znane z innych języków programowania (typu do - while, repeat - until), są w rzeczywistości złożeniem, lub modyfikacją dwóch wyżej wymienionych funkcji Instrukcja warunkowa - if Instrukcja warunkowa w zależności od wartości warunku logicznego, podanego jako argument, wykonuje bądź nie zdefiniowany blok instrukcji z kodu programu. Możemy 9

10 utworzyć blok instrukcji, które zostaną wykonane, jeśli warunek będzie spełniony, ale także taki, który wykona się w przypadku, gdy warunek jest fałszywy. W omawianym języku mamy do dyspozycji funkcje IF.Zasadniczo nie różni się ona od równoważnej funkcji znanej z języka C, Java. Tak jak w językach będących protoplastami - blok operacji mający wykonać się, jeśli warunek będzie spełniony, jest obowiązkowy. Jeśli chodzi o instrukcje, mające się wykonać w momencie nie spełnienia warunku, są one opcjonalne. Różnicą jest to, że instrukcje muszą być ujęte w nawiasy klamrowe ( {, } ), tworząc tym samym blok, nawet wówczas, jeśli blok instrukcji będzie stanowić pojedynczy rozkaz. Składnia funkcji IF: IF(warunekLogiczny) { # Zbiór rozkazów, które mają być wykonane, jeśli waruneklogiczny # będzie spełniony } ELSE { # Opcjonalne instrukcje, które mają wykonać się, jeśli waruneklogiczny # będzie fałszem } Instrukcja iteracyjna - for Instrukcje iteracyjne umożliwiają wielokrotne wykonanie pewnych sekwencji instrukcji, czyli pętli, które jak wiadomo są podstawą programowania. Liczba powtórzeń nazywana jest liczbą iteracji. W opisywanym języku mamy do dyspozycji jedną z kilku znanych instrukcji, mianowicie instrukcje FOR. Podobnie jak w funkcji IF trzeba pamiętać o tym, że instrukcje musza być ujęte w nawiasy klamrowe ( {, } ), nawet wówczas, jeśli blok instrukcji będzie stanowić 10

11 pojedynczy rozkaz. Dodatkowo należy zwrócić uwagę na fakt, że argumenty funkcji FOR są rozdzielone znakiem przecinka (, ), a nie tak jak w przypadku języka C, za pomocą średnika ( ; ). Składnia funkcji FOR: FOR(rozkazA,warunekLogiczny,rozkazB) { # Zbiór rozkazów, które mają być wykonane, jeśli waruneklogiczny # będzie spełniony } rozkaza waruneklogiczny rozkazb - rozkaz, który wykona się tylko raz, tuż przed wykonaniem pierwszej iteracji, - warunek ten jest sprawdzany przed wykonaniem każdej z iteracji. Jeśli jest on prawdziwy, wykonywany jest blok rozkazów, - rozkaz wykonywany każdorazowo po zakończeniu iteracji. 1.4 Funkcje biblioteczne Tak jak większość języków programowania, tak i ten jest w niewielkim stopniu użyteczny, jeśli nie zostanie wyposażony w funkcje biblioteczne. Pod pojęciem funkcji bibliotecznych kryją się zbiory funkcji, które są dołączane na życzenie programisty (poprzez użycie w kodzie programu odpowiednich słów kluczowych i nazwy biblioteki). Funkcje takie w znaczący sposób zwiększają możliwości języka, a równocześnie poprzez zamknięcie je w zewnętrzne biblioteki, unikamy nadmiernego rozrostu programu wynikowego. Również w przypadku omawianego języka mamy takie funkcje. Różnicą jest to, że dołączane są one automatycznie do każdego programu. Użyto takiego rozwiązania, ponieważ biblioteka z tymi funkcjami nie jest zbyt obszerna. 11

12 1.4.1 Funkcje arytmetyczne W celu ułatwienia pisania programów, do składni języka wprowadzono kilka podstawowych funkcji matematycznych. Służą one wyłączenie do wykonywania operacji na zmiennych typu liczbowego. Tabela 4. Predefiniowane funkcje matematyczne Nazwa Znaczenie Uwagi RANDOM() Wartość losowa x 0,1 ABS(x) Wartość bezwzględna liczby x x SIN(x) Sinus sin x COS(x) Cosinus cos x EXP(x) Eksponent e x POW(x,y) Dowolna potęga x y SQRT(x) Pierwiastek kwadratowy x Obsługa konsoli Tak jak w rzeczywistych systemach, tak i w omawianym systemie, każdy z procesów ma możliwość komunikowania się z użytkownikiem. Komunikacja taka odbywa się za pomocą konsoli wejściowej i wyjściowej. Konsola wejściowa służy do wprowadzania przez użytkownika danych potrzebnych działającemu procesowi. Natomiast na konsoli wyjściowej proces może wyświetlać informacje. Każdy z działających w systemie procesów posiada własną konsole wejściową oraz wyjściową WRITE WRITE(STRING info) Funkcja ta służy do obsługi konsoli wyjściowej procesu. Po wykonaniu takiej instrukcji, na konsoli pojawi się wartość zmiennej info. Funkcja ta służy jedynie do wyświetlania zmiennych typu łańcuchowego. Jeśli chcemy wyświetlić wartość zmiennej innego typu, należy skorzystać z funkcji konwertujących. 12

13 Parametr wywołania: info - Zmienna, której wartość ma zostać wyświetlona na konsoli wyjściowej procesu READ READ() Funkcja do obsługi konsoli wejściowej procesu. Za jej pomocą użytkownik może przekazać do działającego programu jakieś dane. Wprowadzać można dane dowolnego typu, a więc zarówno znakowego, jak i liczbowego. Niemniej jednak, jeśli proces oczekuje na daną typu liczbowego, a użytkownik wprowadzi ciąg znaków, niedający się konwertować na liczbę ustawiana jest wartość zmiennej zwracanej przez funkcję SYS_RESULT. Jeśli proces wykona tę instrukcję, a w kolejce komunikatów procesu nie będzie żadnych danych wprowadzonych z konsoli, to proces zostaje uśpiony i przeniesiony do kolejki procesów oczekujących na konsole wejściową. Obudzenie procesu następuje automatycznie, w momencie pojawienia się jakichkolwiek, zatwierdzonych danych na konsoli wejściowej. STRING/INT/FOAT - Wartość, jaką wprowadził użytkownik na konsoli wejściowej. Jeśli chcemy, aby wprowadzona wartość była automatycznie przekonwertowana do typu liczbowego, należy podstawić zwracaną wartość bezpośrednio do zmiennej typu liczbowego. Jeśli nie uda się konwersja, ustawiana jest odpowiednia wartość zmiennej, zwracanej przez funkcje SYS_RESULT. SYS_RESULT: 13

14 1 - BŁĄD proces spodziewał się liczby na konsoli wejściowej, a użytkownik wprowadził ciąg znaków niedający się konwertować do liczby Obsługa komunikacji międzyprocesowej Procesy istniejące w systemie mogą komunikować się miedzy sobą za pomocą komunikatów (ang. Message). Poniższe funkcje umożliwiają wykonywanie operacji wysyłania, odbierania komunikatów. Operacje takie można wykonywać na różne sposoby tzn.: blokujące/nieblokujące, do konkretnego procesu lub jako komunikaty rozgłoszeniowe. Wywołanie jakiejkolwiek z poniższych funkcji, powoduje ustawienie odpowiedniej wartości zmiennej MSG_RESULT. Zmienna ta jest zmienną lokalną w ramach każdego procesu. Wartość tej zmiennej może być odczytana przez proces przy użyciu funkcji MSG_RESULT() SEND SEND(INT destprocess, FLOAT message) Wysłanie wiadomości o treści message do procesu o id = destprocess. Jest to funkcja nieblokująca - czyli proces (nadawca) nie czeka na odebranie wiadomości przez destprocess, kontynuuje swoje działanie. destprocess message - uchwyt do procesu, do którego ma trafić wiadomość. Jeśli destprocess wynosi zero, to jest to wiadomość typu rozgłoszeniowego dotrze ona do wszystkich procesów aktualnie istniejących w systemie. Komunikat nie zostaje dostarczony do procesu - nadawcy, - treść komunikatu do wysłania. INT - MSG_RESULT. 14

15 MSG_RESULT : 1 - BŁĄD - destprocess nie istnieje w systemie BLOCK_SEND BLOCK_SEND(INT destprocess, FLOAT message) Wysłanie wiadomości o treści message do procesu o id = destprocess. Funkcja blokująca - proces czeka na odebranie wiadomości przez adresata. Na ten czas nadawca zostaje uśpiony i przeniesiony do kolejki procesów oczekujących na wysłanie wiadomości. Jeśli destprocess wynosi zero, to jest to wiadomość typu rozgłoszeniowego i nadawca jest uśpiony do momentu odebrania jej przez jakikolwiek proces. destprocess message - uchwyt do procesu, do którego ma trafić wiadomość. Jeśli destprocess wynosi zero, to jest to wiadomość typu rozgłoszeniowego dotrze ona do wszystkich procesów aktualnie istniejących w systemie. Komunikat nie zostaje dostarczony do procesu - nadawcy, - treść komunikatu do wysłania. INT MSG_RESULT. MSG_RESULT : 1 - BŁĄD - destprocess nie istnieje w systemie. 15

16 RECEIVE RECEIVE(INT sourceprocess) Pobranie z kolejki wiadomości komunikatu od procesu sourceprocess. Jeśli sourceprocess jest równy zero, pobierana jest pierwsza wiadomość z kolejki. Możliwa jest sytuacja, że w kolejce komunikatów nie będzie wiadomości spełniającej powyższe kryteria. W takim wypadku ustawiana jest odpowiednia wartość zmiennej zwracanej przez funkcję MSG_RESULT(). Ponieważ jest to wersja nieczekająca - niezależnie od tego czy udało się pobrać komunikat, czy też nie, proces może kontynuować działanie. Jeśli sourceprocess był uśpiony czekał na wysłanie tej wiadomości zostanie obudzony i przeniesiony do kolejki procesów gotowych. sourceprocess - uchwyt do procesu, od którego oczekujemy wiadomości. Jeśli sourceprocess wynosi zero, to jest pobierana pierwsza wiadomość z kolejki komunikatów tego procesu. FLOAT - treść komunikatu. MSG_RESULT : 2 - BŁĄD - sourceprocess nie istnieje w systemie, 3 - nie udało się pobrać odpowiedniego komunikatu. Sytuacja jest możliwa, jeśli w kolejce wejściowej wiadomości nie było wiadomości od sourceprocess, lub jeśli w kolejce nie było żadnych wiadomości i sourceprocess wynosił zero. 16

17 BLOCK_RECEIVE BLOCK_RECEIVE(INT sourceprocess) Pobranie z kolejki wiadomości komunikatu od procesu sourceprocess. Jeśli sourceprocess jest równy zero, pobierana jest pierwsza wiadomość z kolejki. Możliwa jest sytuacja, że w kolejce komunikatów nie będzie wiadomości spełniającej powyższe kryteria. Ponieważ jest to wersja funkcji blokująca, to proces wywołujący te funkcje może zostać uśpiony i przeniesiony do oczekujących na odebranie wiadomości do czasu, aż w kolejce wejściowej pojawi się odpowiedni komunikat. Jeśli uda się pobrać odpowiedni komunikat i sourceprocess był uśpiony czekał na wysłanie tej wiadomości następuje obudzenie procesu nadającego, i przeniesienie go do kolejki procesów gotowych. sourceprocess - uchwyt do procesu, od którego oczekujemy wiadomości. Jeśli sourceprocess wynosi zero, to pobierana jest pierwsza z wiadomości, z kolejki komunikatów tego procesu. FLOAT - treść komunikatu. MSG_RESULT : 2 - BŁĄD - sourceprocess nie istnieje w systemie MSG_RESULT MSG_RESULT() Funkcja podająca rezultat ostatnio wykonywanej operacji związanej z wysyłaniem/odbieraniem komunikatów. 17

18 1 - BŁĄD - proces docelowy (adresat) wiadomości nie istnieje, 2 - BŁĄD proces (nadawca), od którego ma nadejść wiadomość, nie istnieje, 3 - nie napotkano w kolejce wejściowej wiadomości, która spełnia kryteria zdefiniowane w funkcji RECEIVE Obsługa semaforów Poniższe funkcje umożliwiają tworzenie i usuwanie semaforów istniejących w systemie. Umożliwiają także wykonywanie operacji typu czekaj (ang. wait), sygnalizuj (ang. signalize) na tychże semaforach. Wywołanie którejkolwiek z poniższych funkcji, powoduje ustawienie odpowiedniej wartości zmiennej zwracanej przez funkcję SEM_RESULT(). Zmienna ta jest zmienną lokalną w ramach każdego procesu. Może być ona odczytana przez proces za pomocą wyżej wymienionej funkcji CREATE_SEMAPHORE CREATE_SEMAPHORE(INT initialvalue, INT maxvalue, STRING name); Funkcja ta tworzy nowy semafor. initialvalue - wartość początkowa semafora ( initialvalue >= 0 ), maxvalue - wartość maksymalna, jaką może osiągnąć semafor ( maxvalue >= initialvalue ), name - nazwa semafora ( przynajmniej jeden znak ). INT SEM_RESULT. 18

19 SEM_RESULT : został utworzony nowy semafor, 1 - BŁĄD - semafor o takiej nazwie istnieje już w systemie, nie utworzono semafora, 6 - BŁĄD - niepoprawne parametry utworzenia, nie utworzono semafora RELASE_SEMAPHORE Funkcja ta usuwa istniejący w systemie semafor. Jeśli w kolejce procesów oczekujących na dodatnią wartość tego semafora oczekują jakieś procesy funkcja nie usuwa semafora. Ustawiany jest odpowiedni kod wykonania operacji. RELASE_SEMAPHORE(INT handle); Parametry wywołania : handle - uchwyt do istniejącego semafora. INT SEM_RESULT. SEM_RESULT : 2 - BŁĄD - semafor o podanym uchwycie nie istnieje, 7 - BŁĄD - nie można usunąć semafora. Pod semaforem oczekują jakieś procesy OPEN_SEMAPHORE Funkcja zwraca uchwyt do semafora istniejącego w systemie. Jeśli próbujemy otworzyć semafor, który nie istnieje, zwracany jest błąd. 19

20 OPEN_SEMAPHORE(STRING name) ; name - nazwa semafora. INT - uchwyt do semafora. SEM_RESULT: 2 - semafor o podanej nazwie nie istnieje WAIT WAIT(INT handle, INT timeout) Wykonuje operacje czekaj na semaforze (ang. Wait). Operacja w zależności od parametru timeout wykonywana jest na dwa sposoby: oczekiwanie jest zakańczane w momencie, gdy semafor osiągnie wartość dodatnią, lub upłynie określona ilość taktów od momentu wywołania tej funkcji. Na czas, gdy semafor określony przez uchwyt ma wartość równą zero, proces wykonujący tą operacje jest przenoszony do kolejki procesów czekających pod semaforem. handle timeout - uchwyt do semafora, - ilość taktów, które należy odczekać. Jeśli timeout ma wartość ujemną, to funkcja zachowuje się klasycznie i czeka, aż wartość semafora osiągnie dodatnią wartość. Jeśli timeout ma wartość nieujemną, to w przypadku, gdy semafor w określonym czasie nie osiągnie wartości dodatniej, funkcja przerywa czekanie. INT SEM_RESULT. 20

21 SEM_RESULT : 0 - operacja wykonana bezbłędnie. Semafor osiągnął wartość dodatnią, 3 - upłynął czas określony przez timeout, semafor nie osiągnął wartości dodatniej, 5 - BŁĄD - semafor o podanym uchwycie nie istnieje w systemie SIGNALIZE SIGNALIZE(INT handle) Wykonuje operacje sygnalizuj na semaforze (ang. Signalize). Powoduje to zwiększenie wartości semafora. Jeśli pod semaforem były jakieś uśpione procesy (znajdujące się w kolejce oczekujących pod semaforem), następuje obudzenie pierwszego z kolejki procesów oczekujących i przeniesienie go do kolejki procesów gotowych do wykonania. Jeśli przed wykonaniem tej operacji semafor osiągnął już swoją maksymalną wartość (podawaną jako jeden z parametrów tworzenia semafora maxvalue), nie następuje zwiększenie wartości. Dodatkowo ustawiana jest odpowiednia wartość zmiennej zwracanej przez funkcje SEM_RESULT(). handle - uchwyt do semafora. INT SEM_RESULT. SEM_RESULT : 4 - funkcja usiłowała ustanowić wartość semafora większą od maksymalnej wartości semafora sugeruje to, że było wykonanych więcej operacji SIGNALIZE, aniżeli operacji WAIT na tym semaforze. Semafor, niezależnie od ilości wykonanych operacji 21

22 SIGNALIZE, nigdy nie osiągnie wartości większej, niż ustalona wartość maksymalna podczas tworzenia semafora, 5 - BŁĄD - semafor o podanym uchwycie nie istnieje WAIT_ MULTIPLE WAIT_MULTIPLE(INT handle0, INT handle1, INT handle2, INT handle3, INT waitforall,int timeout) Wykonuje operacje czekaj (ang. Wait) na kilku semaforach (wymienionych jako handle0, handle1, handle2, handle3). Funkcja zależnie od parametru waitforall czeka na wszystkie, bądź któryś z semaforów z listy. Jeśli wartość parametru waitforall jest równa zero, funkcja czeka na którykolwiek z wymienionych semaforów. Jeśli waitforall ma wartość różną od zera, funkcja czeka na dodatnią wartość wszystkich semaforów z listy. Funkcja nie musi czekać na wszystkie cztery semafory - jeśli zamiast rzeczywistego uchwytu do któregoś z semaforów podamy wartość zero, to ten uchwyt jest ignorowany. Musimy jednak podać przynajmniej jeden poprawny uchwyt. Jeśli nie podamy żadnego poprawnego - funkcja zwróci kod błędu, który możemy odczytać za pomocą funkcji SEM_RESULT(). W zależności od parametru timeout wykonywana jest na dwa sposoby: oczekiwanie jest zakańczane tylko wówczas, gdy semafor osiągnie wartość dodatnią, oczekiwanie jest zakańczane w momencie, gdy semafor osiągnie wartość dodatnią, bądź upłynie ilość taktów określona przez wielkość timeout. Dodatkowo warto napisać, że funkcja ta zachowuje się odmiennie od wielokrotnie użytej funkcji WAIT. Poniżej wyjaśnienie. WAIT_MULTIPLE(h1,h2,h3,h4,1,-1); NIE JEST RÓWNOZNACZNE WYKONANIU: WAIT(h1,-1); WAIT(h2,-1); 22

23 WAIT(h3,-1); WAIT(h4,-1); Funkcja WAIT_MULTIPLE nie wykonuje operacji WAIT na żadnym z semaforów z listy, dopóki wszystkie konieczne semafory nie osiągną wartości dodatniej. handle0 handle1 handle2 handle3 waitforall timeout - uchwyt do pierwszego semafora. Jeśli uchwyt ma wartość zero nie jest brany pod uwagę, - uchwyt do drugiego semafora. Jeśli uchwyt ma wartość zero nie jest brany pod uwagę, - uchwyt do trzeciego semafora. Jeśli uchwyt ma wartość zero nie jest brany pod uwagę, - uchwyt do czwartego semafora. Jeśli uchwyt ma wartość zero nie jest brany pod uwagę, - jeśli ma wartość zero - czeka na którykolwiek z semaforów, w przeciwnym wypadku czeka na wszystkie semafory o poprawnie zdefiniowanych uchwytach, - ilość taktów, którą należy odczekać. Jeśli timeout ma wartość ujemną, to funkcja zachowuje się klasycznie i czeka, aż wartość wszystkich wymaganych semaforów osiągnie dodatnią wartość. Jeśli timeout ma wartość nieujemną, to w przypadku, gdy wartość wszystkich wymaganych semaforów w czasie określonym przez timeout nie osiągnie wartości dodatniej, funkcja przerywa czekanie. Dodatkowo ustawiana jest odpowiednia wartość zmiennej, zwracanej przez funkcję SEM_RESULT. INT SEM_RESULT. 23

24 SEM_RESULT : 3 - w przypadku, gdy waitforall miało wartość równą zero i upłynął czas określony przez timeout, a żaden z wymaganych semaforów nie osiągnął wartości dodatniej. W przypadku, gdy waitforall miało wartość różną od zera i któryś z wymaganych semaforów nie osiągnął wartości dodatniej, 5 - niepoprawne uchwyty semaforów. Należy podać choć jeden poprawny uchwyt do semafora. Jako poprawny uchwyt, rozumiemy uchwyt do semafora, który istnieje w systemie semafor o uchwycie handle0 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 11 - semafor o uchwycie handle1 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 12 - semafor o uchwycie handle2 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 13 - semafor o uchwycie handle3 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory) SEM_ RESULT SEM_RESULT() Funkcja zwracająca rezultat ostatnio wykonywanej operacji związanej z semaforami. Przy pomocy tej funkcji możemy kontrolować przebieg wykonywania programu. 24

25 0 - ostatnia operacja została wykonana poprawnie, 1 - BŁĄD - próbowano utworzyć semafor o takiej samej nazwie, jak nazwa semafora istniejącego już w systemie, 2 - BŁĄD - semafor o podanej nazwie/uchwycie nie istnieje w systemie, 3 - upłynął czas czekania pod semaforem, a semafor nie osiągnął dodatniej wartości, 4 - BŁĄD - funkcja SIGNALIZE próbowała zwiększyć wartość semafora ponad wartość ustaloną podczas tworzenia semafora, 5 - BŁĄD - błędne parametry wywołania funkcji WAIT_MULTIPLE. Należy podać choć jeden poprawny uchwyt do semafora. Jako poprawny uchwyt rozumiemy uchwyt do semafora, który istnieje w systemie, 6 - BŁĄD - niepoprawne parametry funkcji CREATE_SEMAPHORE. Wartość początkowa semafora musi być >=0; Wartość maksymalna, jaką może osiągnąć semafor >= wartości początkowej; nazwa semafora musi mieć przynajmniej jeden znak, 10 - semafor o uchwycie handle0 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 11 - semafor o uchwycie handle1 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 25

26 12 - semafor o uchwycie handle2 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory), 13 - semafor o uchwycie handle3 osiągnął wartość dodatnią oraz waitforall miało wartość równą zero (funkcja nie czekała na wszystkie semafory) Obsługa urządzeń Poniższe funkcje umożliwiają tworzenie (ang. Create) i usuwanie (ang. Relase) urządzeń istniejących w systemie. Za ich pomocą możemy także wykonywać operacje odczytu (ang. Read) oraz zapisu(ang. Write) danych z/do urządzenia. Do dyspozycji mamy jeszcze kilka innych pomocniczych funkcji. Wywołanie którejkolwiek z poniższych funkcji powoduje ustawienie odpowiedniej wartości zmiennej zwracanej przez funkcję DEV_RESULT. Wszystkie procesy działające w systemie mogą zapisywać i odczytywać dane z urządzeń. Natomiast tworzyć i usuwać urządzenia z systemu może tylko proces systemowy. Funkcje READ, WRITE są funkcjami, które mogą zostać wykonane przez system w różnym czasie. Im częściej, zapisujemy/odczytujemy dane z urządzenia tym szybciej wykonywane są te operacje. Tak jak w rzeczywistych systemach - czas odczytu/zapisu jest z/do urządzenia zależy (miedzy innymi) od częstości dostępu do danego urządzenia (pliku).czas dostępu jest także w pewnym stopniu dziełem przypadku (zależy np. od miejsca, gdzie znajduje się plik). W systemie opisywanym w tej pracy mamy podobną sytuację. Utworzenie urządzenia w systemie pociąga za sobą utworzenie rzeczywistego pliku w katalogu domowym systemu. Plik taki posiada nazwę identyczną z nazwą urządzenia i rozszerzenie.dev. Jeśli taki plik istnieje w momencie tworzenia urządzenia w wirtualnym systemie to zawartość tego nowo utworzonego urządzenia jest inicjowana danymi z tego pliki. Umożliwia to przechowywanie danych pomiędzy kolejnymi cyklami tworzenia/usuwania urządzenia, a nawet pomiędzy kolejnymi uruchomieniami systemu. 26

27 MAKE_DEVICE MAKE_DEVICE(INT accesmode, INT maxopens, STRING name) Funkcja ta tworzy nowe urządzenie. Utworzyć urządzenie może tylko proces systemowy. Jeśli proces działający w trybie użytkownika próbuje wykonać tą instrukcję sygnalizowany jest błąd. accesmode - definiuje, w jaki sposób możemy używać tego urządzenia. Dopuszczalnie są wartości takie jak poniżej: 10 tylko do odczytu, 01 tylko do zapisu, 11 możliwy jest zarówno zapis jak i odczyt. maxopens name - dodatnia liczba określająca maksymalną ilość procesów, która może korzystać z tego urządzenia w tym samym czasie. Jako korzystanie z urządzenia rozumiemy jego otwarcie przez proces. Jeśli proces próbuje otworzyć urządzenie, które jest już otwarte przez liczbę procesów równą maxopens, proces zostanie uśpiony i przeniesiony do kolejki procesów czekających na otwarcie urządzenia. W momencie, gdy któryś z procesów aktualnie mający otwarte to urządzenie, zamknie je następuje automatyczne obudzenie pierwszego z procesów oczekujących pod tym urządzeniem, - unikalna, w skali sytemu, nazwa urządzenia. Nazwa musi się składać przynajmniej z jednego znaku. INT DEV_RESULT. 27

28 DEV_RESULT : 1 - BŁĄD - urządzenie o podanej nazwie istnieje już w systemie, 2 - BŁĄD - niepoprawne parametry funkcji, 8 - BŁĄD - proces nieuprawniony do tworzenia urządzeń. Tylko proces systemowy może tworzyć urządzenia RELASE_ DEVICE RELASE_DEVICE(INT handle) Usunięcie z systemu urządzenia o podanym uchwycie. Usunąć urządzenie może tylko proces systemowy. Jeśli proces działający w trybie użytkownika próbuje wykonać tę instrukcję sygnalizowany jest błąd. Nie można usunąć urządzenia, jeśli jest ono otwarte przez jakiekolwiek procesy, lub jeśli jakieś procesy czekają na otwarcie urządzenia. Jeśli proces próbuje usunąć urządzenie, znajdujące się w takim stanie, sygnalizowany jest błąd. handle - uchwyt do urządzenia, które chcemy usunąć. INT DEV_RESULT. DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje w systemie, 8 - BŁĄD - proces nieuprawniony do usuwania urządzeń. Tylko proces systemowy może usuwać urządzenia, 28

29 13 - BŁĄD nie można usunąć urządzenia - jest ono otwarte przez jakiś proces, lub jakiś proces czeka na otwarcie urządzenia OPEN_ DEVICE OPEN_DEVICE(STRING name, INT timeout, INT accesmode) Funkcja otwiera urządzenie o podanej nazwie i zwraca uchwyt do tego urządzenia. Jeśli proces próbuje otworzyć urządzenie, które jest już otwarte przez liczbę procesów równą maxopens, proces zostanie uśpiony i przeniesiony do kolejki procesów czekających na otwarcie urządzenia. W momencie, gdy któryś z procesów, aktualnie mający otwarte to urządzenie zamknie je - następuje automatyczne obudzenie pierwszego z procesów oczekujących pod tym urządzeniem. Kursor urządzenia jest ustawiany na sam początek otwartego urządzenia. name timeout - unikalna, w skali sytemu, nazwa urządzenia, które chcemy otworzyć. Nazwa musi się składać przynajmniej z jednego znaku, - jeśli proces próbuje otworzyć urządzenie, które jest już otwarte przez liczbę procesów równą maxopens, proces będzie przeniesiony do kolejki procesów czekających na otwarcie urządzenia. Wielkość timeout określa, jaki czas proces czeka na otwarcie zajętego urządzenia. Jeśli timeout jest wartością nieujemną, proces jest usypiany, aż do upłynięcia ilości taktów określonych przez timeout. Jeśli w tym czasie urządzenie się nie zwolni, przerywane jest czekanie i ustawiana jest odpowiednia wartość DEV_RESULT. Jeśli timeout ma wartość ujemną, proces czeka, aż możliwe będzie otwarcie urządzenia. 29

30 accesmode - tryb, w jakim otwieramy urządzenie. Dopuszczalne wartości: 10 tylko do odczytu, 01 tylko do zapisu, 11 możliwy jest zarówno zapis jak i odczyt. Parametr ten musi być niesprzeczny z parametrem accesmode, z jakim utworzono urządzenie. INT - uchwyt do urządzenia. DEV_RESULT: 3 - BŁĄD nie można otworzyć urządzenia w żądanym trybie zapisu/odczytu, 4 - BŁĄD - urządzenie o podanej nazwie nie istnieje, 5 - upłynął czas określony przez timeout i urządzenie nie zwolniło się, 6 - BŁĄD - urządzenie jest już otwarte przez ten proces CLOSE_ DEVICE CLOSE_DEVICE(INT handle) Funkcja zamyka urządzenie o podanym uchwycie. Jeśli na otwarcie tego urządzenia oczekiwały jakieś procesy (znajdujące się w kolejce procesów oczekujących na otwarcie urządzenia), wybierany jest pierwszy z kolejki i przenoszony do kolejki procesów gotowych. handle - uchwyt do urządzenia, które chcemy zamknąć. 30

31 INT DEV_RESULT. DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje w systemie, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces WRITE WRITE(INT handle,float data) Funkcja zapisuje dane do urządzenia. Zapis jest przeprowadzany w miejscu, gdzie znajduje się kursor w urządzeniu. Jeśli zapisujemy w miejscu, gdzie znajdują się już jakieś dane stare dane zostają nadpisane przez nowe. W zależności od czasu, jaki upłynął od ostatniego dostępu do urządzenia może okazać się, że proces zostanie przeniesiony do kolejki procesów uśpionych, oczekujących na operacje zapis/odczyt do/z urządzenia. Po upływie czasu oczekiwania proces jest automatycznie przenoszony do kolejki procesów gotowych. Długość czasu oczekiwania jest wprost proporcjonalna do okresu czasu, jaki upłynął od momentu ostatniej operacji zapisu/odczytu do/z urządzenia. handle data - uchwyt do urządzenia, do którego chcemy zapisać dane, - dane do zapisania. INT DEV_RESULT. DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje w systemie, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces, 31

32 10 - BŁĄD - urządzenie nie jest otwarte przez ten proces w trybie do zapisu CLEAR_ DEVICE CLEAR_DEVICE(INT handle) Usunięcie wszystkich danych z urządzenia. handle - uchwyt do urządzenia, w którym chcemy usunąć wszystkie dane. Zwracana wartość INT DEV_RESULT. DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje w systemie, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces, 10 - BŁĄD - urządzenie nie jest otwarte przez ten proces w trybie do zapisu DEV_ CLEAR DEV_READ(INT handle) Funkcja odczytuje pojedynczą daną z urządzenia. Odczyt jest przeprowadzany w miejscu, gdzie znajduje się kursor w urządzeniu. W zależności od czasu, jaki upłynął od ostatniego dostępu do urządzenia może okazać się, że proces zostanie przeniesiony do kolejki procesów uśpionych, oczekujących na operacje zapis/odczyt do/z urządzenia. Po upływie czasu oczekiwania, proces jest automatycznie przenoszony do kolejki procesów gotowych. Długość czasu oczekiwania jest wprost proporcjonalna do okresu czasu, jaki upłynął od momentu ostatniej operacji zapisu/odczytu do/z urządzenia. 32

33 handle - uchwyt do urządzenia, z którego chcemy odczytywać dane. FLOAT - odczytana dana. DEV_RESULT : 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces, 11 - BŁĄD - kursor znajduje się na końcu urządzenia brak danych do odczytania, 12 - BŁĄD - urządzenie nie jest otwarte przez ten proces w trybie do odczytu SEEK SEEK(INT handle, INT newposition) Funkcja powoduje przesunięcie wirtualnego kursora urządzenia. Kursor ten wskazuje miejsce w urządzeniu, na którym będą przeprowadzane operacje zapisu i odczytu danych do/z urządzenia. handle newposition - uchwyt do urządzenia, w którym chcemy przesunąć kursor, - nowa pozycja kursora w urządzeniu. newposition musi być większa od 0 (kursor przed pierwszym elementem) i mniejsza od rozmiaru urządzenia. FLOAT - odczytana dana. 33

34 DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces, 9 - BŁĄD - niepoprawna wartość newposition POS POS(INT handle) Funkcja zwraca bieżącą pozycje wirtualnego kursora urządzenia. Kursor ten wskazuje miejsce w urządzeniu, na którym będą przeprowadzane operacje zapisu i odczytu danych do/z urządzenia. handle - uchwyt do urządzenia. INT - pozycja wirtualnego kursora w urządzeniu. DEV_RESULT: 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces. 34

35 SIZE SIZE(INT handle) Funkcja zwraca rozmiar urządzenia, czyli ilość aktualnie znajdujących się danych w urządzeniu. handle - uchwyt do urządzenia. INT - rozmiar urządzenia. DEV_RESULT : 4 - BŁĄD - urządzenie o podanym uchwycie nie istnieje, 7 - BŁĄD - urządzenie nie jest otwarte przez ten proces Procesy i ich obsługa Opisywany język umożliwia tworzenie kolejnych procesów, na podstawie skompilowanych źródeł programu. Pliki, które zawierają taki skompilowany kod, znajdują się w katalogu domowym systemu. Posiadają one rozszerzenie *.bin CREATE_PROCESS CREATE_PROCESS(STRING name, INT priorytet, INT systemprocess) Funkcja ta tworzy nowe procesy w systemie. Proces jest tworzony na podstawie skompilowanego programu. Plik z tymże programem musi znajdować się w katalogu domowym systemu. Każdy proces może załadować inny program, pod warunkiem, że są spełnione następujące założenia: 35

36 proces wykonywany w trybie użytkownika może utworzyć tylko proces użytkownika, natomiast procesy wykonywane w trybie systemowym, mogą tworzyć nowe procesy, działające zarówno w trybie użytkownika, jak i trybie systemowym. priorytet tworzonego procesu może być równy lub mniejszy od priorytetu wywołującego tą funkcje. name priorytet systemprocess - nazwa pliku z programem, na podstawie którego ma być utworzony nowy proces, - priorytet, z jakim ma być utworzony proces. Zakres poprawnych wartości dla priorytetu zawiera się w przedziale od 1 do 11, - określa, czy nowo utworzony proces ma być procesem systemowym, czy też zwykłym procesem wykonywanym w trybie użytkownika. Wartość równa zero proces użytkownika, wartość różna od zera proces systemowy BŁĄD - niepoprawna nazwa programu do załadowania, lub niepoprawny format pliku z programem, -2 - BŁĄD - niespełnione powyżej wymienione założenia tworzenia nowego procesu, -3 - BŁĄD wartość priorytetu z poza dopuszczalnego zakresu,... - Uchwyt (numer PID) nowo utworzonego procesu. SYS_RESULT: -1 - BŁĄD - niepoprawna nazwa programu do załadowania, lub niepoprawny format pliku z programem, 36

37 -2 - BŁĄD - niespełnione powyżej wymienione założenia tworzenia nowego procesu, -3 - BŁĄD wartość priorytetu z poza dopuszczalnego zakresu GET_ MY_ ID GET_MY_ID() Funkcja ta zwraca numer PID procesu wywołującego funkcje. PID jest zmienną typu INT i jego wartość jest unikalna w skali systemu. INT - identyfikator (PID) procesu, który wywołał tą funkcję. 37

38 2. Spis tabel TABELA 1. TYPY ZMIENNYCH...6 TABELA 2. OPERATORY DLA TYPÓW LICZBOWYCH...8 TABELA 3. OPERATORY DLA TYPU ŁAŃCUCHOWEGO...8 TABELA 4. PREDEFINIOWANE FUNKCJE MATEMATYCZNE

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Simulator of Operating System

Simulator of Operating System Mechanizmy stosowane w systemach operacyjnych system dydaktyczny Simulator of Operating System Sebastian Świerczyna Promotor: dr inż. Jarosław Bilski Politechnika Częstochowska Wydział Inżynierii Mechanicznej

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Wykład 2 Składnia języka C# (cz. 1)

Wykład 2 Składnia języka C# (cz. 1) Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu

Bardziej szczegółowo

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?

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? Część XVIII C++ Funkcje 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? Umiemy już podzielić nasz

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02 METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się

Bardziej szczegółowo

Algorytmika i Programowanie VBA 1 - podstawy

Algorytmika i Programowanie VBA 1 - podstawy Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy

Bardziej szczegółowo

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

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

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut Mechaniki i Inżynierii Obliczeniowej  Wydział Mechaniczny Technologiczny Politechnika Śląska Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Języki programowania z programowaniem obiektowym Laboratorium

Bardziej szczegółowo

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

Struktura pliku projektu Console Application

Struktura pliku projektu Console Application Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 8/9 Wykład nr 4 (.3.9) Rok akademicki 8/9, Wykład nr 4 /33 Plan wykładu

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

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

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre) Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie

Bardziej szczegółowo

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.

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. Część XXII C++ w 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. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 3 - operatory oraz instrukcje warunkowe i wyboru mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 19 października 2018 1 / 35 mgr inż. Krzysztof

Bardziej szczegółowo

Powtórka algorytmów. Wprowadzenie do języka Java.

Powtórka algorytmów. Wprowadzenie do języka Java. Powtórka algorytmów. Wprowadzenie do języka Java. BEGIN Readln(a); Readln(b); Suma := 0; IF Suma < 10 THEN Writeln( Suma wynosi:, Suma); ELSE Writeln( Suma większa niż 10! ) END. 1. Narysować schemat blokowy

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2 Pętle wielokrotne wykonywanie ciągu instrukcji. Bardzo często w programowaniu wykorzystuje się wielokrotne powtarzanie określonego ciągu czynności (instrukcji). Rozróżniamy sytuacje, gdy liczba powtórzeń

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania wykład 2 Piotr Cybula Wydział Matematyki i Informatyki UŁ 2012/2013 http://www.math.uni.lodz.pl/~cybula Język programowania Każdy język ma swoją składnię: słowa kluczowe instrukcje

Bardziej szczegółowo

Podstawy programowania w języku C

Podstawy programowania w języku C Podstawy programowania w języku C WYKŁAD 1 Proces tworzenia i uruchamiania programów Algorytm, program Algorytm przepis postępowania prowadzący do rozwiązania określonego zadania. Program zapis algorytmu

Bardziej szczegółowo

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Odczyt danych z klawiatury Operatory w Javie

Odczyt danych z klawiatury Operatory w Javie Odczyt danych z klawiatury Operatory w Javie Operatory W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje

Bardziej szczegółowo

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Oczywiście plik musi mieć rozszerzenie *.php

Oczywiście plik musi mieć rozszerzenie *.php Oczywiście plik musi mieć rozszerzenie *.php Znaczniki PHP komunikują serwerowi gdzie rozpoczyna się i kończy kod PHP. Tekst między nimi jest interpretowany jako kod PHP, natomiast poza nimi jako kod HTML.

Bardziej szczegółowo

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA Python wprowadzenie Warszawa, 24 marca 2017 Python to język: nowoczesny łatwy w użyciu silny można pisać aplikacje Obiektowy klejący może być zintegrowany z innymi językami np. C, C++, Java działający

Bardziej szczegółowo

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

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

Pascal - wprowadzenie

Pascal - wprowadzenie Pascal - wprowadzenie Ogólne informacje o specyfice języka i budowaniu programów Filip Jarmuszczak kl. III c Historia Pascal dawniej jeden z najpopularniejszych języków programowania, uniwersalny, wysokiego

Bardziej szczegółowo

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce.

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych 1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

Liczby losowe i pętla while w języku Python

Liczby losowe i pętla while w języku Python Liczby losowe i pętla while w języku Python Mateusz Miotk 17 stycznia 2017 Instytut Informatyki UG 1 Generowanie liczb losowych Na ogół programy są spójne i prowadzą do przewidywanych wyników. Czasem jednak

Bardziej szczegółowo

Zapis algorytmów: schematy blokowe i pseudokod 1

Zapis algorytmów: schematy blokowe i pseudokod 1 Zapis algorytmów: schematy blokowe i pseudokod 1 Przed przystąpieniem do napisania kodu programu należy ten program najpierw zaprojektować. Projekt tworzącego go algorytmu może być zapisany w formie schematu

Bardziej szczegółowo

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego

Bardziej szczegółowo

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem. Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje 1 dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD programowania w C++ Typy c.d. 2 Typy zmiennych Instrukcja typedef -

Bardziej szczegółowo

Programowanie w Turbo Pascal

Programowanie w Turbo Pascal Skróty: ALT + F9 Kompilacja CTRL + F9 Uruchomienie Struktura programu: Programowanie w Turbo Pascal Program nazwa; - nagłówek programu - blok deklaracji (tu znajduje się VAR lub CONST) - blok instrukcji

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

Wykład 4. Tablice. Pliki

Wykład 4. Tablice. Pliki Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

JAVA?? to proste!! Autor: wojtekb111111

JAVA?? to proste!! Autor: wojtekb111111 1 JAVA?? to proste!! 2 Niniejszy tutorial przedstawia krótkie wprowadzenie do programowania w języku JAVA. Jakie narzędzia na początku potrzebujemy do rozpoczęcia programowania w tym języku? JDK (java

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Wstęp do informatyki- wykład 7

Wstęp do informatyki- wykład 7 1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH ĆWICZENIE NR 9 WYRAŻENIA LOGICZNE, INSTRUKCJE WARUNKOWE I INSTRUKCJE ITERACYJNE W PROGRAMIE KOMPUTEROWYM MATLAB Dr inż. Sergiusz Sienkowski ĆWICZENIE NR

Bardziej szczegółowo

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

LibreOffice Calc VBA

LibreOffice Calc VBA LibreOffice Calc VBA LibreOffice Calc umożliwia tworzenie własnych funkcji i procedur przy użyciu składni języka VBA. Dostęp do edytora makr: Narzędzia->Makra->Zarządaj makrami->libreoffice Calc Aby rozpocząć

Bardziej szczegółowo

Programowanie Delphi obliczenia, schematy blokowe

Programowanie Delphi obliczenia, schematy blokowe Informatyka II MPZI2 ćw.2 Programowanie Delphi obliczenia, schematy blokowe Zastosowania obliczeń numerycznych Wyrażenia arytmetyczne służą do zapisu wykonywania operacji obliczeniowych w trakcie przebiegu

Bardziej szczegółowo

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać MatLab część III 1 Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać komentarze poprzedzone znakiem % Skrypty

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

ZMIENNE. Podstawy PHP

ZMIENNE. Podstawy PHP ZMIENNE Podstawy PHP zmienna - to obiekt w programowaniu, który przechowuje różnego rodzaju dane niezbędne do działania programu. Zmienna podczas działania programu może zmieniad swoje wartości (jak wskazuje

Bardziej szczegółowo

Wstęp do Programowania Lista 1

Wstęp do Programowania Lista 1 Wstęp do Programowania Lista 1 1 Wprowadzenie do środowiska MATLAB Zad. 1 Zapoznaj się z podstawowymi oknami dostępnymi w środowisku MATLAB: Command Window, Current Folder, Workspace i Command History.

Bardziej szczegółowo

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018 Informatyka I Klasy i obiekty. Podstawy programowania obiektowego dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2018 Plan wykładu Pojęcie klasy Deklaracja klasy Pola i metody klasy

Bardziej szczegółowo

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie

Bardziej szczegółowo

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = Ala ma ; 1 2 Operacje na zmiennych Kolejność operacji: deklaracja, inicjacja bool decyzja; int licznik, lp; double stvat, wartpi; char Znak; string S1, S2 = "Kowalski"; przypisanie wartości podstawienie decyzja

Bardziej szczegółowo

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

Każde wykonanie bloku instrukcji nazywamy pojedynczym przebiegiem lub iteracją pętli. Część XIII C++ Czym jest pętla? Pętla jest blokiem instrukcji, które wykonywane są w kółko (czyli po wykonaniu ostatniej instrukcji z bloku komputer wykonuje ponownie pierwszą instrukcję, później drugą

Bardziej szczegółowo

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4 Politechnika Łódzka Instytut Systemów Inżynierii Elektrycznej Laboratorium cyfrowej techniki pomiarowej Ćwiczenie 4 Zapis danych do pliku w programie LabVIEW 1. Zapis i odczyt sygnałów pomiarowych Do zapisu

Bardziej szczegółowo

Interpreter - EasyCompile

Interpreter - EasyCompile Akademia Podlaska w Siedlcach Siedlce, dn. 20.V.2006r. Wydział Nauk Ścisłych Instytut Informatyki Interpreter - EasyCompile Projekt z SISW Wykonali: Paweł Sawczuk Edwin Tomczuk Krzysztof Pietraszek I Inf.

Bardziej szczegółowo

Blockly Kodowanie pomoc.

Blockly Kodowanie pomoc. 1 Blockly Kodowanie pomoc. Słowniczek: Zmienna posiada nazwę wywoływaną w programie oraz miejsce na przechowywanie wartości. Instrukcja warunkowa pozwala na wykonanie instrukcji w zależności od warunku

Bardziej szczegółowo

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

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Pętle. Dodał Administrator niedziela, 14 marzec :27

Pętle. Dodał Administrator niedziela, 14 marzec :27 Pętlami nazywamy konstrukcje języka, które pozwalają na wielokrotne wykonywanie powtarzających się instrukcji. Przykładowo, jeśli trzeba 10 razy wyświetlić na ekranie pewien napis, to można wykorzystać

Bardziej szczegółowo

JAVAScript w dokumentach HTML (2)

JAVAScript w dokumentach HTML (2) Informatyka ćw.6 JAVAScript w dokumentach HTML (2) Interakcyjne wprowadzanie danych Jednym ze sposobów jest stosowanie metody prompt dla wbudowanego obiektu window: zmienna= prompt("tekst zachęty, np.

Bardziej szczegółowo

ForPascal Interpreter języka Pascal

ForPascal Interpreter języka Pascal Akademia Podlaska w Siedlcach Wydział Nauk Ścisłych Instytut Informatyki ForPascal Interpreter języka Pascal Przedmiot: Sieci i Systemy Wirtualne Informatyka IV Prowadzący: dr Krzysztof Trojanowski Grupa:

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

2 Przygotował: mgr inż. Maciej Lasota Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

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

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika 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

Bardziej szczegółowo

Wyrażenia arytmetyczne

Wyrażenia arytmetyczne Wyrażenia arytmetyczne Do budowania wyrażeń w języku C używa się operatorów jednoargumentowych oraz dwuargumentowych. Podstawowy operator jednoargumentowy to operator zmiany znaku (-), który jest prawostronnie

Bardziej szczegółowo

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

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Podstawy programowania Laboratorium Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji Instrukcja warunkowa if Format instrukcji warunkowej Przykład 1. if (warunek) instrukcja albo zestaw

Bardziej szczegółowo

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program.

Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. PYTHON Język programowania zbiór reguł określających, które ciągi symboli tworzą program komputerowy oraz jakie obliczenia opisuje ten program. Aby program napisany w danym języku mógł być wykonany, niezbędne

Bardziej szczegółowo

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Pętle for, while, do... while, foreach Jeszcze o operatorach... Skrócone operatory arytmetyczne przykład x +=

Bardziej szczegółowo

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak: Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak: accept - typy zawartości MIME akceptowane przez serwer (opcjonalny) accept-charset - zestaw znaków akceptowanych

Bardziej szczegółowo

Zasady programowania Dokumentacja

Zasady programowania Dokumentacja Marcin Kędzierski gr. 14 Zasady programowania Dokumentacja Wstęp 1) Temat: Przeszukiwanie pliku za pomocą drzewa. 2) Założenia projektu: a) Program ma pobierać dane z pliku wskazanego przez użytkownika

Bardziej szczegółowo