do i=1,e do j=1,e if ((i+j)/2.ne.int((i+j)/2)) then! ελέγχει αν το άθροισµα i+j είναι άρτια ή περιττά µε σύγκριση µε το! ακέραιο µέρος του αθροίσµατός

Σχετικά έγγραφα
Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

ΕΞΕΤΑΣΗ ΙΑΝΟΥΑΡΙΟΥ (28/1/2011)

ΕΠΑΝΑΛΗΠΤΙΚΗ ΕΞΕΤΑΣΗ (14/9/2012)

242 -ΕισαγωγήστουςΗ/Υ

Εντολές ελέγχου ροής if, for, while, do-while

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 8 : Πίνακες IΙ. Αλέξανδρος Τζάλλας

ΜΑΘΗΜΑ 2, Έλεγχος ροής προγράμματος ΒΑΣΙΚΗ ΣΥΝΤΑΞΗ:

Διαδικασιακός Προγραμματισμός

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Έστω ένας πίνακας με όνομα Α δέκα θέσεων : 1 η 2 η 3 η 4 η 5 η 6 η 7 η 8 η 9 η 10 η

242 -ΕισαγωγήστουςΗ/Υ

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Το πλήθος των δεικτών και οι µεγαλύτερες τιµές που µπορούν να πάρουν ορίζεται µε µία δηλωτική εντολή που λέγεται Dimension.

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

Πίνακες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά)

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

Κεφάλαιο Πέµπτο: Η Εξάσκηση

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση. Γιώργος Λαμπρινίδης

ΘΕΜΑ Α. Μονάδες 10 Α2.

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΠΙΝΑΚΕΣ. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Fortran και Αντικειμενοστραφής προγραμματισμός.

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

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ & ΑΛΓΟΡΙΘΜΟΙ. Πίνακες και βασικές επεξεργασίες αυτών

4. Επιλογή και Επανάληψη

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

Προγραµµατιστικές Τεχνικές

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

επιµέλεια Θοδωρής Πιερράτος

Πληροφορική 2. Αλγόριθμοι

Προγραμματιστικές Τεχνικές

Μορφοποίηση της εξόδου

Κεφάλαιο 5ο: Εντολές Επανάληψης

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

A. Να γράψετε τον αριθμό της κάθε μιας από τις παρακάτω προτάσεις και δίπλα. το γράμμα Σ, εάν είναι σωστή, ή το γράμμα Λ, εάν είναι λανθασμένη.

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Χαράλαµπος Σκόκος ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΕΞΕΤΑΣΕΙΣ ΧΕΙΜΕΡΙΝΟΥ ΕΞΑΜΗΝΟΥ Ερωτήσεις

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

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

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

Εισαγωγή στον Προγραμματισμό Python Μάθημα 1: Μεταβλητές, τελεστές, είσοδος/έξοδος προγράμματος, συνθήκη ελέγχου if Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

Χ=0 Ονομα1<> Κώστας Y>1000 Y<600 X+y >= d B^2-4*a*g <= 0

ΒΑΣΙΚΕΣ ΜΕΘΟΔΟΛΟΓΙΕΣ

Δείκτες & Πίνακες Δείκτες, Πίνακες

1. Η χειρότερη περίπτωση είναι όταν γίνου 10 επαναλήψεις, δηλαδή για n = 0.

ΕΝΙΑΙΟ ΛΥΚΕΙΟ ΚΑΛΑΜΠΑΚΑΣ ΣΧΟΛ. ΕΤΟΣ

Δομές ελέγχου & επανάληψης

8 FORTRAN 77/90/95/2003

Κεφάλαιο 4ο: Εντολές επιλογής

πινάκων Σύγχρονα Προγραματιστικά Περιβάλλοντα ΠΕΡΙΕΧΟΜΕΝΑ

Γλώσσα Προγραμματισμού C. Προγραμματισμός HY: Γλώσσα Προγραμματισμού C. Γρήγορος Πίνακας Αναφοράς Σύνταξης. Εισήγηση #4. Επαναληπτικές δομές:

