Μονοδιάστατοι Πίνακες «Όλοι οι άνθρωποι είναι ίσοι, δεν είναι η καταγωγή, αλλά η αρετή που τους κάνει τη διαφορά.» ΒΟΛΤΑΙΡΟΣ Κουλλάς Χρίστος oullas 2 Στόχοι Μαθήματος Οι μαθητές να μπορούν: να ονομάζουν τους διάφορους τύπους δεδομένων. να μπορούν να δηλώνουν πίνακες.
oullas 3 Τύποι Δεδομένων Απλοί Τύποι Δεδομένων Βασικοί Τύποι Δεδομένων Integer, Real, Char, Boolean Τύποι Δεδομένων Οριζόμενοι από το χρήστη Βαθμωτός (απαριθμητός) Τύπος Δεδομένων. Τύπος Υποπεριοχής Δομημένοι Τύποι Δεδομένων Πίνακες - Arrays Εγγραφές - Reords Δομημένοι Τύποι Δεδομένων Δεδομένα τα δεδομένα που επεξεργάζεται ένα πρόγραμμα συχνά είναι σύνθετα και αποτελούνται (δομούνται) από άλλα απλούστερα. Οι περιγραφή δεδομένων με δομημένο τρόπο βοηθά στη σαφήνεια του προγράμματος καθώς και τη διαχείρισή τους από το πρόγραμμα. Δομημένοι Τύποι Δεδομένων ονομάζονται οι σύνθετοι τύποι που μπορούμε να ορίσουμε (δομήσουμε) χρησιμοποιώντας απλούς τύπους δεδομένων. είναι μια συλλογή απλών τύπων δεδομένων. oullas 4
oullas 5 Εισαγωγή Πίνακας στη Pasal Να γραφεί πρόγραμμα σε Pasal το οποίο να διαβάζει τους βαθμούς 100 μαθητών και να τους τυπώνει κατ αντίστροφη σειρά. Λύση χρησιμοποιώντας μεταβλητές: να δηλώσουμε 100 διαφορετικές μεταβλητές ιδίου τύπου: var mar1, mar2,, mar100: integer; να διαβαστούν 100 φορές και να τυπωθούν πάλι 100 φορές σε αντίστροφη σειρά. Λύση χρησιμοποιώντας πίνακες: να ομαδοποιηθούν τα δεδομένα κάτω από ένα κοινό όνομα. να χρησιμοποιηθεί επαναληπτική δομή για το διάβασμα και την τύπωση των βαθμών. oullas 6 Πρόγραμμα Αντίστροφη Σειρά program antistrofh_seira1; var vath1, vath2, vath3, vath99, vath100: integer; begin readln(vath1); readln(vath2); readln(vath100); writeln(vath100); writeln(vath99); writeln(vath1); end. program antistrofh_seira2; {Με χρήση πίνακα } var deitis: integer; vath: array [1..100] of integer; begin for deitis := 1 to 100 do readln(vath[deitis]); for deitis := 100 downto 1 do writeln(vath[deiths]); end.
Πίνακας στη Pasal Πίνακας - Array είναι ένας δομημένος τύπος που μπορεί να αποθηκεύσει πολλά δεδομένα ιδίου τύπου. Αποτελείται από μια σειρά θέσεων μνήμης. Στοιχείο Element είναι η κάθε τιμή του πίνακα (ο πίνακας αποτελείται από ένα σταθερού μήκους σύνολο τιμών στοιχείων). Δείκτη - Index or Subsript χρησιμοποιείται για αναφορά σε ένα στοιχείο του πίνακα. Κάθε στοιχείο έχει το δικό του μοναδικό δείκτη. oullas 7 Μονοδιάστατοι Πίνακες Σύνταξη TYPE Όνομα Τύπου Πίνακα = ARRAY [Διάσταση] OF Τύπος του Πίνακα; Όνομα Τύπου Πίνακα είναι το όνομα του νέου τύπου δεδομένων (τύπου μονοδιάστατου πίνακα). Διάσταση δηλώνει τον αριθμό και τον τύπο των δεικτών ενός πίνακα και είναι πάντοτε βαθμωτού (διατεταγμένου) τύπου, ορισμένες από το χρήστη ή τιμές που ανήκουν στους βασικούς τύπους. Οι οριακές τιμές της διάστασης χωρίζονται με δύο τελείες (.. ). Τύπος του Πίνακα είναι ο τύπος των τιμών που θα αποθηκευτούν στα στοιχεία του πίνακα. Μπορεί να είναι βασικός τύπος δεδομένων ή τύπος δεδομένων που ορίστηκε από το χρήστη. oullas 8
Μονοδιάστατοι Type list = array [1..8] of integer; var list1: list; Πίνακες oullas 9 ( συνέχεια) var list1: array [1..8] of integer; Στο παραπάνω παράδειγμα τα 1 και 8 ορίζουν τα όρια του πίνακα. Υπάρχει δυνατότητα άμεσης πρόσβασης και επεξεργασίας κάθε στοιχείου του πίνακα. γιαναθέσουμετηντιμή12 στο 2 ο στοιχείο του πίνακα γράφουμε list1[2]:=12; για να θέσουμε την τιμή που είναι αποθηκευμένη σε κάποιο στοιχείο του πίνακα σε μια μεταβλητή (π.χ. numb), γράφουμε: numb:=list1[8]; Παραδείγματα Δηλώσεων Μονοδιάστατων Πινάκων type table = array [1..30] of real; var x: table; ΠΙΝΑΚΑΣ 30 ΘΕΣΕΩΝ ΜΕ ΤΙΜΕΣ ΠΡΑΓΜΑΤΙΚΕΣ var matrix: array [21..50] of real; ΠΙΝΑΚΑΣ ΙΔΙΟΣ ΜΕ ΤΟΝ ΠΡΟΗΓΟΥΜΕΝΟ, ΜΕ ΤΗ ΔΙΑΦΟΡΑ ΟΤΙ Ο ΔΕΙΚΤΗΣ ΠΑΙΡΝΕΙ ΤΙΜΕΣ ΣΤΟ ΔΙΑΣΤΗΜΑ 21..50 var LetterNum: array [ A.. Z ] of integer; ΠΙΝΑΚΑΣ 26 ΘΕΣΕΩΝ ΜΕ ΑΚΕΡΑΙΕΣ ΤΙΜΕΣ type subr=0..9; digits = array [1..20] of subr; var dig: digits; ΠΙΝΑΚΑΣ 20 ΘΕΣΕΩΝ ΜΕ ΑΚΕΡΑΙΕΣ ΤΙΜΕΣ ΣΤΟ ΔΙΑΣΤΗΜΑ 0.. 9. oullas 10
Παραδείγματα oullas 11 Πινάκων ( συνέχεια) type mars = (A,B,C,D); marnum = array[mars] of integer; var mar: marnum; ΠΙΝΑΚΑΣ 4 ΘΕΣΕΩΝ ΜΕ ΤΙΜΕΣ ΑΚΕΡΑΙΕΣ var temptable: array [-5..10] of boolean; ΠΙΝΑΚΑΣ 16 ΘΕΣΕΩΝ ΜΕ ΤΙΜΕΣ BOOLEAN type olor = (blue,red,yellow); flowersnum = array[olor] of integer; var flower: flowersnum; ΠΙΝΑΚΑΣ 3 ΘΕΣΕΩΝ ΜΕ ΤΙΜΕΣ ΑΚΕΡΑΙΕΣ oullas 12 Παράδειγμα: Επισκέπτες Μουσείου
oullas 13 Παράδειγμα: Επισκέπτες Μουσείου oullas 14 Ασκήσεις Να γραφεί πρόγραμμα σε Pasal το οποίο να διαβάζει 50 αριθμούς και στη συνέχεια να τυπώνει μόνο τους θετικούς. Να γραφεί πρόγραμμα που να βρίσκει το μικρότερο και μεγαλύτερο από τα στοιχεία ενός πίνακα ακεραίων.