Πρόβληµα : Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά?

Σχετικά έγγραφα
Σημειώσεις για πρόοδο στο εργαστήριο

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

Προγραµµατισµός 1 Ταξινόµηση - Αναζήτηση

printf Οι κωδικοί (format codes) του printf για διάφορους τύπους δεδοµένων είναι:

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

EΒ ΟΜΑ Α 4 Η. οµές επανάληψης while και do while

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

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

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

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

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

ΕΡΓΑΣΙΑ ΕΞΑΜΗΝΟΥ - ΜΕΡΟΣ Γ'

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C

Κεφάλαιο : Επαναλήψεις (for, do-while)

που θα δώσει αποτέλεσµα 48, λόγω της αριστερής προσεταιριστικότητας των τελεστών / και *, ενώ η επιθυµητή αντικατάσταση θα ήταν η

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

Δομημένος Προγραμματισμός

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

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Αλγόριθµοι Ένωσης-Εύρεσης (Union-Find) Κεφάλαιο 1. Ε. Μαρκάκης Επικ. Καθηγητής

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

8. Συνθήκες ελέγχου, λογικοί τελεστές

ΣΕΤ ΑΣΚΗΣΕΩΝ 2. Προθεσµία: 15/11/09, 23:59

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

Δοµές Δεδοµένων. 16η Διάλεξη Κατακερµατισµός. Ε. Μαρκάκης

Χαρακτηριστικά αναδροµής

Επεξεργασία Αρχείων Κειµένου

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 3: Είσοδος και Έξοδος Δεδομένων

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Κεφάλαιο VΙ: Προσπέλαση Αρχείων. 5.1 Αρχεία δεδομένων.

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

2. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Α' μέρος: if)

Γλώσσα Προγραμματισμού C

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 10/11/12, 22:00

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Ασκήσεις & παραδείγματα για επανάληψη

Εργαστήριο 2: Πίνακες

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

Υπολογισμός - Εντολές Επανάληψης

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η βασική συνάρτηση προγράμματος main()

ΣΕΤ ΑΣΚΗΣΕΩΝ 1. Προθεσµία: 6/11/11, 22:00

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

ΑΣΚΗΣΗ 4: ΟΜΕΣ ΒΑΣΙΚΩΝ ΒΡΟΧΩΝ

Διάλεξη 18η: Διαχείρηση Αρχείων

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

Προγραμματισμό για ΗΜΥ

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

Προγραμματισμός Ι (HY120)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Δομές Ανακυκλώσεων. Εντολές ελέγχου - 1

ΑΣΚΗΣΗ 1. Structural Programming

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

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

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

Η γλώσσα προγραμματισμού C

Χωρική Βάση δεδοµένων Autocad

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ. p: i: 3 p: i: 5

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

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

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

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

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

Ασκήσεις 5ο Μάθημα - Λύσεις

ΠΡΟΓΡΜΜΑΤΑ ΣΕ C. Γράψτε σε γλώσσα προγραμματισμού C τη συνάρτηση:

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

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

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

Εισαγωγή στον δομημένο προγραμματισμό

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ I ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΠΡΟΓΡΑΜΜΑΤΑ ΕΡΓΑΣΤΗΡΙΟΥ

Βαθμός Σχόλια. lab6 PASS PASS. - Πολύ καλή δουλειά, αλλά προσπάθησε να κάνεις την άσκηση χρησιµοποιώντας συναρτήσεις από το string.

Ανάπτυξη και Σχεδίαση Λογισμικού

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Transcript:

Πρόβληµα : Γράψτε ένα πρόγραµµα το οποίο - διαβάζει από το πληκτρολόγιο µια σειρά από ακεραίους έως ο χρήστης να δηλώσει ότι δεν υπάρχουν άλλοι - υπολογίζει τη µεγαλύτερη τιµή - εκτυπώνει αυτή την τιµή στην οθόνη Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά? Ιδέα 1 (στο χαρτί) : - Παίρνουµε 2 κόλλες χαρτί. Στο πρώτο χαρτί θα γράψουµε όλους τους αριθµούς και στο δεύτερο τους υπολογισµούς µας και το αποτέλεσµα. - Ακούµε έναν ένα τους αριθµούς και τους σηµειώνουµε στο πρώτο χαρτί. - Όταν δεν υπάρχουν άλλοι αριθµοί, ξεκινάµε να βρούµε τον µεγαλύτερο: - Διαλέγουµε τον πρώτο και τον συγκρίνουµε το δεύτερο. Κρατάµε τον µεγαλύτερο από τους δύο και τον σηµειώνουµε στο δεύτερο χαρτί. Συγκρίνουµε τον αριθµό που γράψαµε στο δεύτερο χαρτί µε έναν-έναν από τους υπόλοιπους που είναι στο πρώτο χαρτί. Κάθε φορά που βρίσκουµε έναν µεγαλύτερο, τον γράφουµε στο δεύτερο χαρτί, σβήνοντας ότι είχαµε γράψει πριν. - Όταν έχουµε τσεκάρει όλους τους αριθµούς που ήταν στο πρώτο χαρτί, σταµατάµε και ανακοινώνουµε ότι το αποτέλεσµα είναι ο αριθµός που βρίσκεται στο δεύτερο χαρτί