for for for for( . */

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Εργαστηριακή Άσκηση 1

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

Υπολογιστές Ι. Άδειες Χρήσης. Πολυδιάστατοι πίνακες. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2

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

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

Επαναληπτικές δοµές. µτ α.τ. Όχι. ! απαγορεύεται µέσα σε µία ΓΙΑ να µεταβάλλουµε τον µετρητή! διότι δεν θα ξέρουµε µετά πόσες επαναλήψεις θα γίνουν

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

Σημειώσεις για πρόοδο στο εργαστήριο

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Εισαγωγή στον Προγραμματισμό Python Μάθημα 3: πίνακες και βρόγχος επανάληψης for (για) Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ.

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΚΑΙ ΕΦΑΡΜΟΣΜΕΝΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΦΥΣ 145: Υπολογιστικές Μέθοδοι στη Φυσική Εαρινό Εξάµηνο 2019

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

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

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

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

Εισαγωγή στην πληροφορική

Προτεινόμενα Θέματα ΑΕΠΠ

φροντιστήρια Θέματα Ανάπτυξης Εφαρμογών σε Προγραμματιστικό Περιβάλλον Γ λυκείου Προσανατολισμός Σπουδών Οικονομίας και Πληροφορικής

Ταξινόμηση. Ταξινόμηση ευθείας ανταλλαγής (Φυσαλίδα) 1) Να ταξινομηθεί ο πίνακας Α[Ν] σε αύξουσα σειρά με τη μέθοδο της φυσαλίδας.

Το Βοήθηµα της Εξάσκησης

Βρόχοι. Εντολή επανάληψης. Το άθροισμα των αριθμών 1 5 υπολογίζεται με την εντολή. Πρόβλημα. Πώς θα υπολογίσουμε το άθροισμα των ακέραιων ;

Διάγραμμα Ροής (Flow Chart )

5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

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

Κεφάλαιο : Επαναλήψεις (oι βρόχος While) ( ιάλεξη 9) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Μονοδιάστατοι πίνακες (συνέχεια)

Transcript:

Ασκήσεις Επανάληψης Οι πιο κάτω ασκήσεις παρατίθενται µαζί µε σχολιασµό και τη λύση τους. Ορισµένες είναι αυτοσχέδιες ενώ άλλες είναι ασκήσεις παρµένες από τις σηµειώσεις Εργαστηρίου του κ. Οικονόµου. Η πρώτη άσκηση είναι πλήρως λυµένη ενώ από στις υπόλοιπες µπορεί να απουσιάζει η τυχόν ανάγνωση πίνακα από το πληκτρολόγιο (αφού είναι ίδιος κώδικας για όλες τις ασκήσεις). Με! επισηµαίνονται σχόλια µέσα στον κώδικα της άσκησης. Ο τρόπος αυτός σχολιασµού είναι ΜΟΝΟ για Fortran 90 ενώ στη Fortran 77 γίνεται µε c στην πρώτη στήλη µόνο. Άσκηση 1 Να γραφεί πρόγραµµα το οποίο αφού διαβάσει τα στοιχεία και τις διαστάσεις (τις οποίες και θα ελέγξει) δύο (2) πραγµατικών πινάκων δύο (2) διαστάσεων από το πληκτρολόγιο a(.,.) και b(.,.), να δηµιουργεί έναν πίνακα µε ίδιες διαστάσεις c(.,.) µε στοιχεία τα µέγιστα ή ίσα µεταξύ των στοιχείων των a(.,.) και b(.,.) στα αντίστοιχα µονά αθροίσµατα των συντεταγµένων θέσης του καθενός και τα ελάχιστα ή ίσα µεταξύ των στοιχείων των a(.,.) και b(.,.) στα αντίστοιχα ζυγά αθροίσµατα των συντεταγµένων θέσης του καθενός (από τα a(.,.) και b(.,.)). Ο πίνακας c να τυπώνεται σωστά ώστε να φαίνεται σαν πίνακας (να τυπώνεται και κατά γραµµές και κατά στήλες). Μετά τον ορισµό και διαστασιοποίηση της άσκησης θα πρέπει να υπάρχουν µέσα σε βρόχο επανάληψης (do) οι κατάλληλες συνθήκες οι οποίες θα εξετάζουν αν οι δείκτες των πινάκων βρίσκονται σε µονά αθροίσµατα θέσεων ή ζυγά. Ανάλογα µε το if, υπολογίζει το µέγιστο ή το ελάχιστο, άρα υπάρχει if µέσα σε if. real a(100,100), b(100,100), c(100,100)! ιαστασιοποίηση 10 print *, 'dose diastasi pinakwn' read *, e! µια διάσταση για τετραγωνικού πίνακες, θα µπορούσαν να είναι δύο. if ((e.lt.0).or.(e.gt.100).or.(e.ne.int(e))) then print *, 'try again!' goto 10! Ανάγνωση πινάκων print *, 'diabasma pinaka a' do i=1,e do j=1,e print *, 'diabasma a',i,j read *, a(i,j) print *, 'diabasma pinaka b' do i=1,e do j=1,e print *, 'diabasma b',i,j read *, b(i,j)! κύριο σώµα άσκησης ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 1

