Παράδειγματα Συναρτησεις Πανω-Κατω Σχεδιασμος

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Βασικές έννοιες αλγορίθμων
Advertisements

Προγραμματισμός PASCAL
Κεφάλαιο Τμηματικός προγραμματισμός
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΥΠΟΡΟΥΤΙΝΕΣ
Εντολές Διακλάδωσης ή Εντολές Υπό Συνθήκη
Ένα απλό πρόγραμμα σε C /* ********************************************* * This program prints out the sentence “This is a test.” * *********************************************
Εισαγωγή στο Προγραμματισμό
Τι είναι ο υπολογιστής; Τι είναι ο προγραμματισμός
31/1/2000epl-0321 Προγραμματισμός •Γιατι γραφουμε προγραμματα (προηγ. διαλεξη) •Πως γραφουμε προγραμματα –τι ειναι προγραμματισμος –μεθοδολογια –αφαιρετικοτητα.
ΜΑΘΗΜΑ 7ο Κυκλικές και Διπλά Συνδεδεμένες Λίστες,
ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ΤΜΗΜΑΤΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ
Παράδειγμα 2: Κινηματογράφοι Να γραφεί πρόγραμμα το οποίο:
ΘΕΩΡΙΑ ΔΙΑΛΕΞΗ 4 Αριθμητικές εκφράσεις και πράξεις Εντολές ανάθεσης
Αναδρομη και static Γραψετε την συναρτηση sequence_size που διαβαζει μια απροσδιοριστου μεγεθους σειρας και υπολογιζει και τυπωνει το μεγεθος της. int.
Εισαγωγή στον Προγραμματισμό, Αντώνιος Συμβώνης, ΣΕΜΦΕ, ΕΜΠ, Slide 1 Εβδομάδα 9: Διανύσματα και λίστες.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Τύποι πραγματικών αριθμών
Εντολες Επιλογης (Selection)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα.
Συναρτήσεις Κληση/Επιστροφη Παραμετροι
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
ΜΑΘ-3122/106 Γλώσσα Προγραμματισμού
ΑΛΓΟΡΙΘΜΟΙ.
Β΄ ΓΕΛ ΕισΑρχΕπ Η/Υ παρ – 2.2.5
ΜΕΤΑΒΛΗΤΕΣ - ΤΥΠΟΙ ΜΑΘΗΜΑ 3.
Παράδειγμα 1:Υπολογισμός αθροίσματος αριθμών με επαναληπτική εντολή : για...από...μέχρι(for ..to) Να βρεθεί και να εκτυπωθεί το άθροισμα των 100 ακεραίων.
ΕΠΑΝΑΛΗΨΗΕΠΑΝΑΛΗΨΗ ΠΡΟΓΡΑΜΜΑΤΑ. ΠΡΟΓΡΑΜΜΑ 1 ΕΞΗΓΗΣΤΕ ΤΙ ΕΞΟΔΟ ΠΑΡΑΓΕΙ ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ #include int main() { char ch; int i; float fl; printf("dose.
Η ΓΛΩΣΣΑ C ΜΑΘΗΜΑ 2.
Προγραμματισμός ΙΙ Διάλεξη #6: Απλές Δομές Ελέγχου Δρ. Νικ. Λιόλιος.
Ολυμπιάδα Πληροφορικής
Πάνω προς Κάτω Σχεδιασμός και Συναρτήσεις
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II.
Προγραμματισμός ΙΙ Διάλεξη #5: Εντολές Ανάθεσης Εντολές Συνθήκης Δρ. Νικ. Λιόλιος.
Επιλυση Προβληματος με Εκλογη Δεδομενων την μερα, μηνα και χρονο σε αριθμητικη μορφη, υπολογιστε και τυπωστε το ονομα του μηνα, την μερα του μηνα, τον.
Eντολες Επαναληψης - Βροχοι (repetition and loops)
Δυναμικη Δεσμευση Μνημης Συνδεδεμενες Λιστες (dynamic memory allocation, linked lists) Πως υλοποιουμαι προγραμματα που δεν γνωριζουμε πριν την εκτελεση.
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Αρχεία.
Eντολες Επαναληψης - Βροχοι (repetition and loops)
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Δομημένος Προγραμματισμός και Δομές.
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Κεφάλαιο 10 – Υποπρογράμματα
Προγραμματισμός Γιατι γραφουμε προγραμματα (προηγ. διαλεξη)
ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πολυμορφισμός – Αφηρημένες κλάσεις Interfaces (διεπαφές)
Μετατροπή Εκφράσεων σε C
ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Ξενοφών Ζαμπούλης ΜΑΘ3122/106 – Γλώσσα προγραμματισμού Επανάληψη.
Διαφάνειες παρουσίασης #2
Δομές Δεδομένων 1 Θέματα Απόδοσης. Δομές Δεδομένων 2 Οργανώνοντας τα Δεδομένα  Η επιλογή της δομής δεδομένων και του αλγορίθμου επηρεάζουν το χρόνο εκτέλεσης.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Συναρτήσεις.
2/28/00epl-1311 Παραδειγματα Aλγοριθμων Αριθμος λεξεων που διαβαστηκαν απο εισοδο Εκτυπωση περιφερειας τετραγωνων με * Υπολογισμος exp(x,n) = 1 + x/1!
ΗΥ 150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ -150 Προγραμματισμός Αρχεία.
ΕΠΛ 231 – Δομές Δεδομένων και Αλγόριθμοι 4-1 Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων.
ΗΥ150 – ΠρογραμματισμόςΞ. Ζαμπούλης ΗΥ-150 Προγραμματισμός Αρχεία.
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης 1 getchar() /* char_count.c A program to count characters of input. */ main() { int c ; int count = 0; while.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΗΥ150 – ΠρογραμματισμόςΚώστας Παναγιωτάκης ΗΥ-150 Προγραμματισμός Τύποι Μεταβλητών Τελεστές Βασική Είσοδος/Έξοδος.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 2: Συναρτήσεις Εισόδου ⁄ Εξόδου. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Προγραμματισμός ΗΥ Ενότητα 4: Επαναληπτικές δομές. Διδάσκων: Ηλίας Κ Σάββας, Αναπληρωτής Καθηγητής. Τμήμα Μηχανικών.
ΔΠΘ-ΤΜΗΜΑ ΜΠΔ: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ 1 Εισαγωγή στη γλώσσα Προγραμματισμού C ΠΙΝΑΚΕΣ (arrays)
Δομές Επανάληψης ΕΡΓΑΣΤΗΡΙΟ AΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΧΟΧΟΛΗΣ ΔΙΟΝΥΣΙΟΣ.
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη. Αθήνα, 2015.
Βρόχος Do … Loop Σκοπός Μαθήματος Χρήση Do… Loop για την εκτέλεση μιας ομάδας εντολών μέχρι να εκπληρωθεί μια συγκεκριμένη συνθήκη.
ΤΕΧΝΙΚΕΣ Αντικειμενοστραφουσ προγραμματισμου
Ενισχυτική διδασκαλία
ΕΝΤΟΛΕΣ ΕΠΙΛΟΓΗΣ Η εντολή if if ( παράσταση) εντολή επόμενη εντολή.
for (παράσταση_1; παράσταση_2; παράσταση_3)
Αρχεσ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ ΤΑξη Β΄
ΣΥΝΑΡΤΗΣΕΙΣ (Functions)
ΗΥ-150 Προγραμματισμός Αναδρομή (1/2).
Μεταγράφημα παρουσίασης:

Παράδειγματα Συναρτησεις Πανω-Κατω Σχεδιασμος Βασικες Τεχνικες Προγραμματισμου 21/2/2000 epl-032

Παράδειγμα με χρονο Γραψετε προγραμμα που παιρνει δυο δεδομενα: μια ωρα (σε μορφη hhmm) και τα λεπτα που πρεπει να προσθεθουν στην ωρα και υπολογιζει και τυπωνει την νεα ωρα (σε μορφη) hh:mm. 21/2/2000 epl-032

Τι πρεπει να γινει Κατανοηση με παραδειγματα μετα ιδωμεν... 21/2/2000 epl-032

Τι πρεπει να γινει /* get two input data - time and increment*/ /* determine new time */ /* display old time, increment and new time se morfi hh:mm*/ 21/2/2000 epl-032

Εισαγωγη Δεδομενων /* get two input data - time and increment*/ printf(“Enter time (hhmm) and number of minutes to increment: “); scanf(“%d%d”,&old_time, &increment); 21/2/2000 epl-032

Υπολογισμος /* determine new time */ /* diaxwrise wres kai lepta apo old_time*/ /* determine new time’s minutes */ /* determine new time’s hours */ 21/2/2000 epl-032

/* determine new time */ /* diaxwrise wres kai lepta apo old_time*/ /* old_time_minutes, old_time_hours*/ /* increment_minutes */ /* determine new time’s minutes */ /* new_time_minutes = old_time_minutes + increment_minutes*/ /* possible new_time_minutes > 59. need to compute extra_hours in new_time_minutes need to compute hourly_minutes in new_time_minutes */ /* determine new time’s hours */ 21/2/2000 epl-032

/* determine new time */ /* diaxwrise wres kai lepta apo old_time*/ /* old_time_minutes, old_time_hours, increment_minutes*/ /* determine new time’s minutes */ /* new_time_minutes = old_time_minutes + increment_minutes*/ /* possible new_time_minutes > 59. need to compute increment_hours in new_time_minutes need to compute hourly_minutes (0-59) in new_time_minutes */ /* determine new time’s hours */ /* new_time_hours = old_time_hours + increment_hours */ /* possible new_time_hours > 23 need to compute daily hours (0-23) in new_time_hours */ 21/2/2000 epl-032

/* determine new time */ /* diaxwrise wres kai lepta apo old_time*/ old_time_hours = extract_hours(old_time); old_time_minutes = extract_minutes(old_time); increment_minutes = increment; /* determine new time’s minutes */ /* new_time_minutes = old_time_minutes+increment_minutes */ new_time_minutes = old_time_minutes+increment_minutes; /* possible new_time_minutes > 59 -extract hours and determine hourly minutes*/ increment_hours = number_of_hours_in_minutes(new_time_minutes); new_time_minutes = number_of_hourly_minutes_in_minutes(new_time_minutes); /* determine new time’s hours */ /* new_time_hour = old_time_hour + increment_hours */ new_time_hour = old_time_hour + increment_hours; /* pssible new_time_hour > 23 --- so do correction to find the right time */ new_time_hour = hours_to_daily_hours(new_time_hour); 21/2/2000 epl-032

Διαχωρισμος int extract_hours(int time) { return time/100; } int extract_minutes(int time) { return time%100; } 21/2/2000 epl-032

Μετατροπη Αριθμου Λεπτων σε Ωρες και Λεπτα int number_of_hours_in_minutes(int minutes) { return time/60; } int number_of_hourly_minutes_in_minutes(int minutes) { return time%60; } 21/2/2000 epl-032

Μετατροπη Αριθμου Ωρων int hours_to_daily_hours(int hours) { return hours%24; } 21/2/2000 epl-032

Εξαγωγη Δεδομενων /* display old time, increment and new time se morfi hh:mm*/ printf(“Adding %d minutes to time %02d:%02d results in %02d:%02d\n“, increment_minutes, old_hours, old_minutes, new_time_hours, new_time_minutes); 21/2/2000 epl-032

Παράδειγμα Γραψετε ενα προγραμμα που υπολογιζει το αθροισμα μια απροσδιοριστου μεγεθους σειρα θετικων ακεραιων αριθμων. Η σειρα εισαγεται απο μοναδα εισοδου και τερματιζεται με την τιμη 0. π.χ. εισοδου/εξοδου: Enter series: 2 4 236 6 31 23 0 to athroisma tis seiras einai 302 21/2/2000 epl-032

Χρήσιμες Λειτουργικοτητες Tι πρεπει να γινει διαβασμα μια σειρας απροσδιοριστου μεγεθους που τερματιζεται με καθορισμενη τιμη υπολογισμος αθροισματος μιας σειρας Χρήσιμες Λειτουργικοτητες Πως διαβαζουμε μια σειρα απροσδιοριστου μεγεθους που τερματιζεται με καθορισμενη τιμη? Πως υπολογιζουμε το αθροισμα μιας σειρας? 21/2/2000 epl-032

Aνάγνωση σειρας απροσδιοριστου μεγεθους που τερματιζεται με καθορισμενη τιμη Απαιτει εντολή επαναληψης (βροχος) Τυπικη Δομη /*διαβασε το πρωτο στοιχειο*/ while(/*το στοιχειο δεν σημαδοτει τελος*/){ /* διαβασε επομενο στοιχειο */ } 21/2/2000 epl-032

Διαβασμα σειρας απροσδιοριστου μεγεθους που τερματιζεται με 0 int number; fscanf(“%d”,&number); /* diabase prwto stoixeio */ while(number != 0){ fscanf(“%d”,&number); /* διαβασε επομενο στοιχειο */ } 21/2/2000 epl-032

Διασπαση: εννοια του μερικου αποτελεσματος Οταν δεν εχουμε εντολη που λυει ενα προβλημα, διασπαζουμαι το προβλημα μεχρι να βρουμε ενα υποπροβλημα που υπαρχουν εντολες που το λυουν Π.χ. δεν υπαρχει τελεστης στην C που μπορει να προσθεσει ν τιμες μαζι (οπου το ν >2). Για ν τιμες χρεαζονται ? προσθεσεις 21/2/2000 epl-032

α3 α4 α1 α2 sum + sum + sum + sum 21/2/2000 epl-032

Αθροισμα σειρας int number; /* holds input number one at a time */ int sum; /* current sum */ fscanf(“%d”,&number); /* diabase prwto stoixeio */ sum = 0; /* arxikopoihsh */ while(number != 0){ sum = sum + number; * επεξεργασια*/ fscanf(“%d”,&number); /* διαβασε επομενο στοιχειο*/ } printf(“To athroisma της σειρας ειναι %d\n”,sum); /*ejodos*/ 21/2/2000 epl-032

Παράδειγμα Γραψετε ενα προγραμμα που αναγνωριζει τον πιο μεγαλο αριθμο σε μια απροσδιοριστου μεγεθους σειρα θετικων ακεραιων αριθμων. Η σειρα εισαγεται απο μοναδα εισοδου και τερματιζεται με την τιμη 0. π.χ. εισοδου/εξοδου: Enter series: 2 4 5236 6 31 978 5555 23 0 O megistos arithmos einai to 5555 21/2/2000 epl-032

Χρήσιμες Λειτουργικοτητες Πως διαβαζουμε μια σειρα απροσδιοριστου μεγεθους που τερματιζεται με καθορισμενη τιμη? Πως υπολογιζουμε τον μεγιστο αριθμο μιας σειρας? Διασπαση σε απλα υποπροβληματα: υπολογισε μεγιστο ανα δυο 21/2/2000 epl-032

int max(int a,int b) α3 α4 α1 α2 megistos max megistos max megistos 21/2/2000 epl-032

Μέγιστη τιμη int number; /* hold input number one at a time */ int maximum; /* hold current maximum */ fscanf(“%d”,&number); /* diabase prwto stoixeio */ maximum = 0; /* arxikopoihsh */ while(number != 0){ maximum = max(maximum,number); /* επεξεργασια*/ fscanf(“%d”,&number); /* διαβασε επομενο στοιχειο*/ } printf(“To megisto stoixeio της σειρας ειναι %d\n”, /*ejodos*/ maximum); 21/2/2000 epl-032

int max(int a,int b) Γραψετε μια διαδικασια που παιρνει δυο ακεραιους παραμετρους και η τιμη εξοδου της ειναι η μεγιστη τιμη μεταξυ των δυο παραμετρων. 21/2/2000 epl-032

* max - epistrefei tin megisti metaxy twn dyo parametrvn */ int /* * max - epistrefei tin megisti metaxy twn dyo parametrvn */ int max(int a, int b) { if (a>b) return a; return b; } 21/2/2000 epl-032

int max(int a, int b) { if (a>b) return a; return b; } int max(int a, int b) { if (a>b) return a; else return b; } int max(int a, int b) { int megistos; if (a>b) megistos = a; else megistos = b; return megistos; } int max(int a, int b) { int megistos; megistos = b; if (a>b) megistos = a; return megistos; }

getchar/putchar Συναρτησεις εισοδου/εξοδου χαρακτηρων Διεπαφη int getchar(), διαβασε τον επομενο χαρακτηρα απο την εισοδο, κινησε δρομεα διαβασματος στον επομενο χαρακτηρα (διαβαζει χαρακτηρες μιας γραμμης μετα το enter) void putchar(int), τυπωσε χαρακτηρα στην μοναδα εξοδου 21/2/2000 epl-032

Παράδειγμα Γραψετε ενα προγραμμα που μετραει τον αριθμο χαρακτηρων σε μια απροσδιοριστου μεγεθους σειρα χαρακτηρων. Η σειρα εισαγεται απο μοναδα εισοδου και τερματιζεται με την τιμη EOF. π.χ. εισοδου/εξοδου: Enter series: asdfre ^Z το μεγεθος της σειρας ειναι 7 21/2/2000 epl-032

Χρήσιμες Λειτουργικοτητες Tι πρεπει να γινει διαβασμα μια σειρας χαρακτηρων απροσδιοριστου μεγεθους υπολογισμος μεγεθους σειρας Χρήσιμες Λειτουργικοτητες Πως διαβαζουμε μια σειρα χαρακτηρων που τερματιζεται με καθορισμενη τιμη? Πως υπολογιζουμε το μεγεθος μιας σειρας? 21/2/2000 epl-032

Aνάγνωση σειρας απροσδιοριστου μεγεθους χαρακτηρων Oπως προηγουμενος: Απαιτει εντολή επαναληψης (βροχος) Ιδια δομη /*διαβασε το πρωτο στοιχειο*/ while(/*το στοιχειο δεν σημαδοτει τελος*/){ /* διαβασε επομενο στοιχειο */ } 21/2/2000 epl-032

Διαβασμα σειρας χαρακτηρων int c; c = getchar(); /* diabase prwto xaraktira */ while(c != EOF){ /* oxi telos tou file */ c = getchar(); /* διαβασε επομενο xaraktira */ } 21/2/2000 epl-032

echo σειρας χαρακτηρων int c; c = getchar(); /* diabase prwto xaraktira */ while(c != EOF){ putchar(c); /* typwse xaraktira */ c = getchar(); /* διαβασε επομενο xaraktira */ } 21/2/2000 epl-032

Μεγεθος Σειρας Χαρακτηρων int c; int size; size = 0; /* arxikopoihsh */ c = getchar(); /* diabase prwto xaraktira */ while(c != EOF){ size = size + 1; /* metra akomi ena xaraktira */ c = getchar(); /* διαβασε επομενο xaraktira */ } 21/2/2000 epl-032

Απλοποίηση??? int c; int size; size = 0; /* arxikopoihsh */ while((c = getchar() )!= EOF){/* diabase kai elegxe xaraktira */ size = size + 1; /* metra akomi ena xaraktira */ } 21/2/2000 epl-032

Απλοποίηση? int get_int() { int number; fscanf(“%d”,&number); return number; } number = get_int(); /* diabase prwto stoixeio */ while(number != 0){ number = get_int(); /* διαβασε επομενο στοιχειο */

Απλοποίηση int get_int() { int number; fscanf(“%d”,&number); return number; } while((number = get_int()) != 0){ 21/2/2000 epl-032

Μετρημα Συγκεκριμενου Γεγονοτος Ποσες φορες παρουσιαστηκε ο χαρακτηρας Α? Tι πρεπει να γινει διαβασμα μια σειρας χαρακτηρων απροσδιοριστου μεγεθους ελεγχος για χαρακτηρα Α αυξησε μετρητη καθε φορα 21/2/2000 epl-032

Μετρηση Γεγονοτος int c; int count; count = 0; /* arxikopoihsh */ while((c = getchar() )!= EOF){ /* diabase xaraktira */ if (c==‘A’) ++count; /* metra akomi ena xaraktira */ } 21/2/2000 epl-032

Μετρηση Συγκεκριμενου Γεγονοτος Ποσες γραμμες υπηρχουν στα δεδομενα? Tι πρεπει να γινει διαβασμα μια σειρας χαρακτηρων απροσδιοριστου μεγεθους ελεγχος για χαρακτηρα επομενη γραμμη?? αυξησε μετρητη καθε φορα 21/2/2000 epl-032

Μετρηση Γεγονοτος int c; int count; count = 0; /* arxikopoihsh */ while((c = getchar() )!= EOF){ /* diabase xaraktira */ if (c==‘\n’) /* elegxe gia epomeni grammi */ ++count; /* metra akomi ena xaraktira */ } 21/2/2000 epl-032