Ιδέα 1 (από το χαρτί προς τον υπολογιστή) : - Παίρνουµε 2 κόλλες χαρτί. Στο πρώτο χαρτί θα γράψουµε όλους τους αριθµούς και στο δεύτερο τους υπολογισµούς µας και το αποτέλεσµα. τα χαρτιά που σηµειώνουµε αριθµούς είναι η ΜΝΗΜΗ του υπολογιστή µας. - Ακούµε έναν ένα τους αριθµούς και τους σηµειώνουµε στο πρώτο χαρτί. τους αριθµούς τους γράφει ο χρήστης στο πληκτρολόγιο - Όταν δεν υπάρχουν άλλοι αριθµοί, ξεκινάµε να βρούµε τον µεγαλύτερο: Το πρόγραµµα ρωτά το χρήστη αν τελείωσαν οι αριθµοί - Διαλέγουµε τον πρώτο και τον συγκρίνουµε το δεύτερο. Κρατάµε τον µεγαλύτερο από τους δύο και τον σηµειώνουµε στο δεύτερο χαρτί. Συγκρίνουµε τον αριθµό που γράψαµε στο δεύτερο χαρτί µε έναν-έναν από τους υπόλοιπους που είναι στο πρώτο χαρτί. Κάθε φορά που βρίσκουµε έναν µεγαλύτερο, τον γράφουµε στο δεύτερο χαρτί, σβήνοντας ότι είχαµε γράψει πριν. - Όταν έχουµε τσεκάρει όλους τους αριθµούς που ήταν στο πρώτο χαρτί, σταµατάµε και ανακοινώνουµε ότι το αποτέλεσµα είναι ο αριθµός που βρίσκεται στο δεύτερο χαρτί Ανακοινώνουµε το αποτέλεσµα παρουσιάζοντάς το στην οθόνη.

Ιδέα 1 (Προσθέτουµε λεπτοµέρειες σε κάθε βήµα) : - Ακούµε έναν ένα τους αριθµούς και τους σηµειώνουµε στο πρώτο χαρτί. τους αριθµούς τους γράφει ο χρήστης στο πληκτρολόγιο 1. Διαβάζουµε ένα αριθµό και τον σηµειώνουµε. 2. Ρωτάµε αν υπάρχει άλλος 3. Αν όχι, πάµε στο επόµενο βήµα, αλλιώς επαναλαµβάνουµε τα 1-2 - Διαλέγουµε τον πρώτο και τον συγκρίνουµε το δεύτερο. Κρατάµε τον µεγαλύτερο από τους δύο και τον σηµειώνουµε στο δεύτερο χαρτί. Συγκρίνουµε τον αριθµό που γράψαµε στο δεύτερο χαρτί µε έναν-έναν από τους υπόλοιπους που είναι στο πρώτο χαρτί. Κάθε φορά που βρίσκουµε έναν µεγαλύτερο, τον γράφουµε στο δεύτερο χαρτί, σβήνοντας ότι είχαµε γράψει πριν. 4. Μέγιστος = 1ος αριθµός 5. Σύγκριση µέγιστου µε τον επόµενο αριθµό στη σειρά 5α. Αν ο επόµενος αριθµός στη σειρά είναι µεγαλύτερος, σηµείωσε αυτόν ως µέγιστο. 6. Υπάρχει επόµενος αριθµός? 6α. Αν ναι, επαναλαµβάνουµε τα βήµατα 5-6. 6β. Αν όχι, προχωράµε στο επόµενο βήµα - Όταν έχουµε τσεκάρει όλους τους αριθµούς που ήταν στο πρώτο χαρτί, σταµατάµε και ανακοινώνουµε ότι το αποτέλεσµα είναι ο αριθµός που βρίσκεται στο δεύτερο χαρτί Ανακοινώνουµε το αποτέλεσµα παρουσιάζοντάς το στην οθόνη. 7. Εκτύπωση του µέγιστου αριθµού στην οθόνη