do i=1,e do j=1,e if ((i+j)/2.ne.int((i+j)/2)) then! ελέγχει αν το άθροισµα i+j είναι άρτια ή περιττά µε σύγκριση µε το! ακέραιο µέρος του αθροίσµατός τους /2. if (a(i,j).ge.b(i,j)) then! ελέγχει ποιο στοιχείο ανάµεσα στους δύο πίνακες είναι µεγαλύτερο c(i,j)=a(i,j) else c(i,j)=b(i,j) elseif (a(i,j).le.b(i,j)) then c(i,j)=a(i,j) else c(i,j)=b(i,j)! εκτύπωση πινάκων κατά γραµµές do i=1,e print *, (c(i,j), j=1,e)! εκτύπωση πινάκων κατά στήλες do j=1,e print *, (c(i,j), i=1,e) stop Άσκηση 2 Να γραφεί πρόγραµµα στη γλώσσα προγραµµατισµού Fortran το οποίο να διαβάζει από το πληκτρολόγιο τα στοιχεία ενός τετραγωνικού πίνακα πραγµατικών αριθµών (3, 3). Κατόπιν, να υπολογίζει το άθροισµα των στοιχείων για κάθε γραµµή, στήλη και την κεντρική διαγώνιο και να τα τυπώνει στο τέλος κάθε γραµµής, στο τέλος κάθε στήλης και αµέσως µετά το τέλος της κεντρικής διαγωνίου. Μια σχετικά δύσκολη άσκηση όπου χρησιµοποιούνται βοηθητικοί πίνακες ενώ ο πίνακας Β δηµιουργείται στο τέλος. real a(100,100), gr(100), st(100), b(100,100) print *,'dwse stoixeio',i,j read *, a(i,j) print *,'upologismos mo grammwn' gr(i)=gr(i)+a(i,j) if (i.eq.j) then ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 2

sd=sd+a(i,j) print *,'upologismos mo stilwn' st(j)=st(j)+a(i,j)! ηµιουργία του πίνακα Β do i=1,4 do j=1,4 b(i,j)=a(i,j) if (j.eq.4) then m=m+1 b(i,j)=gr(m) if (i.eq.4) then n=n+1 b(i,j)=st(n) if ((i.eq.4).and.(j.eq.4))then b(i,j)=sd c ypologismos megistou stoixeiou amax = a(1,1) if (amax.lt.a(i,j)) then amax = a(i,j) print *, 'megisto einai ',amax do i=1,4 print *,(b(i,j),j=1,4) stop ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 3

