Ada. Randki (spotkania) w Adzie. Model. U Ady. Zasady. task Buffer is entry Append (I: in integer); entry Take (I: out integer); end Buffer;



Similar documents


Color Screen Phones: SIP-T48G and SIP-T46G with firmware version 73

Pro3 1 : listes chaînées

ECE 3401 Lecture 7. Concurrent Statements & Sequential Statements (Process)

South East of Process Main Building / 1F. North East of Process Main Building / 1F. At 14:05 April 16, Sample not collected

Introduction to Python

12. A B C A B C A B C 1 A B C A B C A B C JK-FF NETr

Archivio Sp. z o.o. Schema XSD opisująca typy dokumentów obsługiwane w Systemie Invo24

Typy danych. Data types: Literals:

database abstraction layer database abstraction layers in PHP Lukas Smith BackendMedia

Technical Support Set-up Procedure

Facebook Twitter YouTube Google Plus Website

Wstęp do programowania w języku PHP

Ada-95 dla programistów C/C++

Problem 1. CS 61b Summer 2005 Homework #2 Due July 5th at the beginning of class

Distributed Network Management Using SNMP, Java, WWW and CORBA

Certified PHP/MySQL Web Developer Course

TCP/IP Networking, Part 2: Web-Based Control

Client SuiteScript Developer s Guide

Reach 4 million Unity developers

What is COM/DCOM. Distributed Object Systems 4 COM/DCOM. COM vs Corba 1. COM vs. Corba 2. Multiple inheritance vs multiple interfaces

In this example the length of the vector is determined by D length and used for the index variable.

The Designer's Guide to VHDL

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG

20 Using Scripts. (Programming without Parts) 20-1

BLADE 12th Generation. Rafał Olszewski. Łukasz Matras

Basics of I/O Streams and File I/O

GCE. Computing. Mark Scheme for January Advanced Subsidiary GCE Unit F452: Programming Techniques and Logical Methods

Chapter 6 Concurrent Programming

Form Validation. Server-side Web Development and Programming. What to Validate. Error Prevention. Lecture 7: Input Validation and Error Handling

RT Language Classes. Real-Time Programming Languages (ADA and Esterel as Examples) Implementation. Synchroneous Systems Synchronous Languages

EE282 Computer Architecture and Organization Midterm Exam February 13, (Total Time = 120 minutes, Total Points = 100)

PL / SQL Basics. Chapter 3

DM74LS151 1-of-8 Line Data Selector/Multiplexer

ESCI 386 IDL Programming for Advanced Earth Science Applications Lesson 6 Program Control

PL/SQL MOCK TEST PL/SQL MOCK TEST I

Data Masking. Procedure

ClientAce WPF Project Example

Lecture 4: Writing shell scripts

Aras Corporation Aras Corporation. All rights reserved. Notice of Rights. Notice of Liability

Integrating R with the Go programming language using interprocess communication

Optical-Sensor Data Handling

Writing cleaner and more powerful SAS code using macros. Patrick Breheny

Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY

aan n a l i a z a l i z a Bankowy

CS 378 Big Data Programming. Lecture 9 Complex Writable Types

A Brief Introduction to MySQL

Concurrent Programming

PRI-(BASIC2) Preliminary Reference Information Mod date 3. Jun. 2015

Field Properties Quick Reference

Creating a Simple, Multithreaded Chat System with Java

WYPE NIA UCZENNICA/UCZE GIMNAZJUM WYPE NIJ DRUKOWANYMI LITERAMI. IMI NAZWISKO. KLASA(np. 1.a,2.b,3.c)

Component Based Rapid OPC Application Development Platform

Classe AGI - PHP 5.x

Analysis of Binary Search algorithm and Selection Sort algorithm

SQL Server An Overview

PostgreSQL Functions By Example

Part I. Multiple Choice Questions (2 points each):


Load balancing and failover For kbmmw v ProPlus and Enterprise Editions

Schema Classes. Polyhedra Ltd

ENTRAINMENT OF PARTICLES IN THE MECHANOBR LABORATORY FLOTATION MACHINE

Implementing Object Tracking on Cisco IOS XR Software

SenseLink TM. End-Point Controller. Addendum