Start Ιδέα 1 (Αν θέλουµε, φτιάχνουµε ένα σχεδιάγραµµα (διάγραµµα ροής)) : Read number in list more? max = 1st number more numbers? get next number Print max End next number > max? max = next number

Πρόβληµα : - Μας δίνουν µια σειρά από ακεραίους (δεν ξέρουµε πόσους) µέχρι να µας πουν ότι δεν υπάρχουν άλλοι - υπολογίζουµε τη µέγιστη τιµή - τυπώνουµε τη µέγιστη τιµή που υπολογίσαµε Πώς θα λύναµε αυτό το πρόβληµα αν είχαµε µόνο χαρτί και µολύβι, και κάποιος µας έλεγε τους αριθµούς προφορικά? Ιδέα 2 (στο χαρτί): - Παίρνουµε µία κόλλα χαρτί στην οποία θα σηµειώνουµε τον ακέραιο που εξετάζουµε και το µέγιστο που έχουµε βρει σε κάθε βήµα. - Σηµειώνουµε στο χαρτί τον πρώτο ακέραιο. Προς το παρόν, αυτός είναι ο µέγιστος. - Ρωτάµε και σηµειώνουµε τον επόµενο αριθµό. Αν είναι µεγαλύτερος από το µέγιστο που έχουµε µέχρι τώρα, τότε σηµειώνουµε τον καινούργιο αριθµό ως µέγιστο. - Συνεχίζουµε µε τον ίδιο τρόπο µέχρι να τελειώσουν οι αριθµοί - Ανακοινώνουµε το µέγιστο που είχαµε σηµειώσει.

Ιδέα 2 (µε περισσότερες λεπτοµέρειες): - Σηµειώνουµε στο χαρτί τον πρώτο ακέραιο. Προς το παρόν, αυτός είναι ο µέγιστος 1. Διαβάζουµε έναν ακέραιο 2. Μέγιστος = ο ακέραιος που διαβάσαµε - Ρωτάµε και σηµειώνουµε τον επόµενο αριθµό. Αν είναι µεγαλύτερος από το µέγιστο που έχουµε µέχρι τώρα, τότε σηµειώνουµε τον καινούργιο αριθµό ως µέγιστο. - Συνεχίζουµε µε τον ίδιο τρόπο µέχρι να τελειώσουν οι αριθµοί 3. Υπάρχουν άλλοι ακέραιοι? 3α. Αν όχι, πηγαίνουµε στο βήµα 5 3β. Αν ναι, διαβάζουµε τον επόµενο αριθµό 4. Ο επόµενος αριθµός είναι µεγαλύτερος του µέγιστου που έχουµε ως τώρα? 4α. Αν ναι, σηµειώνουµε τον καινούργιο αριθµό ως µέγιστο. 4β. Επαναλαµβάνουµε τη διαδικασία από το βήµα 3 - Ανακοινώνουµε το µέγιστο που είχαµε σηµειώσει. 5. Εκτυπώνουµε το µέγιστο στην οθόνη

Ιδέα 2.5 (Παραλλαγή της ιδέας 2): Είπαµε πως οι ακέραιοι αριθµοί αποθηκεύονται σε 4 bytes. Αυτό σηµαίνει πως υπάρχει όριο στο πλήθος των ακεραίων που είναι δυνατό να αναπαραστήσουµε στον υπολογιστή µας. Στην αρχή του αλγορίθµου µας,, αντί να σηµειώσουµε ως µέγιστο τον πρώτο ακέραιο αριθµό που διαβάσαµε, µπορούµε να χρησιµοποιήσουµε τον µικρότερο δυνατό ακέραιο που µπορεί να αναπαρασταθεί στον υπολογιστή µας!

Start Ιδέα 2.5 (Αν θέλουµε, φτιάχνουµε ένα σχεδιάγραµµα (διάγραµµα ροής)) : max = smallest possible int Read number number > max? max = number more numbers? Print max End

/* Programma pou diabazei apo to pliktrologio mia seira akeraiwn, upologizei ton megalutero kai ton ektupwnei stin othoni. */ #include<stdio.h> #include<limits.h> int main (int argc, char *argv[]) { int max, num; char telos; max = INT_MIN; while (1) { printf("dwse enan akeraio: "); scanf("%d", &num); if (max < num) { max = num; } printf("telos? (y/n) "); scanf(" %c", &telos); if (telos == 'y') { break; } } printf("to maximum einai : %d\n", max); } return 0;