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

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

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

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

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

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

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

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

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

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

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

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 7 Ο. Αριθμητικές πράξεις Τυχαίοι αριθμοί Εφαρμογές σε προβλήματα ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

Ενδεικτική περιγραφή μαθήματος

Προγραμματισμός I (Θ)

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

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

Αρχές Προγραμματισμού

Περιεχόμενα. Πρόλογος... 21

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

Εισαγωγή στις Συναρτήσεις

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόμενη Λύση

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

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

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

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

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

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

Συναρτήσεις και διαδικασίες

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

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

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

Παίρνοντας Αποφάσεις 1

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

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

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

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

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Εισαγωγή στον Προγραμματισμό (με. τη C)

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 4 Ο. Δομή επανάληψης Επανάληψη με συνθήκη Ατέρμονη επανάληψη Πίνακας ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

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

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

ΗΥ-150. Προγραμματισμός

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

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

Transcript:

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ασκήσεις Επανάληψης Άσκηση 1 Το παρακάτω πρόγραμμα περιέχει μια δομή επανάληψης τύπου for. Να ξαναγραφεί ώστε να έχει ακριβώς την ίδια λειτουργία, χρησιμοποιώντας δομή while int i, n=10, a=0, g=1; for(i=1; i<n+1; i++) a = a + i; g = g * i; printf("όρος: %d. Αριθμητική πρόοδος: %d. Γεωμετρική πρόοδος: %d\ n", i, a, g); Άσκηση 2 Το παρακάτω πρόγραμμα περιέχει ένα διπλό for. Να μετατραπεί ώστε να κάνει το ίδιο ακριβώς, με δομές τύπου while #define N 3 int i, j, n, A[N][N], B[N][N]=1,2,3,2,1,3,3,2,1; for(i=0;i<n;i++) for(j=0;j<n;j++) A[i][j]=-B[i][j]; Άσκηση 3 Η παρακάτω δομή περιέχει μία δομή επανάληψης for με τη δυνατότητα διαφυγής από αυτή με χρήση της εντολής goto. Μετατρέψτε το πρόγραμμα ώστε να κάνει το ίδιο με μια δομή επανάληψης τύπου while αλλά η διαφυγή να υλοποιείται με άλλο τρόπο αντί της goto. #include <math.h> #define N 10 int i,x; for(i=0; i<n; i++) printf("δώσε έναν ακέραιο: "); scanf("%d",&x);

if(x<0) printf("η ρίζα του %d είναι: %lf\n", x, sqrt((double) x)); finish: printf("τελειώσαμε!\n"); Άσκηση 4 Η παρακάτω δομή περιέχει μία δομή επανάληψης for με τη δυνατότητα διαφυγής από αυτή με χρήση της εντολής goto. Μετατρέψτε το πρόγραμμα ώστε να κάνει το ίδιο με μια δομή επανάληψης τύπου while αλλά η διαφυγή να υλοποιείται με άλλο τρόπο αντί της goto. #include <math.h> int x; for(; ; ) printf("δώσε έναν ακέραιο (αρνητικό για τέλος): "); scanf("%d",&x); if(x<0) printf("η ρίζα του %d είναι: %lf\n", x, sqrt((double) x)); finish: printf("τελειώσαμε!\n"); Άσκηση 5 Το παρακάτω πρόγραμμα περιέχει μία δομή switch. Να μετατραπεί έτσι ώστε να εκτελεί την ίδια λειτουργία με μία δομή if. Υπόδειξη: θα χρειαστείτε μία μεταβλητή τύπου char για να αποθηκεύσετε την απάντηση του χρήστη. FILE *fp=fopen("votes", "a"); printf("σας αρέσει το μάθημα του Δομημένου Προγραμματισμού;\n"); printf("nαι = Ν, Όχι = Ο, Άλλο = *\n"); switch(getchar( )) case 'N': case 'n': fprintf(fp, "Το πάω με χίλια!\n"); break; case 'O': case 'o': fprintf(fp, "Μου τη δίνει!\n"); break; default: fprintf(fp, "Δεν ξέρω/δεν απαντώ\n");