PL/SQL Overview. Basic Structure and Syntax of PL/SQL

Java and Distributed Object Models: An Analysis

Writing Control Structures

Introduction to Python

Package sjdbc. R topics documented: February 20, 2015

Unit 39. Malware. portmanteau word VáRZRSo- ZVWDáH]SRáF]HQLDLnQ\FKVáyZ malicious ]árolz\

Principles of Database Management Systems. Overview. Principles of Data Layout. Topic for today. "Executive Summary": here.

Settle-to-File Credit Card Driver for 3700 POS

Oracle For Beginners Page : 1

1 Stored Procedures in PL/SQL 2 PL/SQL. 2.1 Variables. 2.2 PL/SQL Program Blocks

Documentum Developer Program

Package HadoopStreaming

WAYNESBORO AREA SCHOOL DISTRICT CURRICULUM INTRODUCTION TO COMPUTER SCIENCE (June 2014)

How To Rate Plan On A Credit Card With A Credit Union

Implementing and Using Execution Time Clocks in Ada Hard Real-Time Applications

Design Patterns in C++

6ES7313-5BF03-0AB0. Supply voltages Rated value 24 V DC Yes permissible range, upper limit (DC) circuit breaker type B, min. 4 A

Autodialler. Installation & Programming Guide HYL004. Please read these instructions before you start the installation. Installation.

Java Coding Practices for Improved Application Performance

public static void main(string[] args) { System.out.println("hello, world"); } }

Division of Informatics, University of Edinburgh

Transcription:

Model ZADANIE AKTYWNE :<:2ΰ8- &( Ada Randki (spotkania) w Adzie ZHM FLHΓ ZHM FLHΓ ZADANIE BIERNE 35=<-08- &( U Ady Zasady ZHM FLHΓ =DGDQLHVNαDGDVL ]HVSHF\ILNDFMLRUD]WUH FL 6SHF\ILNDFMDPR H]DZLHUDόW\ONRGHNODUDFMHZHM όdqjentries) task Buffer is entry Append (I: in integer); entry Take (I: out integer); end Buffer; =DGDQLHF]\QQHPR HZ\ZRαDόZHM FLHBuffer.Append(15) :WUH FL]DGDQLDELHUQHJRV RSLVDQHF]\QQR FLGRNRQ\ZDQHZ WUDNFLHUDQGNLSRSU]H]GDQHZHM FLH task body Buffer is {... } accept Append (I: in integer) do ^RSLVF]\QQR FL` end Append; {... } end Buffer; Ada str. 1

6\QFKURQL]DFMDPL G]\]DGDQLHPDNW\ZQ\PZ\ZRαXM F\P ZHM FLHD]DGDQLHPELHUQ\PV\PHWU\F]QHF]HNDQLH Wzajemne wykluczanie.rohmnl]zl ]DQH]LQVWUXNFMDPLaccept V UHDOL]RZDQHMDNR kolejki proste Semantyka randki 1. =DGDQLHF]\QQHZ\ZRαXM FHZHM FLHSU]HND]XMHSDUDPHWU\ aktualne in i inoutgr]dgdqldelhuqhjrl]dzlhv]dvl Z RF]HNLZDQLXQD]DNR F]HQLHUDQGNL 2. =DGDQLHELHUQHZ\NRQXMHLQVWUXNFMHZWUH FLRGSRZLHGQLHJR ZHM FLD 3. Parametry out i inoutv SU]HND]\ZDQHGR]DGDQLDF]\QQHJR 4. 5DQGNDNR F]\VL NRQW\QXDFMD]DGD Charakterystyka randki jako operacji pierwotnej Synchroniczna komunikacja bez bufowania $V\PHWU\F]QDLGHQW\ILNDFMD]DGD 'ZXNLHUXQNRZ\SU]HSα\ZGDQ\FK :\NRQ\ZDQLHFL JXLQVWUXNFML 6NαDGQLD Instrukcja when w1 DFFHSWZHM FLHGR,HQGZHM FLH instrukcje-poza-rejonem-krytycznym-1; when w2 DFFHSWZHM FLHGR,HQGZHM FLH instrukcje-poza-rejonem-krytycznym-2;... else I-inne; {terminate; lub delay T; I-inne;} end ; Ada str. 2

Semantyka 1. 6]XNDQLHRWZDUW\FKJDα ]LW\FK]SUDZG]LZ\PLGR]RUDPL-H OL ich nie ma az brak frazy elsewreα G 2. -H OLV ]DGDQLDF]\QQHRF]HNXM FHZNROHMNDFKSU]\ZHM FLDFK RWZDUW\FKJDα ]LWRUR]SRF]\QDVL UDQGND]pierwszym zadaniem w niedeterministyczniez\eudqhmjdα ]LRWZDUWHM 3. -H OLZV]\VWNLHNROHMNLZRWZDUW\FKJDα ]LDFKV SXVWHRUD]QLH ma else, delay ani terminate, to zadanie bierne zostaje ]DZLHV]RQH*G\W\ONRMDNLH ]DGDQLHF]\QQH]JαRVLFK όzhm FLD GRRWZDUWHMJDα ]LWRUR]SRF]\QDVL ]QLPUDQGNDXZDJD GR]RU\QLHV MX ZDUWR FLRZDQHF]\OL]ELyURWZDUW\FKJDα ]LQLH ]PLHQLDVL 4. Randka przebiega standardowo 5. 3R]DNR F]HQLXUDQGNL]DGDQLHELHUQHZ\NRQXMHinstrukcje-pozarejonem-krytycznym 6. Mamy else-h OLQLHPDRWZDUW\FKJDα ]LDOERNROHMNLZ RWZDUW\FKV SXVWHWRMHVWZ\NRQ\ZDQ\FL JLQVWUXNFMLI-inne 7. Mamy delay-h OLNROHMNLZRWZDUW\FKJDα ]LDFKV SXVWHWR zadanie bierne czeka, ale tylko T jednostek, a potem wykonuje I- inne 8. Mamy terminate:vnuyflhsrzrgxmh]dnr F]HQLH]ELRUX ]DGD MH OLLQVWUXNFMD jest zawieszona i wszystkie HZHQWXDOQH]DGDQLDDNW\ZQH]DNR F]\α\VL OXEWH F]HNDM Z ]JDα ]L terminate 3URJUDPRZDQLH]X \FLHP =Z\NαDUDQGNDLPSOHPHQWXMHPHFKDQL]P53&Remote Procedure Call). Fraza uogσlnia RPC Fraza delay implementuje ograniczony czas oczekiwania Ada str. 3

task body T is accept czujnik-1 do... ; accept czujnik-2 do... ; delay 0.1; -- 100 milisekund Alarm; end ; end T; Fraza else MHVWUyZQRZD QDdelay z zerem. Implementuje rodzaj przepytywania (ang. pollingvsudzg F]\QLHPDNRPXQLNDWyZ GRSU]HWZRU]HQLDLMH OLQLHWRZ\NRQXMQRUPDOQHF]\QQR FL Kilkakrotne accept GODWHJRVDPHJRZHM FLD DFFHSW(GRHQG(QLHSDU]\VWHZ\ZRαDQLD DFFHSW(GRHQG(SDU]\VWHZ\ZRαDQLD Instrukcje po acceptprj E\όSXVWH7DNDIRUPDVαX \GR synchronizacji, np. kzystania z zasobu task body zasσb is accept Chce; accept Zwalnia; end zasσb;,qvwuxnfmhudqgnlprj ]DZLHUDόZHZQ WU]LQQHUDQGNLDOER Z\ZRαDQLDZHM όnrqvwuxnfmhwdnlhpdm ]QDF]Q VLα Z\UD]X Ada str. 4

6\QFKURQL]DFMDWU]HFK]DGD task body T1 is... DFFHSW6\QFKUGR7Z\ZRαXMHWRZHM FLH DFFHSW6\QFKU7Z\ZRαXMHWRZHM FLH end Synchr-2;... end T1; =DGDQLH7E G]LH]DZLHV]RQHGRSyW\GRSyNLQLHQDVW SLUDQGND ]7-H OL7]JαRVLVL SLHUZV]HGR7WRE G]LHRF]HNLZDαRZ NROHMFHZHM FLRZHMD SRMDZLVL 7RFRQDPFKRG]L Select w zadaniu czynnym =DGDQLHF]\QQHPR H]DZLHVLόVL MHG\QLHF]HNDM FQDMHGQR ZHM FLHQLHPDZ\ZRαD ZLHOXZHM όqdud] 3U]\NαDGQDZ\NRU]\VWDQLHRJUDQLF]RQHJRF]DVXRF]HNLZDQLDZ ]DGDQLXF]\QQ\P-H OLZRNUH ORQ\PF]DVLHVHNF]XMQLNQLH zareaguje, to zostanie poinfmowany operat task body T is Sens.sample (...); delay 1.0; -- w sekundach Notify-operat; end ; end T; $QNLHWRZDQLHNLONX]DGD REVαXJXM F\FKVHUZHUyZ]DGDQLH F]\QQHDQJD XMHVL ZUDQGN W\ONRZWHG\JG\VHUZHUMHVW Ada str. 5

QDW\FKPLDVWGRVW SQ\:W\PXM FLXMH OLMHVWNLONXF]HNDM F\FK VHUZHUyZWRUDQGNDRGE G]LHVL ]ND G\P task body T is Server-1.E (...); else null; end ; Server-2.E (...); else null; end ;... end T; 6SRWNDQLH]MHGQ\P]RF]HNXM F\FKVHUZHUyZ task body T is Server-1.E (...); else Server-2.E (...); else... end ; end ; end T; Priytety type Priities is (Low, Medium, High); task Server is entry Request (Priities) (...); Ada str. 6

end Server; task body Server is accept Request (High) (...)...; when Request (High) Count = 0 accept Request (Medium) (...)...; when Request (High) Count = 0 and Request (Medium) Count = 0 accept Request (Low) (...)...; end ; end Server; 6HUYHU5HTXHVW+LJKZ\ZRαDQLH Semaf package Mutex-Package; task type Simple-Mutex is entry Wait; entry Signal; end Simple-Mutex; task type Mutex is entry Init (N: in Integer); entry Wait; entry Signal; end Mutex; end Mutex-Package; package body Mutex-Package is task body Simple-Mutex is Ada str. 7

accept Wait; accept Signal; terminate; end ; end Simple-Mutex; task body Mutex is Count: Integer; accept Init (N: in Integer) do Count := N; end Init; when Count > 0 accept Wait do Count := Count - 1; end Wait; accept Signal do Count := Count + 1; end Signal; terminate; end ; end Mutex; end Mutex-Package; 6NαDGQLD$G\ Predefiniowane typy: Integer, Float, Character, Boolean, String Typy wyliczeniowe: type States is (Off, Run, Start); Ada str. 8

Tablice type Arr is array (1..100) of Integer; Rekdy type Rec is recd field1: Integer; field2: Boolean; end recd; :VND QLNL type Rec_Pointer is access Rec; Instrukcje if A > B then & $WHQ UHGQLNMHVWZD Q\ elsif A < B then C := B; else C := 0; end if; f I in 1..10 A(I) := 0; while X > 0 X := X/2; X := X/2; exit when X <= 0; PakietWR]ELyUGHNODUDFMLGDQ\FKLSURFHGXUNWyU\PR QD RGG]LHOQLHNRPSLORZDόXPLHV]F]DόZELEOLRWHFHLXGRVW SQLDό LQQ\PSDNLHWRPE G SURJUDPRZLJαyZQHPX AtrybutWRIXQNFMDSU]HND]XM FDZDUWR όsuhghilqlrzdqhm ZLHONR FL]ZL ]DQHM]RELHNWHP S: String (1..80); Ada str. 9

if S Length < 50 then PQLHMQL HOHPZ6 S(S Last) := S(S First); -- wstaw na koniec, to co end if; QDSRF] WNX f I in S Range -- dla wszystkich elementσw w S S(I) := * ; Typ zadaniowy (task type): dla zadeklarowania kilku LGHQW\F]Q\FK]DGD GHNODUXMHVL W\S]DGDQLRZ\DQDVW SQLH ZLHOHZFLHOH WHJRW\SX Ada str. 10