Άσκηση 3 Να γραφεί πρόγραµµα το οποίο να ορίζει πίνακα χαρακτήρων α(3) µήκους 10 και να διαβάζει τα στοιχεία του από το πληκτρολόγιο. Στη συνέχεια να µετατραπούν και να αποθηκευτούν οι κωδικοί ASCII του κάθε χαρακτήρα του κάθε στοιχείου σε πίνακα Β(3,10) Η άσκηση αυτή χρησιµοποιεί τον τελεστή επιλογής αλφαριθµητικού µέσα σε αλφαριθµητικό (substring σε string) π.χ. να επιλέξει το sta µέσα στο Kosta. Ο τελεστής αυτός είναι ιδιαίτερα χρήσιµος για να εντοπίσουµε (µε if) αν υπάρχει ένα string σε ένα πίνακα ακόµα και αν δεν εµφανίζεται µε τη µορφή αυτή ακριβώς. Στη συγκεκριµένη περίπτωση επιλέγεται ο κάθε χαρακτήρας ξεχωριστά. character a(3) *10, buffer *10, c*1 integer b(3,10)! Γέµισµα πίνακα print *,"dose keimeno gia 8esh",i read *, a(i)! κυρίως σώµα άσκησης! για το κάθε στοιχείο του πίνακα do j=1,10! για το κάθε χαρακτήρα του κάθε στοιχείου του πίνακα buffer = a(i)! µεταφέρουµε ένα στοιχείο του πίνακα σε βοηθητική µεταβλητή c = buffer(j:j)! παίρνουµε τον κάθε χαρακτήρα χωριστά, γίνεται επίσης και έτσι: c=a(i)(j:j) b(i,j) = iachar(c) print *, (b(i,j),j=1,10) Άσκηση 4 Να γραφεί πρόγραµµα το οποίο να ορίζει και να διαβάζει έναν πίνακα λογικών τιµών α(3,3) από το πληκτρολόγιο και στη συνέχεια να τυπώνει τον αριθµό των true στοιχείων της κυρίας διαγωνίου ενώ να τυπώνει στην οθόνη το αποτέλεσµα της λογικής πράξης a(1,1).and. a(2,2).and. a(3,3) Το µόνο που αξίζει να προσεχθεί είναι ότι ο έλεγχος µε if σε λογικές τιµές γίνεται µόνο µε την πιο κάτω σύνταξη του if η οποία ελέγχει αν είναι αληθές ή όχι. Το αν είναι false µπορεί να ελεγχθεί ΜΟΝΟ έµµεσα. logical a(3,3),x x=.false. print *, 'dose stoixeio a(',i,',',j,')' read *, a(i,j) ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 4

do i =1,3 if (a(i,i))then s=s+1 x=a(1,1).and.a(2,2).and.a(3,3) print *,'Synolo true stoixeiwn:',s print *,'Apotelesma logikou KAI diagwniou:',x Άσκηση 5 Να γραφεί πρόγραµµα το οποίο θα ορίζει ένα (1) πίνακα Α(3, 3) πραγµατικών και ένα (1) Β(3, 3) λογικών αριθµών και θα διαβάζει τα στοιχεία του πίνακα Α(3, 3) από το πληκτρολόγιο. Στη συνέχεια να αντιστοιχεί στον πίνακα Β(3, 3) αληθή (true) ή ψευδή (false) τιµή ανάλογα µε το αν το αντίστοιχο στοιχείο του πίνακα Α(i, j) είναι µεγαλύτερο ή όχι από το τουλάχιστον 50% του γινοµένου των δεικτών i, j της αντίστοιχης θέσης. Τέλος, να εκτυπώνει τους δύο πίνακες Η άσκηση αυτή, από παλαιότερο θέµα εξετάσεων είναι ιδιαίτερα απλή καθώς χρησιµοποιεί µόνο µια συνθήκη if µέσα σε βρόγχο για να δώσει, ανάλογα µε το αποτέλεσµα της if τιµές σε έναν πίνακα B. Στο πνεύµα αυτής της άσκησης είναι πολλά θέµατα εξετάσεων. real a(3,3) logical b(3,3)! diabasma pinaka print *, "Dose stoixeio: a(",i,j,")" read *, a(i,j)! kuriws askhsh, elegxoyme ena-ena ta stoixeia if (a(i,j)>0.5*i*j) then!elegxos sun8hkhs an to stoixeio einai > tou 50% tou ginomenou deiktwn i,j) b(i,j)=.true.!de xreiazomaste else gia.false. ka8ws e3 orismou oles oi times tou b einai false prin paroun kapoia timi!ektupwsh pinaka a print *, (a(i,j),j=1,3) print *, (" ",j=1,3)! proairetiko, na afhsei mia grammh kenh!ektupwsh pinaka b ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 5

