Κων/νου Στυλιάδη Χρήστου Ιωάννου. Εφαρµογή Αποθήκης σε Pascal



Σχετικά έγγραφα
- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Προγραμματισμός PASCAL

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

Αποτελέσματα προόδου

ΠΡΟΤΕΙΝΟΜΕΝΕΣ ΛΥΣΕΙΣ

ΛΥΣΕΙΣ ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ÔÏÕËÁ ÓÁÑÑÇ ÊÏÌÏÔÇÍÇ

Προτεινόμενες λύσεις

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2015

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες.

Απαντήσεις στο μάθημα Δομημένος Προγραμματισμός ΕΠΑΛ

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

ΜΑΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΔΟΚΙΜΙΟΥ. Ενότητα Α - ΛΥΣΕΙΣ

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κανονική εξέταση, Φεβρουάριος 2005

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2016

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

A2. Να γράψετε για κάθε περίπτωση τον αριθμό της πρότασης και δίπλα το γράμμα που δίνει τη σωστή επιλογή.

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ιαφάνειες παρουσίασης #5

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ιαφάνειες παρουσίασης #5

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Παράλληλη Επεξεργασία Κεφάλαιο 10 ο Αντίγραφα Εργαζομένων

ΚΕΦΑΛΑΙΟ 10 ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ (ή εντολές Ελέγχου και Επιλογής ή εντολές Επιλογής και Απόφασης)

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

2/ (α) Να γράψετε τις αντίστοιχες εκφράσεις στη γλώσσα PASCAL για τις πιο κάτω µαθηµατικές εκφράσεις: (ι) z=

Παράλληλη Επεξεργασία Κεφάλαιο 6 ο Σύγχρονος Παραλληλισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ / Γ'ΕΠΑΛ ΗΜΕΡΟΜΗΝΙΑ: ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: Ι.ΜΙΧΑΛΕΑΚΟΣ-Α.ΚΑΤΡΑΚΗ-Χ.ΠΑΠΠΑ ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α

ιαφάνειες παρουσίασης #4

ιαφάνειες παρουσίασης #9

Προγραμματισμός Ι. Ασκήσεις. Τζάλλας Αλέξανδρος, Καθηγητής Εφαρμογών. Τμ. Μηχανικών Πληροφορικής Τ.Ε.

ιαφάνειες παρουσίασης #6

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL ΑΣΚΗΣΕΙΣ Γ ΛΥΚΕΙΟΥ ΚΑΤΕΥΘΥΝΣΗΣ

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

Pascal. 26 Οκτωβρίου 2011

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2011

Α2. Να γράψετε στο τετράδιό σας τους αριθμούς 1,2,3,4,5 από τη Στήλη Α και δίπλα το γράμμα α,β,γ,δ,ε,στ της Στήλης Β που δίνει τη σωστή αντιστοιχία.

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2008

ιαφάνειες παρουσίασης #8

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Παρουσίαση Delphi. Μέμος-Μπαγκράτσας Ιωάννης 1232 Μαργαρίτης Νικόλαος 1226

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Το παρακάτω πρόγραµµα παρουσιάζει µια επεξεργασία συµβολοσειρών. Program Strings; Uses Crt;

2009 :, :30 10: (10) . - (3) . . (10)

Γ ΤΑΞΗ ΗΜΕΡΗΣΙΟΥ ΕΠΑ.Λ ΜΑΘΗΜΑ ΕΙ ΙΚΟΤΗΤΑΣ ΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΚΦΩΝΗΣΕΙΣ

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 7: ΑΝΑΔΡΟΜΗ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2014

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΓΡΑΠΤΕΣ ΠΡΟΑΓΩΓΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΜΑΪΟΥ-ΙΟΥΝΙΟΥ 2015

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Παράλληλη Επεξεργασία Κεφάλαιο 9 ο Επιµερισµός εδοµένων

Pascal - Βασικές Έννοιες

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

ΠΑΡΑΡΤΗΜΑ: QUIZ ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