Άσκηση 6: Το παρακάτω πρόγραμμα περιέχει μία πολλαπλή δομή if. Μετατρέψτε το πρόγραμμα ώστε να επιτελεί την ίδια λειτουργία με μία δομή switch. Υπόδειξη: η fprintf που αντιστοιχεί στην περίπτωση βαθμών από 1 έως 5 μπορεί να συνενωθεί με καθεμία από τις fprintf των επιμέρους περιπτώσεων. Οι μη έγκυροι βαθμοί αντιστοιχούν στην περίπτωση default. #include <stdlib.h> int n; char answer[1]; FILE *fp=fopen("votes", "a"); printf("τι γνώμη έχετε για το μάθημα του Δομημένου Προγραμματισμού;\n"); printf("βαθμολογήστε από 1 ως 5. Δώστε άλλο αριθμό αν δεν έχετε γνώμη.\n"); scanf("%s", answer); n = atoi(answer); if(n<1 n > 5) fprintf(fp, "Δεν ξέρω/δεν απαντώ\n"); else fprintf(fp, "Βαθμός: %d. ", n); if(n==1) fprintf(fp, "@$^#%$^#$!\n"); else if(n==2) fprintf(fp, "Δε λέει...\n"); else if(n==3) fprintf(fp, "Χμ...\n"); else if(n==4) fprintf(fp, "Λέει!\n"); else if(n==5) fprintf(fp, "Άπαιχτο!\n"); Άσκηση 7 Το παρακάτω πρόγραμμα περιέχει δύο ένθετες δομές επανάληψης τύπου while και τη δυνατότητα διαφυγής και από τις δύο με χρήση της εντολής goto. Να μετατραπεί το πρόγραμμα ώστε να έχει την ίδια λειτουργία, με χρήση ένθετων δομών τύπου for και διαφυγή και από τις δύο με χρήση της εντολής break. Υπόδειξη: επειδή η εντολή break μας βγάζει μόνο από ένα for, θα χρειαστούν δύο break, ένα σε κάθε for, με το break στο εξωτερικό for να εκτελείται αν ισχύει κάποια κατάλληλη συνθήκη, π.χ. σε σχέση με την τιμή του εσωτερικού μετρητή j. #define N 3 int i, j, n, A[N][N], B[N][N]; FILE *fp=fopen("data","r"); i = 0;

while ( i<n ) j = 0; while ( j<n ) fscanf(fp,"%f", &n); if( (B[i][j] = n) == 0 ) A[i][j] = 1 / n; j++; i++; finish: printf((n?"τελειώσαμε!\n":"διαίρεση με το μηδέν!\n")); Άσκηση 8 Το παρακάτω πρόγραμμα υλοποιεί μια δομή επιλογής με τη βοήθεια του τριαδικού τελεστή?:. Ζητείται να αναδιατυπωθεί ώστε να εκτελεί την ίδια ακριβώς λειτουργία με τη βοήθεια της δομής επιλογής τύπου if. int main (int argc, char **argv) int a, b, c, d; printf("δώσε τρεις ακέραιους: \n"); scanf("%d", &a); scanf("%d", &b); scanf("%d", &c); a = a>b?a:b; a = a>c?a:c; printf("ο μέγιστος είναι ο %d\n", a); Άσκηση 9 Το παρακάτω πρόγραμμα έχει 5 λάθη. Μπορείτε να τα βρείτε; Υπόδειξη: αν το ίδιο λάθος εμφανίζεται πάνω από μία φορά, μετράει μόνο σαν ένα. int x, y printf("δώσε δύο ακέραιους αριθμούς: \n"); scanf("%f", x); scanf("%f", y); if(y!= 0) printf("το πηλίκο τους είναι %d\n", ((float) x) / ((float) y)); Άσκηση 10 Στο παρακάτω πρόγραμμα, οι παράμετροι εισόδου της συνάρτησης func περνάνε κατά διεύθυνση. Επειδή ο προγραμματιστής δε θέλει να αλλάξει την τιμή τους, ορίζει τοπικές μεταβλητές στις οποίες αντιγράφει τις τιμές τους και κάνει τις απαραίτητες ενέργειες με αυτές. Αυτός που έγραψε το πρόγραμμα δεν έχει πείρα από τη γλώσσα C και δεν κατάλαβε ότι δε χρειαζόταν να τα κάνει όλα

αυτά. Μπορείτε να του δείξετε πώς αλλιώς μπορεί να γράψει και να καλέσει τη func; Υπόδειξη 1: εκτός από πέρασμα κατά διεύθυνση, ποιον άλλο τρόπο έχουμε για να περνάμε τα ορίσματα των συναρτήσεων; Υπόδειξη 2: για να διατηρήσετε τις τιμές εισόδου που θα τυπώνονται από το μήνυμα της func στην οθόνη χωρίς να ορίσετε τοπικές μεταβλητές, σπάστε την printf σε δύο κλήσεις: η μία στην αρχή της συνάρτησης θα τυπώνει το πρώτο μισό του μηνύματος χωρίς \n και η άλλη, στο τέλος, θα τυπώνει το άλλο μισό, δηλαδή τη διαφορά των απόλυτων τιμών. void func (int *, int *); int x, y; printf("δώσε δύο ακέραιους αριθμούς: \n"); scanf("%d", &x); scanf("%d", &y); func(&x, &y); printf("%d-%d=%d\n",x, y, x-y); void func(int *x, int *y) int a, b; if(*x < 0) a = -*x; else a = *x; if(*y < 0) b = -*y; else b = *y; printf(" %d - %d =%d\n",*x, *y, a-b); return;