print *, (b(i,j),j=1,3) stop Άσκηση 6 Να γραφεί πρόγραµµα το οποίο να διαβάζει έναν αριθµό (ακέραιο) από το πληκτρολόγιο και να βγάζει σχετικό µήνυµα αν ο αριθµός είναι πρώτος ή όχι. Στη συνέχει να ρωτάει το χρήση αν θέλει να δώσει άλλο αριθµό και ανάλογα µε την απάντηση να επαναλαµβάνεται αλλιώς να τερµατίζει Οι πρώτοι αριθµοί έχουν πολλές εφαρµογές, µεταξύ άλλων στην κρυπτογραφία. Πρώτος αριθµός είναι αυτός ο οποίος διαιρείται µόνο µε τον εαυτό του και τη µονάδα. Άρα αν έχουµε έναν αριθµό x και εξετάσουµε όλους τους αριθµούς από το 2 µέχρι το x-1 αν διαιρούν το x και δε βρεθεί κανένας, τότε ο x είναι πρώτος. Στην αρχή αυτή βασίζεται η λύση της άσκησης. Η λύση αυτή, υπάρχουν και άλλες, µπορεί να εφαρµοστεί ακόµα και αν εξετάζουµε πίνακες µε αριθµούς. integer a character(1) c 5 print *, "Dose stoixeio: a" read *, a do i=2,a-1!elegxoume an diaireitai me kapoion ari8mo ektos apo to 1 kai ton eauto tou if (mod(a,i)==0) then!an bre8ei estw kai enas akeraios diaireths,den einai prwtos opote bgainei apo ton brogxo print *, "den einai prwtos" goto 10 print *, "einai prwtos"!de xreiazomaste else, einai opws h askhsh sugkrishs 2 pinakwn 10 print *, "Na to 3anakanoume? Pata Y gia epanalipsi,otidipote allo gia termatismo" read *, c if (c=="y".or.c=="y") then!na labei upopsi tou oti mporei na einai mikro 'h kefalaio goto 5!phgaine sthn arxh!de xreiazetai else, 8a termatisei an den ikanopoih8ei to if,phgainontas amesws sto stop stop ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 6