procedure Calculate (a: real; var Β: real; m: integer; var k,n: integer; var c: integer); begin... end;

ιαφάνειες παρουσίασης #4

Προτεινόμενες λύσεις

Α3. Να γράψετε τους αριθμούς 1, 2, 3, 4, 5 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε, στ από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

Κων/νου Στυλιάδη. Έτοιµες Ασκήσεις σε Pascal

ΛΥΚΕΙΟ ΣΟΛΕΑΣ Σχολική χρονιά

Πίνακας Περιεχομένων. 1. Locals Window & BreakPoints

Κεφάλαιο 13 : Τύποι Δεδοµένων

ιαφάνειες παρουσίασης #7

Παράλληλη Επεξεργασία Κεφάλαιο 8 ο Προγράμματα Περάσματος Μηνυμάτων

Μεταγλωττιστές Βελτιστοποίηση

Αλγόριθμοι. Α. Υπολογιστικά Προβλήματα. Β. Εισαγωγή στους Αλγόριθμους. Γ. ομή Αλγόριθμων. Δ. ομές εδομένων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΞΑΜΗΝΟ : Α. ΥΠΕΥΘΥΝΟΣ ΜΑΘΗΜΑΤΟΣ : Μάγια Σατρατζέµη

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

Εισαγωγή στον Προγραμματισμό

Μονοδιάστατοι Πίνακες

Τα αντικείμενα ή Χειριστήρια και οι βασικές ιδιότητες τους (properties)

Εκφράσεις. Τύποι, Σταθερές & Μεταβλητές. Ορισµός Μεταβλητών

Προγραμματισμός PASCAL

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

Transcript:

Κων/νου Στυλιάδη Χρήστου Ιωάννου Εφαρµογή Αποθήκης σε Pascal Φλώρινα, Φεβρουάριος 1995

Παρουσιάζεται µια ολοκληρωµένη εφαρµογή αποθήκης σε Pascal µε τη χρήση δυαδικών αρχείων και µενού. Διδάχθηκε στο ΙΕΚ Φλώρινας την περίοδο 1994 1995. Program App_Apothikh; { Απλή Εφαρµογή Αποθήκης ΙΕΚ Φλώρινας 20-2-1995 } Uses Const Type Crt; MaxRec = 100; { Μέγιστος αριθµός εγγραφών στο αρχείο } ΚHome = 79; { Kωδικοί πλήκτρων } KEnd = 71; KIns = 82; KDel = 83; KBack = 08; KUp = 72; ΚDown = 80; KLeft = 75; KRight = 77; KEsc = 27; KEnter = 13; KSpace = 32; Menu : Array[1..6] OF String[21] = (' Nέα Εγγραφή ', ' Aνεύρεση ', ' Μεταβολή ', ' Διαγραφή ', ' Λίστα ', ' Τέλος '); ApoRecord = Record { ορισµός της εγγραφής } Kwdikos : Integer; Perigrafh : String[25]; PFPA : Byte; PKerdos : Byte; Paragelia : Integer; { πεδία της εγγραφής } Safe_Stock : Integer; Ypoloipo : Integer; Xondrikh : LongInt; Lianikh : LongInt; { Record } { το αρχείο Apofile θα είναι ένας πίνακας µε ΜΑΧREC εγγραφές } ApoFile = Array[1..MAXREC] of ApoRecord; AFile : ApoFile; Apothikh : File OF ApoRecord; 2

