Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Σχετικά έγγραφα
Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ασκήσεις Επανάληψης

5 ΕΙΣΑΓΩΓΗ ΣΤΗ ΘΕΩΡΙΑ ΑΛΓΟΡΙΘΜΩΝ

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

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Εκτέλεση της εντολής1 και στη συνέχεια εκτέλεση της ΕΝΟΤΗΤΑΣ και της εντολής2 όσο η ΣΥΝΘΗΚΗ είναι αληθής.

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

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

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

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

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

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

Υπολογισμός - Εντολές Ελέγχου

for for for for( . */

Δομημένος Προγραμματισμός (ΤΛ1006)

Εντολές Επανάληψης. int sum = 0, i=1; sum += i++ ; sum += i++ ; Η πράξη αυτή θα πρέπει να επαναληφθεί Ν φορές!

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #2

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

ΛΟΓΙΚΑ ΔΙΑΓΡΑΜΜΑΤΑ. Γ Λυκείου Κατεύθυνσης Mike Trimos

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

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 3 ο

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

C: Από τη Θεωρία στην Εφαρμογή

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Ψευδοκώδικας. November 7, 2011

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

ΕΠΛ 003: ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΑ ΣΥΣΤΗΜΑΤΑ

Δομημένος Προγραμματισμός (ΤΛ1006)

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

ΕΠΛ 001: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

Ασκή σεις στή δομή επανα λήψής

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Επαναληπτικές Διαδικασίες

Τα δεδομένα στη C++ χωρίζονται σε 3 κατηγορίες: τους αριθμούς (numbers), τους χαρακτήρες (characters) και τις συμβολοσειρές (strings).

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Θέμα Α Α3.1 ΤΕΛΟΣ 1ΗΣ ΑΠΟ 9 ΣΕΛΙΔΕΣ

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

Οι εντολές ελέγχου της ροής ενός προγράμματος.

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

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

Προγραμματισμός Ι (ΗΥ120)

9. Εντολές επανάληψηςκαι η εντολή

ΤΕΙ Θεσσαλίας, Τμήμα Μηχανικών Πληροφορικής ΤΕ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΥ ΕΡΓΑΣΤΗΡΙΟ 9. ΑΣΚΗΣΕΙΣ (με ενδεικτική λύση)

Παράδειγμα 2. Λύση & Επεξηγήσεις. Τέλος_επανάληψης Εμφάνισε "Ναι" Τέλος Α2

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ερωτήσεις Επανάληψης

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

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

ΕΠΛ 003: ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΤΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Προγραμματισμός

Εργαστήριο 2. Εαρινό Εξάμηνο Εντολές για είσοδο ακεραίων αριθμών από την κονσόλα:

Ορισµός. Εστω συναρτήσεις: f : N R και g : N R. η f(n) είναι fi( g(n) ) αν υπάρχουν σταθερές C 1, C 2 και n 0, τέτοιες ώστε:

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

Δομημένος Προγραμματισμός (ΤΛ1006)

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

1. Πότε χρησιμοποιούμε την δομή επανάληψης; Ποιες είναι οι διάφορες εντολές (μορφές) της;

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

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

Transcript:

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 3η σειρά ασκήσεων. Κοζάνη, 26 Οκτωβρίου 2007. Πρόγραμμα p3-1 (υλοποίηση ψευδοκώδικα σε πρόγραμμα) Εύρεση του μέγιστου, ελάχιστου και μέσου όρου μιας σειράς θετικών αριθμών που δίνει ο χρήστης. Όρισε και θέσε sum = min = max = n = 0 Ζήτησε θετικό αριθμό και μηδέν ή αρνητικό για να τερματίσεις το πρόγραμμα Διάβασε x Θέσε min = x Θέσε n = 1 Αν x είναι θετικό κάνε: Αν x < min θέσε min = x Aν x > max θέσε max = x Αύξησε το sum κατά x Αύξησε το n κατά 1 Ζήτησε άλλον έναν αριθμό Διάβασέ τον Συνέχισε Τύπωσε ελάχιστο, μέγιστο και μέσο όρο (sum / n) Πρόγραμμα p3-2 (υλοποίηση ψευδοκώδικα) Το ίδιο όπως πριν, με προκαθορισμένο αριθμό επαναλήψεων. Δεν υπάρχει περιορισμός ως προς το πρόσημο. Όρισε sum, min, max Ζήτησε αριθμό πλήθους όρων Διάβασε n Ζήτησε αριθμό Διάβασε x Θέσε min = max = sum = x Κάνε n-1 φορές: Ζήτησε αριθμό Διάβασε x Αν x < min θέσε min = x Aν x > max θέσε max = x Αύξησε το sum κατά x Τύπωσε ελάχιστο, μέγιστο και μέσο όρο (sum / n) Τρίτη σειρά ασκήσεων, σελίδα 1 από 7

Πρόγραμμα p3-3 (άσκηση εκτέλεσης) Παραλλαγή των προηγούμενων δύο, αλλά εδώ εισάγεται και η έννοια του πίνακα (array). Το πρόγραμμα αποθηκεύει τα δεδομένα σε ένα μονοδιάστατο πίνακα και μετά τα επεξεργάζεται. Δεν υπάρχει περιορισμός ως προς το πρόσημο. Μεταγλωττίστε και εκτελέστε: #define NDAT 10 int n; float data[ndat]; float sum, lo, hi; for(n = 0; n < NDAT; n++) data[n] = 0.0; for(n = 0; n < NDAT; n++) printf("δώσε μου το υπ' αριθ. %d στοιχείο: ", n+1); scanf("%f", &data[n]); lo = hi = data[0]; for(n = 0; n < NDAT; n++) sum += data[n]; lo = (lo > data[n])? data[n] : lo; hi = (hi < data[n])? data[n] : hi; printf("\nκυμαίνονται μεταξύ %f και %f και έχουν μέσο όρο %f\n", lo, hi, sum/n); Πρόγραμμα p3-4 (επίλυση προβλήματος) Διαβάστε τους στίχους από το τραγούδι 99 bottles on the wall. Η ομοιότητα κάθε στροφής με τις υπόλοιπες είναι τόσο μεγάλη ώστε κάποιος παρατήρησε ότι η εκτύπωση όλων των στίχων είναι άσκοπη αφού θα μπορούσε να γραφτεί ένα μικρό πρόγραμμα που να τους αναπαράγει αυτόματα! Από τότε πολλοί μπήκαν στον πειρασμό και έγραψαν τέτοια μικρά προγράμματα σε διάφορες γλώσσες. Μέχρι σήμερα έχουν γραφτεί προγράμματα σε 1127 διαφορετικές γλώσσες προγραμματισμού που αναπαράγουν τις στροφές αυτού του τραγουδιού. Όλα είναι δημοσιευμένα στον ιστότοπο http://www.99-bottles-of-beer.net. Ζητείται να γράψετε ένα τέτοιο μικρό πρόγραμμα σε C χρησιμοποιώντας μία δομή επανάληψης Τρίτη σειρά ασκήσεων, σελίδα 2 από 7

τύπου for. Πρόγραμμα p3-5 (επίλυση προβλήματος) Το ίδιο με το προηγούμενο χρησιμοποιώντας άλλη δομή επανάληψης αντί για for (while ή do while). Σχόλιο: αυτή η διαδικασία μπορεί να θεωρηθεί και ως μία μορφή συμπίεσης πληροφορίας. Βλέποντάς το από μια άλλη σκοπιά, μπορούμε επίσης να πούμε ότι το τραγούδι αυτό έχει χαμηλή αλγοριθμική πολυπλοκότητα (μέτρο της αλγοριθμικής πολυπλοκότητας μιας συμβολοσειράς είναι το μήκος του μικρότερου προγράμματος που αρκεί για να την αναπαράγει). Πρόγραμμα p3-6 (βελτίωση προγράμματος) Το παρακάτω πρόγραμμα είναι σωστό αλλά όχι και τόσο καλογραμμένο. Μπορείτε να το ξαναγράψετε καλύτερα; float x; printf("\nδώσε μου έναν πραγματικό αριθμό: "); if( x == 0 ) else if( x == 1 ) else if( x == 2 ) else printf("το αποτέλεσμα είναι %f \n", 1.0/(x*(x-1.0)*(x-2.0))); ΑΠΑΝΤΗΣΕΙΣ Πρόγραμμα p3-1 Τρίτη σειρά ασκήσεων, σελίδα 3 από 7

int n; float sum, min, max, x; sum = max = n = 0; /* το min θα πάρει τιμή πιο κάτω` δε χρειάζεται εδώ */ printf("δίνε μου θετικούς αριθμούς και 0 ή αρνητικό για τερματισμό."); printf("\nδώσε μου τον πρώτο αριθμό "); min = x; while (x > 0.0) if(x < min) min = x; if(x > max) max = x; sum += x; n++; printf("\nδώσε άλλον έναν αριθμό: "); printf("\nο ελάχιστος είναι %f και ο μέγιστος %f", min, max ); printf("\nο μέσος όρος είναι %f\n", sum/n); Πρόγραμμα p3-2 Στα σχόλια δίνονται εναλλακτικές μορφές της εντολής επανάληψης που θα έδιναν το ίδιο αποτέλεσμα. int i, n; float sum, min, max, x; /* printf("δώσε μου πλήθος όρων: "); scanf("%d", &n); printf("\nδώσε μου τον όρο υπ' αριθ. 1: "); min = max = sum = x; for (i = 0; i < n-1; i++) for (i = 1; i < n; i++) Τρίτη σειρά ασκήσεων, σελίδα 4 από 7

for (i = n; i > 1; i--) for (i = n-1; i > 0; i--) */ for (i = 2; i <= n; i++) printf("\nδώσε μου τον όρο υπ' αριθ. %d: ", i); if(x < min) min = x; if(x > max) max = x; sum += x; printf("\nο ελάχιστος είναι %f και ο μέγιστος %f", min, max ); printf("\nο μέσος όρος είναι %f\n", sum/n); Προσοχή! Η διαφορά των δύο προγραμμάτων p3-1 και p3-2, όσον αφορά τα δεδομένα εισόδου, δε σημαίνει ότι η εντολή while υστερεί από αυτή την άποψη έναντι της for. Αντίθετα, μία δομή for μπορεί να προσομοιωθεί και από μία while, όπως αποδεικνύει και η παρακάτω εναλλακτική λύση (με έντονο κόκκινο οι εντολές που υποκαθιστούν τη δομή for του προηγούμενου προγράμματος). Γενικά, μια δομή while είναι πιο γενική από μια for. Πρόγραμμα p3-2a int i, n; float sum, min, max, x; printf("δώσε μου πλήθος όρων: "); scanf("%d", &n); printf("\nδώσε μου τον όρο υπ' αριθ. 1: "); min = max = sum = x; i = 2; while ( i <= n ) printf("\nδώσε μου τον όρο υπ' αριθ. %d: ", i); if(x < min) min = x; if(x > max) max = x; sum += x; i++; Τρίτη σειρά ασκήσεων, σελίδα 5 από 7

printf("\nο ελάχιστος είναι %f και ο μέγιστος %f", min, max ); printf("\nο μέσος όρος είναι %f\n", sum/n); Πρόγραμμα p3-4 (επίλυση προβλήματος) Το αποτέλεσμα γράφεται στο αρχείο beers.txt. int i; FILE *myfile; myfile = fopen("beers.txt", "w"); for(i = 99; i > 1; i--) fprintf(myfile, "%d bottles of beer on the wall, %d bottles of beer.\n", i, i); fprintf(myfile, "Take one down and pass it around, %d bottles of beer on the wall.\n\n"); fprintf(myfile, "1 bottle of beer on the wall, 1 bottle of beer.\n"); fprintf(myfile, "Take one down and pass it around, no more bottles of beer on the wall.\n\n"); fprintf(myfile, "No more bottles of beer on the wall, no more bottles of beer.\n"); fprintf(myfile, "Go to the store and buy some more, 99 bottles of beer on the wall.\n"); fclose(myfile); Πρόγραμμα p3-5 (επίλυση προβλήματος) int i; FILE *myfile; Τρίτη σειρά ασκήσεων, σελίδα 6 από 7

myfile = fopen("beers.txt", "w"); i = 99; while( i > 1 ) fprintf(myfile, "%d bottles of beer on the wall, %d bottles of beer.\n", i, i); fprintf(myfile, "Take one down and pass it around, %d bottles of beer on the wall.\n\n"); i--; fprintf(myfile, "1 bottle of beer on the wall, 1 bottle of beer.\n"); fprintf(myfile, "Take one down and pass it around, no more bottles of beer on the wall.\n\n"); fprintf(myfile, "No more bottles of beer on the wall, no more bottles of beer.\n"); fprintf(myfile, "Go to the store and buy some more, 99 bottles of beer on the wall.\n"); fclose(myfile); Πρόγραμμα p3-6 (βελτίωση προγράμματος ) Το πρόγραμμα προφανώς υπολογίζει την παράσταση 1 x x 1 x 2 για δεδομένο x. Για να κάνει τη διαίρεση ελέγχει αν ο παρονομαστής είναι μηδέν βλέποντας αν το x παίρνει τιμή 0, 1 ή 2. Για να το φέρουμε σε μορφή πιο πυκνή αλλά και ευανάγνωστη συγχρόνως υπολογίζουμε πρώτα τον παρονομαστή x x 1 x 2 και αξιοποιούμε το γεγονός ότι οι παραστάσεις έχουν και λογική τιμή (ΑΛΗΘΗΣ αν είναι διάφορη του μηδενός και ΨΕΥΔΗΣ αν είναι ίση με μηδέν). float x, x1; printf("\nδώσε μου έναν πραγματικό αριθμό: "); x1 = x*(x-1.0)*(x-2.0); if( x1 ) printf("το αποτέλεσμα είναι %f \n", 1.0/x1); else Τρίτη σειρά ασκήσεων, σελίδα 7 από 7