Άσκηση 7 Να γραφεί πρόγραµµα το οποίο να διαβάζει τα στοιχεία ενός πίνακα χαρακτήρων Α από το πληκτρολόγιο και στη συνέχεια να τους ταξινοµεί σε αλφαβητική σειρά µε βάση το πρώτο γράµµα του κάθε στοιχείου. Η ταξινόµηση στοιχείων ενός πίνακα ορίζεται ως εξής : οθέντων των στοιχείων ενός πίνακα α(1),,α(2).α(ν) η ταξινόµηση συνίσταται στη µετάθεση της θέσης των στοιχείων ώστε τα στοιχεία να πάνε από το µικρότερο προς το µεγαλύτερο (αύξουσα σειρά) ή ανάποδα (φθίνουσα σειρά). Υπάρχουν πολλοί αλγόριθµοι ταξινόµησης αλλά εµείς θα ασχοληθούµε µόνο µε τη µέθοδο της ευθείας ανταλλαγής ή µέθοδο της φυσαλίδας (bubble sort). Για να κατανοήσουµε τη λειτουργία του αλγορίθµου πρέπει να φανταστούµε τα στοιχεία του πίνακα που θέλουµε να ταξινοµήσουµε σαν φυσαλίδες η µία τοποθετηµένη κάτω από την άλλη. Η τιµή που αντιστοιχεί σε κάθε στοιχείο του πίνακα ας φανταστούµε ότι συµβολίζει το βάρος κάθε φυσαλίδας. Προφανώς οι πιο ελαφρές φυσαλίδες έχουν την τάση να ανεβαίνουν γρηγορότερα προς τα πάνω. Η µέθοδος ταξινόµησης στην πράξη γίνεται ως εξής : Ξεκινώντας από την τελευταία φυσαλίδα (στοιχείο) κάνουµε διαδοχικές συγκρίσεις των στοιχείων ανά δύο. Αν η κατώτερη τιµή είναι µικρότερη από την από πάνω της τότε γίνεται αντιµετάθεση των στοιχείων αυτών. Η διαδικασία αυτή συνεχίζεται µέχρι να φτάσουµε στο πρώτο στοιχείο. Εκτελώντας για πρώτη φορά αυτή τη διαδικασία (1ο πέρασµα) έχουµε σίγουρα τοποθετήσει στην πρώτη θέση το στοιχείο µε την µικρότερη τιµή. Στη συνέχεια επαναλαµβάνουµε τη διαδικασία. Αν θεωρήσουµε ότι έχουµε Ν στοιχεία πίνακα προς ταξινόµηση, είναι φανερό ότι στο δεύτερο πέρασµα Ν-2 συγκρίσεις στοιχείων (αφού ξέρω πως το µικρότερο ήδη είναι τοποθετηµένο στην πιο πάνω θέση). Η ίδια διαδικασία συνεχίζεται µέχρι να ταξινοµηθούν όλα τα στοιχεία του πίνακα (η διαδικασία θα επαναληφθεί Ν-1 φορές). PROGRAM BUBBLE_SORT CHARASTER (*10) A(100), TEMP! DIASTASIOPOISI PINAKA PRINT *, DOSE NEO ARITHMO POLEON 10 READ *, G IF ((G <= 0).OR.(G > 100).OR.(G /= int(g))) THEN PRINT *, DOSE NEO ARITHMO POLEON GOTO 10 ENDIF 100 STOP END! ARXIKOPOIHSH PINAKA DO I = 1, G PRINT *, DOSE TO ONOMA TIS POLIS, I READ *, A(I) ENDDO! EFARMOGH TOY ALGORITHMOY TAKSINOMISIS! ME BASI TO PROTO GRAMMA KATHE POLIS DO I = 2, G DO J = G, I, -1 IF (A(J-1)(1:1) > A(J-1)(1:1)) THEN TEMP = A(J) A(J) = A(J-1) A(J-1) = TEMP ENDIF ENDDO ENDDO ρ. Γ. Π. Οικονόµου / Μ. Γεωργουδάκης / Γ. Κεραµίδας 7

Άσκηση 8 Να γραφεί πρόγραµµα το οποίο να διαβάζει ένα κείµενο µέχρι 100 χαρακτήρες καθώς και µια λέξη µέχρι 20 χαρακτήρες. Στη συνέχεια να αναζητά τη λέξη αυτή στο αρχικό κείµενο και αν βρεθεί, εµφανίζει τη θέση (σε πιο χαρακτήρα δηλαδή) τη βρήκε µε τη µορφή αριθµού. Ο αλγόριθµος για τη λύση αυτής της άσκησης έχει δύο στάδια: στο πρώτο πρέπει να γνωρίζουµε το ακριβές µέγεθος της λέξης που αναζητούµε ενώ στο δεύτερο στάδιο κάνουµε την αναζήτηση. Πρέπει να υπολογίσουµε το µέγεθος της προς αναζήτηση λέξης καθώς το µέγεθος 20 είναι ενδεικτικό και δείχνει µέγιστο δυνατό και όχι το πραγµατικό. Το πραγµατικό µέγεθος θα χρησιµοποιηθεί στο 2 ο βήµα. Στην απάντηση που θα δίνει το πρόγραµµά µας θα περιέχει τη θέση (π.χ. 78) στην οποία θα απαντάται ο πρώτος χαρακτήρας της αναζητούµενης λέξης. Με αντίστοιχο τρόπο δουλεύουν και οι αναζητήσεις σε εµπορικά λογισµικά όπως το Ms Word, Mozilla, κλπ.