{ ορισµός διαδικασιών } Procedure Edit( St : String; IsNum : Boolean; x,y,len : Byte; Up, Down, Finish : Boolean); Ch, Idx : Byte; Procedure SetDisplay; GotoXY(X, y); Write(' ' : Len); If IsNum Then GotoXY((X+Len)-Length(st),Y); Write(St); End Else GotoXY(x, Y); Write(St); { Else } { SetDisplay } Finish := False; Up := False; Down := False; Idx := Length(St); { IDX = µέγεθος της λέξης } TextAttr := 112; SetDisplay; Repeat ch := Ord(ReadKey); If KeyPressed Then { αν πατήθηκε ειδικό πλήκτρο, π.χ. βελάκι } Ch := Ord(ReadKey); Case Ch of KDel, KBack : If Ord(St[0])>0 Then { µειώνει το µεγεθος του string } Dec(St[0]); Εnd; { If } KUp : Up := True; KDown, KEnter : Down := True; { Case } End Else Case Ch of KBack : If Ord(St[0])>0 Then Dec(St[0]); { KBack } KEnter : Down := True; KEsc : Finish := True; 3

Else If Length(St) >= Len Then { αν υπερβούµε το µέγεθος του len } Write(#7); { τότε έχουµε ηχητική ενδειξη } End Else If IsNum Then { µόνο αριθµοί } If Chr(Ch) In ['0'..'9','.'] Then St := St + Chr(Ch); End Else { όλα τα γράµµατα και τα σύµβολα } St := St + Chr(Ch); { If-2 } { If-1 } { Case } { If-0 } SetDisplay; Until Finish or (Up=True) or (Down=True) or (Ch=KEnter); SetDisplay; Function Center(S : String; W : Byte) : Byte; Center := (W - Length(S)) Div 2; { η διαδικασία αυτή γράφει άµεσα έναν χαρακτήρα στη µνήµη οθόνης στη θέση Χ, Υ } Procedure SetScreenCh(x, y : Byte; Ch : Char); Position : Word; Position := ((y-1)*80 + x - 1) * 2; Mem[$B800 : Position] := Ord(Ch); { η διαδικασία αυτή τοποθετεί άµεσα έναν χαρακτήρα ιδιοτήτων (χρώµα) στη µνήµη οθόνης στη θέση Χ, Υ } Procedure SetScreenColor(x, y, Col : Byte); Position : Word; Position := ((y-1) * 80 + x - 1) * 2; Mem[$B800 : Position+1] := Col; 4

{ η διαδικασία αυτή υπολογίζει το foreground µαζί µε το background και τα κάνει ένα byte } Function CAttr(F, B : Byte) : Byte; CAttr := (F Shl 4) or B Procedure Frame(X, Y, X1, Y1, clr : Byte); Hor, Ver : Byte; For Hor := X TO X1 Do SetScreenCh(Hor, Y, '-'); SetScreenColor(Hor, y, Clr); SetScreenCh(Hor,Y1, '-'); SetScreenColor(Hor, y1, Clr); { For } For Ver := Y TO Y1 Do SetScreenCh(x,Ver,' '); SetScreenColor(x, Ver,Clr); SetScreenCh(x1,Ver,' '); SetScreenColor(x1, Ver,Clr); { For } SetScreenCh(x, y, '+'); SetScreenCh(x, y1, '+'); SetScreenCh(x1, y, '+'); SetScreenCh(x1, y1, '+'); Function ComputePoso(Poso : LongInt; Percent : LongInt) : LongInt; ComputePoso := Poso * Percent Div 100; Procedure Message(Msg : String); TextAttr := 168; { αντίστροφο χρώµα } GotoXY(1, 25); Write(Msg); { τυπώνει το µήνυµα MSG στην 25 η γραµµή } ClrEol; { κανονικό χρώµα } Repeat Until KeyPressed; GotoXY(1,25); ClrEol; { καθαρίζει την 25 η γραµµή } 5

Procedure PressKey; Message('Πάτα ένα πλήκτρο...'); Function Choice(Msg : String) : Boolean; Ch : Char; GotoXY(1,25); Write(Msg); Repeat Ch := Upcase(ReadKey); Until Ch IN ['N', 'n', 'Ν', 'ν', 'o', 'O', 'Ο', 'ο']; Choice := Ch IN ['N', 'n', 'Ν', 'ν']; { η διαδικασία αυτή βρίσκει εγγραφές } Function FindRec(Perigr : String; Arec : ApoRecord) : Boolean; Find : Boolean; Idx := 0; Find := False; Repeat Inc(Idx); With AFile[idx] Do { ψάχνουµε βάσει της περιγραφής ή µέρου αυτής } Ιf Perigr = Copy(Perigrafh, 1, Length(Perigr)) Then Find := True; { αν βρεθεί, τότε η find γίνεται true } ARec := AFile[Idx]; { διαβάζουµε την εγγραφή από το αρχείο } { If } { With } Until (Find=True) Or (Idx >= MaxRec); FindRec := Find; { η διαδικασία αυτή καταχωρεί εγγραφές στο αρχείο } Procedure AddRec( ARec : ApoRecord); AFile[Idx] := ARec; { καταχωρούµε την εγγραφή στη θέση ΙDX } 6

{ η διαδικασία αυτή τυπώνει τις επιγραφές των πεδίων } Procedure Forma(Header : String); TextAttr := 112; GotoXY(2,2);ClrEol; GotoXY(Center(Header, 80), 2); Write(Header); Frame(1, 1, 80, 03, 7); Frame(1, 1, 80, 09, 7); Frame(1, 1, 80, 22, 7); TextAttr := 15; GotoXY(02,4); Write('Kωδικός :'); GotoXY(02,5); Write('Περιγραφή :'); GotoXY(02,6); Write('Φ.Π.Α : %'); GotoXY(02,7); Write('Κέρδος : %'); GotoXY(42,4); Write('Υπόλοιπο Αποθήκης :'); GotoXY(42,5); Write('Στοκ Ασφαλείας :'); GotoXY(42,6); Write('Προς Παραγγελία :'); GotoXY(42,7); Write('Tιµή Αγοράς :'); GotoXY(42,8); Write('Tιµή Λιανικής :'); { η διαδικασία αυτή δηµιουργεί µια νέα εγγραφή } Procedure Eisagwgh( ApoRec : ApoRecord); Type FieldRec = Record x, y, Len : Byte; Num : Boolean; { Record } Const ΧY : Array[1..7] of FieldRec = ((X:13; Y:4; Len:5; Num :True),(X:13;Y:5; Len:20; Num:False), (X:13; Y:6; Len:4; Num :True),(X:13;Y:7; Len:4; Num :True), (X:61; Y:4; Len:6; Num :True),(X:61;Y:5; Len:6; Num :True), (X:61; Y:7; Len:8; Num :True)); St : String; Err : Integer; Kerdos, Ajia, FPA, Paragel : LongInt; IsUp, IsDown, Finish : Boolean; Count : Byte; 7

With ApoRec Do Count := 1; Repeat St := ''; Case Count of 1 : If Kwdikos > 0 Then Str(Kwdikos : 5, St); 2 : St := Perigrafh; 3 : If PFPA>0 Then Str(PFPA : 2, St); 4 : IF PKerdos > 0 Then Str(Pkerdos : 2, St); 5 : IF Ypoloipo > 0 Then Str(Ypoloipo : 6, St); 6 : IF Safe_Stock > 0 Then Str(Safe_Stock : 6, st); 7 : IF Xondrikh > 0 Then Str(Xondrikh : 8, St); { Case } With XY[Count] Do Edit(St, Num, X, Y, Len, IsUp, IsDown, Finish); Case Count of 1 : Val(St, Kwdikos, Err); 2 : Perigrafh := St; 3 : Val(St, PFPA, Err); 4 : Val(St, PKerdos, Err); 5 : Val(St, Ypoloipo, Err); 6 : Val(St, Safe_Stock, Err); 7 : Val(St, Xondrikh, Err); { Case } If IsUp Then Dec(Count); If IsDown Then Inc(Count); If Count < 1 Then Count := 7; If Count > 7 Then Count := 1; Idx := Kwdikos; Paragel := Ypoloipo - Safe_Stock; If Paragel < 0 Then TextAttr := 130; GotoXY(61,6); Write(Paragel : 7); Kerdos := ComputePoso(Xondrikh, PKerdos); Ajia := Xondrikh + Kerdos; FPA := ComputePoso(Ajia, PFPA); { συνάρτηση υπολογισµού µε ποσοστό } Lianikh := Ajia + Fpa; TextAttr := 12; GotoXY(61, 8); Write(Lianikh : 10); Until Finish; { With } 8

Procedure NewRecord; ARec: ApoRecord; ClrScr; { τυπώνουµε τη φόρµα εισαγωγής } Forma('Νέα Eγγραφή'); FillChar(ARec, SizeOF(ARec), 0); { εισάγουµε τα δεδοµένα της εγγραφής } Eisagwgh(Idx, ARec); If Choice('Να καταχωρηθεί η εγγραφή (Ν/Ο)') Then AddRec(Idx, ARec); { και τα καταχωρούµε σε µια θέση στο αρχείο } { απεικόνιση εγγραφής } Procedure DisplayFields(ARec : ApoRecord); { τυπώνει το περιεχόµενο της εγγραφής ΑREC } With ARec Do GotoXY(13, 4); Write(Kwdikos); GotoXY(13, 5); Write(Perigrafh); GotoXY(13, 6); Write(PFPA : 2); GotoXY(13, 7); Write(PKerdos : 2); GotoXY(61, 4); Write(Ypoloipo); GotoXY(61, 5); Write(Safe_Stock); GotoXY(61, 6); Write(Paragelia); GotoXY(61, 7); Write(Xondrikh : 8); GotoXY(61, 8); Write(Lianikh : 10); { With } 9

Procedure DisplayRec; ARec : ApoRecord; Perigr : String; ClrScr; GotoXY(1, 1); Write('Δώσε την περιγραφή..:'); ReadLN(Perigr); { αν δεν βρεθεί η εγγραφή } If Not FindRec(Perigr, Idx, ARec) Then Message('Δεν βρέθηκε η εγγραφή...') Else Forma('Προβολή εγγραφής'); DisplayFields(ARec); PressKey; { Else } { µεταβολή εγγραφής } Procedure Metabolh; ARec : ApoRecord; Perigr : String; ClrScr; GotoXY(1, 1); Write('Δώσε την περιγραφή..:'); ReadLN(Perigr); { αν δεν βρεθεί η εγγραφή } If Not FindRec(Perigr, Idx, ARec) Then Message('Δεν βρέθηκε η εγγραφή...') Else Forma('Μεταβολή εγγραφής'); DisplayFields(ARec); Eisagwgh(Idx, ARec); If Choice('Θέλεις να καταχωρήσεις τις αλλαγές (Ν/Ο)') Then AddRec(idx, ARec); { If-2 } PressKey; { Else } 10

{ διαγραφή εγγραφών } Procedure Diagrafh; ARec : ApoRecord; Perigr : String; A : Word; ClrScr; GotoXY(1, 1); Write('Δώσε την περιγραφή..:'); ReadLN(Perigr); If Not FindRec(Perigr,Idx,ARec) Then Message('Δεν βρέθηκε η εγγραφή...') Else Forma('Διαγραφή εγγραφής'); DisplayFields(ARec); If Choice('Θέλεις να διαγράψεις αυτή την εγγραφή (Ν/Ο)') Then FillChar(AFile[Idx], SizeOF(AFile[Idx]), 0); { If-2 } PressKey; { Else } { λίστα εγγραφών } Procedure List; Grammh : Byte; Procedure Header; { επικεφαλίδα της λίστας } TextAttr := 112; GotoXY(1, 1); Write('Κωδ Περιγραφή Υπόλοιπο Xoνδρική Αξία Yπολ'); ClrEOL; { Header } ClrScr; Header; Idx := 1; Grammh := 1; For Idx := 1 to MaxRec Do With AFile[Idx] Do If Perigrafh<>'' Then { αν η περιγραφή δεν είναι κενή, εδώ τυπώνονται τα πεδία κάθε εγγραφής } 11

GotoXY(1, 1+grammh); Write(Kwdikos : 3, ' ', Perigrafh, ' ' : 25- Length(Perigrafh), ', Ypoloipo : 10, ' ', Xondrikh : 10, ' ', Ypoloipo * Xondrikh : 10); Inc(Grammh); { µετρητής γραµµών } { If } { With } If Grammh>=23 Then { αν περάσουµε την 23 η γραµµή } Grammh := 1; { µηδενίζουµε ξανά τον µετρητή } PressKey; { Ιf } Εnd; { For } PressKey; { µενού εφαρµογής } Procedure DisplayMenu; X : Byte; Frame(24, 3, 41, 05, 7); Frame(24, 3, 41, 12, 7); TextAttr := 113; GotoXY(25, 4);Write(' Eπιλογές '); For x:= 1 to 6 do GotoXY(25, 5+x); Write(Menu[x]); { For } GotoXY(20, 25); Write(' Επιλογή µε βελάκια και [Ιnsert] '); 12

Procedure DoMenu; Select : Byte; Ch : Byte; Uesh : Byte; DisplayMenu; Uesh := 1; TextAttr := 112; GotoXY(25, 5+Uesh); Write(Menu[Uesh]); Repeat Select := 0; Ch := Ord(ReadKey); GotoXY(25, 5+Uesh); Write(Menu[Uesh]); If KeyPressed Then Ch := Ord(ReadKey); Case Ch of KUp : Dec(Uesh); KDown : Inc(Uesh); KIns : Select := Uesh; { Case } { If } If Ch=KEsc Then Select := 6; If Uesh > 6 Then Uesh := 1; If Uesh < 1 Then Uesh := 6; TextAttr := 112; GotoXY(25,5+Uesh); Write(Menu[Uesh]); Case Select of 1 : NewRecord; 2 : DisplayRec; 3 : Metabolh; 4 : Diagrafh; 5 : List; 6 : GotoXY(1, 25); ClrEol; If NOT Choice('Θέλεις να βγείς απο το πρόγραµµα (Ν/Ο)') Then Select := 0; GotoXY(1, 25); ClrEol; { 6 } { Case } If Select > 0 Then ClrScr; 13

DisplayMenu; TextAttr := 112; GotoXY(25, 5+Uesh); Write(Menu[Uesh]); {if} Until (Select = 6); { διαδικασίες αρχείων } Function Exist(FName : String): Boolean; F : File; {$i-} Assign(F, FName); Reset(F); If IOresult <> 0 Then { αν το αρχείο δεν υπάρχει, η ΙΟRESULT <> 0 } Exist := False Else Exist := True; { αν η ΙΟRESULT=0, το αρχείο υπάρχει } {$i+} Procedure ClearRec( ARec : ApoRecord); FillChar(ARec, SizeOF(ARec), 0); { µηδενίζει την εγγραφή } Procedure Openfile; ARec : ApoRecord; Assign(Apothikh, 'C:\TP\Apothik.dat'); ClearRec(ARec); If Not Exist('C:\TP\Apothik.dat') Then Rewrite(Apothikh); For Idx := 1 to MaxRec Do Seek(Apothikh, Idx); Write(Apothikh, ARec); { For } End Else Reset(Apothikh); 14

{ καταχωρεί τις εγγραφές στον δίσκο } Procedure WriteApothikh; For Idx := 1 to MaxRec Do Seek(Apothikh, Idx); Write(Apothikh, AFile[Idx]); { For } { διαβάζει τις εγγραφές από τον δίσκο } Procedure ReadApothikh; For Idx := 1 to MaxRec Do Seek(Apothikh, Idx); Read(Apothikh, AFile[Idx]); { For } { κυρίως πρόγραµµα } FillChar(AFile, SizeOF(AFile), 0); OpenFile; ReadApothikh; ClrScr; DoMenu; WriteApothikh; Close(Apothikh); End. 15