Az Input-Output használata Az input-outputot a nyelv előredefiniált csomagokon keresztül valósítja meg. Mindegyik csomag az Ada alapcsomag gyereke.

Slides:



Advertisements
Hasonló előadás
C# nyelvi áttekintő A „Programozás C# nyelven (Illés Zoltán)”
Advertisements

Tananyag: konzultáció
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
 Megfigyelhető, hogy amikor több elem közötti összehasonlítás történik, akkor szükség van egyszerre több értékre is, főleg akkor, ha ezek az értékek jóval.
Programozás III STRING-XML.
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Felhasználói felületek és üzleti logika Bollobás Dávid ASP.NET
Ismétlés. Ismétlés: Adatbázisok megnyitása: OPEN DATABASE adatbázis_név OPEN DATABASE ”adatbázis_név elérési útvonallal” Adattábla megnyitása: USE tábla_név.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Cells(sor száma, oszlop száma)
JavaScript.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
Fájlkezelés, IO Kivételkezelés Belső osztályok
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Adatbázis rendszerek II.
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Ellenőrző kérdések a)Auto-indexing enabled b)Auto-indexing disabled c)Nem eldönthető 1.
VFP programozása report készítése menü készítése dinamikus elemek
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
6. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
5. előadás Parametrikus polimorfizmus. Generikus programozás
6. előadás Hatókör, láthatóság, élettartam. Változók leképzése a memóriára. Blokkszerkezetes nyelvek. Kivételkezelés.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
4. előadás Az Ada típusai és típuskonstrukciós eszközei, II. Rekordok és átlátszatlan típusok. A csomagok. Adatabsztrakció, egységbe zárás.
4. előadás Az Ada típusai és típuskonstrukciós eszközei, II
Állomány kezelés.
PHP III. Fájlok, űrlapok.
P ROGRAMOZÁS I/O műveletek. S YSTEM.C ONSOLE A programjainknak fontos része a felhasználóval való kommunikáció. Adatokat kell kérni tőle, vagy közölnünk.
Programozás Az adatokról C# -ban.
A JavaScript bemutatása
Összetett adattípusok
Turbo Pascal 11..
Alprogramok deklarációja, definíciója és meghívása Páll Boglárka.
Összetett adattípusok a Pascal nyelvben
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Tömbök és programozási tételek
Rendezések és szövegkezelő függvények
Fájlkezelés Pascalban
Adatállományok.
1.3. Pascal program felépítése Az els ő program. Program ; … Begin … End. Program fej Deklarációs rész Végrehajtó rész.
Összetett adattípusok
Felhasználók és jogosultságok
Hernyák Zoltán Programozási Nyelvek II.
Készítette: Lipp Marcell
Turbo Pascal Indítás: C:\LANGS\Turbo Pascal Turbo Pascal.
Java programozási nyelv Filekezelés
Egyenesvonalú (lineáris) adatszerkezetek
Objektum orientált programozás
Adatbázis rendszerek II
1 Mivel foglalkozunk a laborokon? 7. hét: Do-Loop-Until Do-Until-Looptömbök Function 7. hét: Do-Loop-Until és Do-Until-Loop ciklusok. Egy indexes tömbök,
Webprogramozó tanfolyam
A Visual Basic nyelvi elemei
Free pascal feladatok
A 2. géptermi beszámoló VBA anyagának összefoglalása
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
5. előadás Parametrikus polimorfizmus. Generikus programozás. Az Ada sablonok.
Excel programozás (makró)
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Fájlkezelés Programozási tételek
1 Függvények használata – az első függvénynél a formulát háromszor be kell írni, rendre az x, x+h, x-h argumentumokkal, – a második függvénynél az új (feltételes.
Az 5,6,7 laborok VBA anyagának összefoglalása
Excel programozás (makró)
A CLIPS keretrendszer
Függvénysablonok használata
Előadás másolata:

Az Input-Output használata Az input-outputot a nyelv előredefiniált csomagokon keresztül valósítja meg. Mindegyik csomag az Ada alapcsomag gyereke.

Külső fájlok és fájlobjektumok n n külső fájl – – értéket lehet belőle olvasni – – értéket lehet bele írni n n Egy sztring (a fájl neve) azonosítja. n n Egy másik sztring is kapcsolódhat a fájlhoz, amely a fájl rendszerfüggő jellemzőit tartalmazza (pl. hozzáférési jogok).

Sequential_IO, Direct_IO sablon csomag n n példányosítjuk n n az eredmény csomag tartalmaz: fájl típust: File_Type műveleteket - pl. Open, Read, Write

Az olvasható forma input-outputja: Text_IO, ill. Wide_Text_IO csomag

Fájlok használata: n n a fájlt össze kell kapcsolni egy külső fájllal n n ezután egy kurrens üzemmódban van: type File_Mode is (In_File, Inout_File, Out_File) Direct_IO esetén, type File_Mode is (In_File, Out_File, Append_File); Sequential_IO, Text_IO, Wide_Text_IO, és Stream_IO esetén. A fájl üzemmódja változtatható.

n n A lehetséges hibajelzéseket az Io_Exceptions csomag definiálja. n n A fájltípusok limited private típusok.

A fájl kezelés: n n fájl-változó deklarálása, n n a fájl-változó összekapcsolása egy külső fájllal (fájl-nyitás), n n az olvasó, ill. író műveletek végrehajtása, n n a fájl lezárása.

Egységes névkonvenció: n n egy fájl létrehozása a Create, n n egy létező külső fájl megnyitása az Open, n n egy fájl lezárása a Close eljárással történik,

Soros és közvetlen elérésű fájlok n n Sequential_IO és a Direct_IO sablon csomagok n n Soros hozzáférés esetén a fájl értékek sorozata, amelyek megjelenésük sorrendjében elérhetőek. n n Ha a fájlt megnyitottuk, az átvitel In_File és Out_File mód esetén a fájl elején, Append_File mód esetén a fájl végén kezdődik.

n n Közvetlen hozzáférés esetén a fájl elemek egy halmaza, amelyek lineáris sorrendben egymás utáni pozíciókat foglalnak el, bármely pozícióra vihetünk ki a fájlba egy értéket, ill. olvashatunk be egy elemet.

Egy elem pozícióját az indexe mutatja: n n az első elem indexe 1, n n az utolsó elem indexe a pillanatnyi méret, ez 0, ha nincs eleme a fájlnak. n n A pillanatnyi méret a külső fájl egy jellemzője. n n Egy megnyitott direkt fájlnak van egy kurrens indexe, ami az az index, amit a következő olvasó vagy író utasítás használni fog. n n Amikor a direkt fájlt megnyitjuk, ez az eljárás a kurrens indexet egyre állítja. Egy direkt fájl kurrens indexe a fájl objektum jellemzője, nem a külső fájlé.

Külső fájlok vezérlése: n n szekvenciális fájloknál: procedure Create ( File : in out File_Type; Mode : in File_Mode:=Out_File; Name: in String:=""; Form: in String:=""); n n direkt fájloknál: procedure Create ( File : in out File_Type; Mode : in File_Mode:=InOut_File; Name: in String:=""; Form: in String:="");

n n Hibajelzések: – –Status_Error - ha az adott fájl már meg van nyitva, – –Name_Error - ha a névnél megadott jelsorozat nem használható a külső fájl azonosítására (pl. van már ilyen nevű külső fájl, – –Use_Error - ha a specifikált üzemmódra a környezet nem támogatja külső fájl létrehozását az adott névvel és formával.

procedure Open( File : in out File_Type; Mode : in File_Mode; Name: in String; Form: in String:=""); n n Hibajelzések: – –Status_Error - ha az adott fájl már meg van nyitva, – –Name_Error - ha nincs ilyen külső fájl, – –Use_Error - ha a specifikált üzemmódra a környezet nem támogatja külső fájl létrehozását az adott névvel és formával. (pl. nem megfelelő üzemmódot akarok, v. hibás a form rész, v. nincs jogom írásra stb.).

procedure Close ( File : in out File_Type ) ; n n Hibajelzések: – –Status_Error - ha az adott fájl nincs megnyitva, procedure Delete( File : in out File_Type); n n Hibajelzések: – –Status_Error - ha az adott fájl már meg van nyitva, – –Use_Error - ha a környezet nem támogatja a külső fájl törlését.

procedure Reset(File : in out File_Type; Mode : in File_Mode); procedure Reset(File : in out File_Type); n n Hibajelzések: – –Status_Error - ha az adott fájl nincs megnyitva, – –Use_Error - ha a környezet nem támogatja a külső fájlra a visszaállítást, vagy a specifikált üzemmódot.

function Mode ( File : in File_Type ) return File_Mode; n n Hibajelzések: – –Status_Error - ha az adott fájl nincs megnyitva, function Name( File : in File_Type) return String; n n Hibajelzések: – –Status_Error - ha az adott fájl nincs megnyitva, – –Use_Error - ha az objektumhoz kapcsolt fájl ideiglenes, azaz névvel nem azonosítható. function Form( File : in File_Type) return String; n n Hibajelzések: – –Status_Error - ha az adott fájl nincs megnyitva, function Is_Open( File : in File_Type) return Boolean;

Író-olvasó műveletek: n n mindig Status_Error, ha az adott fájl nincs előzőleg megnyitva

Szekvenciális fájlok procedure Read( File : in File_Type; Item : out Element_Type); n n Hibajelzések: – –Mode_Error - ha a fájl nincs In_File üzemmódban, – –End_Error - ha nem lehet több elemet kiolvasni az adott fájlból, – –Data_Error - ha az olvasott elem nem értelmezhető Element_Type típusú értékként.

procedure Write( File : in File_Type; Item : in Element_Type); n n Hibajelzések: – –Mode_Error - ha a fájl nincs Out_File vagy Append_File üzemmódban, – –Use_Error - ha a külső fájl kapacitása kimerült. function End_Of_File ( File : in File_Type ) return Boolean; n n Hibajelzések: – –Mode_Error - ha a fájl nincs In_File üzemmódban.

Közvetlen elérésű fájlok procedure Read( File : in File_Type; Item: out Element_Type) ; procedure Read( File : in File_Type; Item: out Element_Type; From : in Positive_Count) ; n n Hibajelzések: – –Mode_Error - ha a fájl Out_File üzemmódban van, – –End_Error - ha a használt index nagyobb a külső fájl méreténél, – –Data_Error - ha az olvasott elem nem értelmezhető Element_Type típusú értékként.

procedure Write( File : in File_Type; Item: in Element_Type); procedure Write( File : in File_Type; Item: in Element_Type; To : in Positive_Count); n n Hibajelzések: – –Mode_Error - ha a fájl In_File üzemmódban van, – –Use_Error - ha a külső fájl kapacitása kimerült.

procedure Set_Index( File : in File_Type; To : in Positive_Count); function Index( File : in File_Type) return Positive_Count; function Size(File : in File_Type) return Count; function End_Of_File(File : in File_Type) return Boolean; n n Hibajelzések: – –Mode_Error- ha a fájl Out_File üzemmódban van.

with Direct_Io; procedure DIOpélda is package Dio is new Direct_Io(Character); use Dio; F: Dio.File_Type; Begin Create(f, Name=>"példa.dat"); for J in Integer range loop Write(f, 'a'); end loop; for J in reverse Positive_Count Range loop Write(F,'l', J*4-2); end loop; for J in Positive_Count Range loop Set_Index(F, J*4-1); Write(F,'m'); end loop; Close(f); end DIOpélda;

Textfájlok kezelése n n A Text_IO csomag teszi lehetővé az olvasható formák input-outputját. n n Minden fájlt szekvenciálisan lehet olvasni, ill. minden fájlra szekvenciálisan lehet írni; a karakterek sorozatát sorokká, a sorok sorozatát oldalakká csoportosítjuk. n n Az előzőekben megadott fájlkezelési lehetőségek a szöveges input-outputra is alkalmazhatóak. n n A Read és Write eljárások helyett Get és Put eljárások (belső konverzió is van).

n n Alapértelmezett input, ill. output fájl: – –aktuális (kurrens) input - Current_Input, – –aktuális (kurrens) output - Current_Output n n A program indulásának pillanatában: – –standard text-fájlok. n n Interaktív rendszerekben: – –a klaviatúra a standard input - Standard_Input, – –a képernyő a standard output - Standard_Output. n n Átirányítás: – – Set_Input - Set_Output n n Visszairányítás: – –pl. Set_Input(Standard_Input)

Logikai szempontból: n n egy szövegfájl oldalak sorozata, n n egy oldal sorok sorozata, n n egy sor karakterek sorozata n n a sorok végét sorvégjel, n n az oldalak végét egy sorvégjel és egy azt követő lapvégjel n n a fájl végén egy sorvégjel, egy lapvégjel és egy fájlvégjel

Számozások: n n a karakterek a sorokon belül 1-gyel kezdve vannak megszámozva, n n a sorvégjel sorszáma eggyel nagyobb, mint a sorban található karakterek száma, n n a sorok az oldalakon belül, ill. az oldalak a fájlon belül ugyanezen rendszer szerint vannak megszámozva, n n az aktuális karakter sorszáma (oszlopszám) a következő karakter sorszáma, n n az aktuális sor sorszám az aktuális sor sorszáma, n n az aktuális lapszám az aktuális lap sorszáma.

n n Ezek a számok a Count típus Positive_Count altípusába esnek. type Count is range 0.. implementation-defined; subtype Positive_Count is Count range 1.. Count'Last; n n Egy output fájlra beállítható és lekérdezhető a maximális sorhossz, ill. oldalhossz. n n Ha a kiírandó érték nem fér bele a feldolgozás alatt álló sorba egy specifikált maximális sorhossz mellett, akkor automatikusan új sort kezd, mielőtt végrehajtaná az átvitelt, ugyanígy, ha egy új sor nem fér rá a feldolgozás alatt álló oldalra egy specifikált maximális oldalhossz mellett, akkor automatikusan új oldalt kezd. n n Amikor egy fájlt Out_File vagy Append_File üzemmódban nyitunk meg, mindkét érték 0, ez megegyezés szerint azt jelenti, hogy nincs rájuk korlát. n n Következésképpen az output egyetlen sorból áll, ha nem használjuk explicite a New_Line, ill. New_Page parancsokat!

n n A szövegfájlok megnyitási módjai, inicializáló és bezáró műveletei pontosan ugyanolyanok, mint a szekvenciális fájlok esetén, de bizonyos további hatásaik is vannak a ottaniakhoz képest: – –A Create és Open eljárásokban: ha a fájlt Out_File vagy Append_File üzemmódra nyitottunk meg, az oldalhossz és sorhossz nem korlátozott; mindhárom üzemmód esetén az aktuális oszlop, sor és oldal számot 1-re állítja. – –Append_File mód esetén implementációfüggő, hogy az eredeti szöveg és az új szöveg között lesz-e oldalvégjel. – –A Close eljárásban: Out_File és Append_File üzemmódú fájl esetén még egy New_Page eljárást hív, majd kiír egy fájlvég jelet. – –A Reset eljárás Out_File és Append_File üzemmódú fájl esetén még egy New_Page eljárást hív, majd kiír egy fájlvég jelet.

n n Ha Out_File üzemmódúra állítjuk a fájlt, az oldalhossz és sorhossz nem korlátozott; mindkét üzemmód esetén az aktuális oszlop, sor és oldal számot 1-re állítja. n n Append_File mód esetén implementációfüggő, hogy az eredeti szöveg és az új szöveg között lesz-e oldalvégjel. n n Mode_Error hibajelzés lép fel, ha a kurrens default input, ill. output fájl üzemmódját akarjuk változtatni.

Alapértelmezett fájlok kezelése: n n Ezeket a fájl paraméter nélküli Get és Put műveletek használják. procedure Set_Input(File : in File_Type); n n Hibajelzések: – –Mode_Error- ha a fájl nincs In_File üzemmódban – –Status_Error- ha az adott fájl nincs megnyitva procedure Set_Output(File : in File_Type); procedure Set_Error (File : in File_Type); n n Hibajelzések: – –Mode_Error- ha a fájl nincs Out_File vagy Append_File üzemmódban – –Status_Error- ha az adott fájl nincs megnyitva

function Standard_Input return File_Type; function Standard_Input return File_Access; function Standard_Output return File_Type; function Standard_Output return File_Access; function Standard_Error return File_Type; function Standard_Error return File_Access; function Current_Input return File_Type; function Current_Input return File_Access; function Current_Output return File_Type; function Current_Output return File_Access; function Current_Error return File_Type; function Current_Error return File_Access;

Standard szövegfájlok átirányítása: with Text_Io; use Text_Io; procedure Átirányít is F: File_Type; I: Character; Begin Create( F, Name =>"példa.txt"); Set_Output(F); Put("Ez a szöveg most nem a képernyőre,"); Put("hanem a példa.txt fájlba került."); New_Line; Set_Output(Standard_Output); Put_Line("A példa.txt fájl tartalma:"); Reset(F,In_File); Set_Input(F); while not End_Of_File loop while not End_Of_Line loop Get(I); Put(I); end loop; Skip_Line; New_Line; end loop; Close(F); end Átirányít;

Sor- és oldalhosszak beállítása és lekérdezése n n Minden esetben – –Status_Error, ha az adott fájl nincs megnyitva, – –Mode_Error, ha a fájl nincs Out_File vagy Append_File üzemmódban. procedure Set_Line_Length(File : in File_Type; To : in Count); procedure Set_Line_Length(To : in Count); n n Hibajelzések: – –Use_Error - ha a specifikált sorhossz nem felel meg a fájllal összekapcsolt külső fájlnak.

procedure Set_Page_Length(File : in File_Type; To : in Count); procedure Set_Page_Length(To : in Count); n n Hibajelzések: – –Use_Error - ha a specifikált oldalhossz nem felel meg a fájllal összekapcsolt külső fájlnak. function Line_Length(File : in File_Type) return Count; function Line_Length return Count; function Page_Length(File : in File_Type) return Count; function Page_Length return Count;

Oszlopok, sorok, és oldalak műveletei n n Minden esetben: – –Status_Error, ha az adott fájl nincs megnyitva. procedure New_Line(File : in File_Type; Spacing : in Positive_Count := 1); procedure New_Line(Spacing : in Positive_Count := 1); n n Hibajelzések: – –Mode_Error- ha a fájl nincs Out_File vagy Append_File üzemmódban

procedure Skip_Line(File : in File_Type; Spacing : in Positive_Count := 1); procedure Skip_Line(Spacing : in Positive_Count := 1); n n Hibajelzések: – –Mode_Error- ha a fájl nincs In_File üzemmódban – –End_Error- ha fájl végét akar olvasni function End_Of_Line(File : in File_Type) return Boolean; function End_Of_Line return Boolean; n n Hibajelzések: – –Mode_Error- ha a fájl nincs In_File üzemmódban

procedure New_Page(File : in File_Type); procedure New_Page; n n Hibajelzések: – –Mode_Error- ha a fájl nincs Out_File vagy Append_File üzemmódban procedure Skip_Page(File: in File_Type); procedure Skip_Page; n n Hibajelzések: – –Mode_Error- ha a fájl nincs In_File üzemmódban – –End_Error- ha fájl végét akar olvasni

function End_Of_Page(File : in File_Type) return Boolean; function End_Of_Page return Boolean; n n Hibajelzések: – –Mode_Error- ha a fájl nincs In_File üzemmódban function End_Of_File(File : in File_Type) return Boolean; function End_Of_File return Boolean; n n Hibajelzések: – –Mode_Error - ha a fájl nincs In_File üzemmódban

Az írás vagy olvasás aktuális pozíciójának vezérlése: procedure Set_Col(File : in File_Type; To : in Positive_Count); procedure Set_Col(To : in Positive_Count); n n - Out_File vagy Append_File üzemmódú fájlra n n Hibajelzés: – –Layout_Error - ha van megadva egy (nem 0) maximális sorhossz, és a To-beli érték ennél nagyobb. n n - In_File üzemmódú fájlra n n Hibajelzés: – –End_Error- ha fájl végét akar olvasni

procedure Set_Line(File : in File_Type; To : in Positive_Count); procedure Set_Line(To : in Positive_Count); n n - Out_File vagy Append_File üzemmódú fájlra n n Hibajelzés: – –Layout_Error - ha van megadva (nem 0) maximális oldalhossz, és a To-beli érték ennél nagyobb. n n - In_File üzemmódú fájlra n n Hibajelzések: – –End_Error- ha fájl végét akar olvasni

function Col(File : in File_Type) return Positive_Count; function Col return Positive_Count; n n Hibajelzés: – –Layout_Error- ha a visszaadott érték nagyobb, mint a Count típus felső határa. function Line(File : in File_Type) return Positive_Count; function Line return Positive_Count; n n Hibajelzések: – –Layout_Error- ha a visszaadott érték nagyobb, mint a Count típus felső határa. function Page(File : in File_Type) return Positive_Count; function Page return Positive_Count; n n Hibajelzések: – –Layout_Error- ha a visszaadott érték nagyobb, mint a Count típus felső határa.

with Text_io; use Text_io; procedure Oldalak is F: file_type; I: Character; Begin Create(f,name=>"példa.txt"); Set_Line_Length(F,20); Set_Page_Length(F,3); for I in Integer range loop Put(F,'a'); end loop; Reset(F,mode=>in_file); while not End_Of_File(F) loop if End_Of_Line(F) then Put(" Sor vége"); New_Line; end if; if End_Of_Page(F) then Put("Lap vége"); New_Line; end if; Get(F,I); Put(I); end loop; New_Line; Put_line("File vége"); Close(F); end Oldalak;

Get és Put eljárások n n A Character és String típusú elemek Get és Put eljárásai egyedi karakter-értékeket kezelnek. n n A numerikus és felsorolási típusokra vonatkozó Get eljárások lexikai elemként analizálják a bejövő karakter- sorozatot, a Put eljárások pedig megfelelő lexikális elemként továbbítják az adott értékeket. n n Minden Get, ill. Get_Line egy In_File üzemmódban és minden Put, ill. Put_Line egy Out_File vagy Append_File üzemmódban lévő fájlra értelmes, megfelelően módosítják a specifikált fájl aktuális oszlop, sor és lap számát. n n Hibaüzenetek: – – Status_Error, ha meg nem nyitott fájlra hívjuk meg őket. – –Mode_Error hibát jeleznek a Get és Get_Line műveletek ha a fájl nem In_File üzemmódú, illetve a Put és Put_Line műveletek, ha a fájl üzemmódja nem Out_File vagy Append_File.

A karakter típus műveletei: procedure Get(File : in File_Type; Item : out Character); procedure Get(Item : out Character); n n Hibajelzés: – –End_Error - ha fájl végén túl akar olvasni procedure Put(File : in File_Type; Item : in Character); procedure Put(Item : in Character);

procedure Look_Ahead (File : in File_Type; Item : out Character; End_Of_Line : out Boolean); procedure Look_Ahead (Item : out Character; End_Of_Line : out Boolean); n n Hibajelzések: – –Mode_Error, ha a fájl nem In_File üzemmódú.

procedure Get_Immediate(File : in File_Type; Item : out Character); procedure Get_Immediate(Item : out Character); n n Hibajelzések: – – Mode_Error, ha a fájl nem In_File üzemmódú, – – End_Error a fájl végén. procedure Get_Immediate(File : in File_Type; Item : out Character; Available : out Boolean); procedure Get_Immediate(Item : out Character; Available : out Boolean); n n Hibajelzések: – – Mode_Error, ha a fájl nem In_File üzemmódú, – – End_Error a fájl végén.

String típus műveletei: procedure Get(File : in File_Type; Item : out String); procedure Get(Item : out String); n n Hibajelzés: – –End_Error - ha fájl végén túl akar olvasni procedure Put(File : in File_Type; Item : in String); procedure Put(Item : in String);

procedure Get_Line(File : in File_Type; Item : out String; Last : out Natural); procedure Get_Line(Item : out String; Last : out Natural); n n Hibajelzés: – –End_Error - ha fájl végén túl akar olvasni procedure Put_Line(File : in File_Type; Item : in String); procedure Put_Line(Item : in String);

with Text_Io; use Text_Io; procedure Get_Put is F: File_Type; I: Character; S:String(1..80); Last: Natural; B:Boolean:=True; begin -- példa.txt létrehozása Create(F, Name=>"példa.txt"); while not End_of_File loop Get(I); Put(F, I); if End_of _Line then Skip_Line; New_Line(F); end if; end loop; Close(F); Put_Line("A példa.txt tartalma:"); Open(F, Name=>"példa.txt", Mode=>In_File ); while not End_Of_File(F) loop Get_Line(F,S,Last); Put_Line(S(1..Last)); end loop; Close(F); Put_Line(„nyomjon le egy billentyűt”); while not B loop Get_Immediate(I,B); end loop; end Get_Put;

Egész típusok input-outputja n n Integer_IO és Modular_IO beágyazott sablon csomagok n n példányosítani kell őket használat előtt a megfelelő egész típusra. n n A számok kiíratási szélességét vezérlő default érték a megfelelő egész típus szélessége: subtype Field is Integer range 0..implementációfüggő; Default_Width : Field := Num'Width; n n Az értékeket decimális, vagy más alapú számként kezelhetjük, ennek default értéke 10: subtype Number_Base is Integer range ; Default_Base : Number_Base := 10;

A műveletek: procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); n n Hibajelzés: – –Data_Error-ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne a Num típusban procedure Put(File : in File_Type; Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Put(Item : in Num; Width : in Field := Default_Width; Base : in Number_Base := Default_Base); procedure Get(From : in String; Item : out Num; Last : out Positive); n n Hibajelzés: – –Data_Error - ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne a Num típusban. procedure Put(To : out String; Item : in Num; Base : in Number_Base := Default_Base);

n n A Text_IO.Integer_IO sablon csomag nem sablon változatai: – – az összes előre definiált egész típusra pl.: Ada.Integer_Text_IO, Ada.Long_Integer_Text_IO.

with Text_Io, Sequential_Io; use Text_Io; procedure Intio is package Int_Io is new Integer_Io(Integer); use Int_Io; package Sio is new Sequential_Io(Integer); use Sio; F: Sio.File_Type; I: Integer; Begin Create(F, Out_File, "pelda.dat"); while not End_of_file loop Get(I); Write(F, I); end loop; Reset(F, In_File); while not End_Of_File(F) loop Read(F, I); Put(I, Width => 20, Base => 3); -- 3-as számrendszerben Put(I, Width => 7); es számrendszerben New_Line; end loop; Close(F); end IntIo;

Valós típusok input-outputja n n A Float_IO, a Fixed_IO és a Decimal_IO beágyazott sablon csomagok a lebegőpontos és fixpontos (+ decimális fixpontos (tizedespontos)) számok input-outputjához, n n használat előtt példányosítani kell őket a megfelelő valós típusra. n n A kezelt értékekből képzett decimális literálok lehetséges formátumai: – –Fore_mező tizedespont Aft_mező, ill. – –Fore_mező tizedespont Aft_mező E Exp_mező, ahol nincs helyköz az egyes mezők között

n n E mezők szélességének default értéke: n n lebegőpontos típusokra: – –Default_Fore : Field := 2; – –Default_Aft : Field := Num'Digits-1; – –Default_Exp : Field := 3; n n fixpontos és decimális fixpontos típusokra: – –Default_Fore : Field := Num'Fore; – –Default_Aft : Field := Num'Aft; – –Default_Exp : Field := 0;

A műveletek: procedure Get(File : in File_Type; Item : out Num; Width : in Field := 0); procedure Get(Item : out Num; Width : in Field := 0); n n Hibajelzés: – –Data_Error-ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne a Num típusban procedure Put(File : in File_Type; Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); procedure Put(Item : in Num; Fore : in Field := Default_Fore; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp);

procedure Get(From : in String; Item : out Num; Last : out Positive); n n Hibajelzés: – –Data_Error-ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne a Num típusban procedure Put(To : out String; Item : in Num; Aft : in Field := Default_Aft; Exp : in Field := Default_Exp); n n A Text_IO.Float_IO sablon csomag nem sablon változatai az összes előre definiált lebegőpontos típusra: pl. Ada.Float_Text_IO, Ada.Long_Float_Text_IO.

with Text_Io; use Text_Io; procedure F_io is package Fio is new Float_IO (Float); use Fio; I: Float; P: Positive; Begin Get(" ", I, P); Put(I); New_Line; Put(I, Fore=>5); New_Line; Put(I, Fore=>5, Aft=>10); New_Line; end F_Io; A program eredménye: E E E+02

Felsorolási típusok input-outputja n n Az Enumeration_IO beágyazott sablon csomag definiálja a felsorolási típusok input-outputját. n n Használat előtt példányosítani kell a megfelelő felsorolási típusra. n n A kiíratások formátumánál a Set paraméterben adjuk meg, hogy nagy- vagy kisbetűket használjon, n n a Width paraméterben pedig a szélességet. n n Ezek default értéke: Default_Width : Field := 0; Default_Setting : Type_Set := Upper_Case;

A műveletek: procedure Get(File : in File_Type; Item : out Enum); procedure Get(Item : out Enum); n n Hibajelzés: – –Data_Error-ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne a Num típusban procedure Put(File : in File_Type; Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Put(Item : in Enum; Width : in Field := Default_Width; Set : in Type_Set := Default_Setting); procedure Get(From : in String; Item : out Enum; Last : out Positive); n n Hibajelzés: – –Data_Error-ha nem megfelelő az olvasott jel szintaxisa, vagy ha a kapott érték nincs benne az Enum típusban procedure Put(To : out String; Item : in Enum; Set : in Type_Set := Default_Setting);

with Text_Io; use Text_Io; procedure Enum_Io is type Gyümölcs is (Alma, Narancs, Barack); package Gyümölcs_Io is new Enumeration_Io (Gyümölcs); use Gyümölcs_Io; G: Gyümölcs; P: Positive; Begin Get(" Alma másik alma harmadik alma", G, P); Put(G); New_Line; Put(G, Width=>10, Set=>Lower_Case); end Enum_Io; A program eredménye: ALMA alma

Wide_Character és Wide_String input-output n n A Wide_Character és Wide_String értékek szöveges input-outputjának megvalósítása a Wide_Text_IO csomagban található. n n A csomag specifikációja megegyezik a Text_IO csomagéval, persze azzal a módosítással, hogy a Get, Look_Ahead, Get_Immediate, Get_Line, Put és Put_Line műveletekben a Character és String típusokat Wide_Character, illetve Wide_String típusokra cseréljük. n n A Text_IO-hoz hasonlóan a beágyazott sablon numerikus csomagoknak létezik nem sablon változata is az előredefiniált numerikus típusokra, és ezek névképzése is az ottanival analóg.