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

Σχετικά έγγραφα
Συναρτήσεις. Εισαγωγή

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

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

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

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

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

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

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

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

Διάλεξη 5: Δείκτες και Συναρτήσεις

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

Διάλεξη 11η: Δείκτες, μέρος 1

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

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

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

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

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

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

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

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών

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

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

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

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

Διάλεξη 9η: Πίνακες (arrays)

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 4-2

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

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

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

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

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

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

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

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

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

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

Κεφάλαιο 7: Υπορουτίνες

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

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

Τύποι Δεδομένων Είσοδος/Έξοδος

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

scanf() scanf() stdin scanf() printf() int float double %lf float

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

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

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

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

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

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

Παραδείγματα με συναρτήσεις στη C

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

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Transcript:

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις οι οποίες είναι ένα σύνολο εντολών που στοχεύουν στην εκτέλεση μιας συγκεκριμένης εργασίας. Η ακόλουθη εικόνα παρουσιάζει τη γενική δομή ενός προγράμματος σε C. Όπως κάθε γλώσσα προγραμματισμού έτσι και η C περιλαμβάνει ένα σύνολο δεσμευμένων λέξεων που απεικονίζονται στον ακόλουθο πίνακα: Επίσης, η C προσφέρει ένα σύνολο τύπων δεδομένων (data types) των μεταβλητών ως ακολούθως:

Για διευκόλυνση των προγραμματιστών, ο κάθε τύπος δεδομένων περιλαμβάνει κάποιες υποκατηγορίες που είναι οι εξής: Τα ακόλουθα παραδείγματα μας δείχνουν τον τρόπο δήλωσης και αρχικοποίησης μεταβλητών: Οι σταθερές αρχικοποιούνται ως εξής: Τέλος, οι ακόλουθοι πίνακες παρουσιάζουν τους τελεστές που μπορεί να χρησιμοποιηθούν στη γλώσσα C:

Τέλος, το ακόλουθο παράδειγμα μας παρουσιάζει ένα πρόγραμμα C το οποίο μας υπολογίζει το εμβαδόν ενός κύκλου. Code 1 #include <conio.h> float radius; double area; clrscr(); printf("\n Enter the radius of the circle : "); scanf("%f", &radius); area = 3.14 * radius * radius; printf(" \n Area = %.2lf", area); Σύντομη Ανασκόπηση των Εντολών της C

Code 2 int x=10; if (x>0) x++; printf("\n x = %d", x); Code 3 int a; printf("\n Enter the value of a : "); scanf("%d", &a); if(a%2==0) printf("\n %d is even", a); else printf("\n %d is odd", a);

Code 4 int num; printf("\n Enter any number : "); scanf("%d", &num); if(num==0) printf("\n The value is equal to zero"); else if(num>0) printf("\n The number is positive"); else printf("\n The number is negative"); Code 5

char ch; printf("\n Enter any character : "); scanf("%c", &ch); switch(ch) case A : case a : printf("\n %c is VOWEL", ch); case E : case e : printf("\n %c is VOWEL", ch); case I : case i : printf("\n %c is VOWEL", ch); case O : case o : printf("\n %c is VOWEL", ch); case U : case u : printf("\n %c is VOWEL", ch); default: printf("\n %c is not a vowel", ch); Code 6

int n, m, i, sum =0; printf("\n Enter the value of m : "); scanf("%d", &m); i=m; printf("\n Enter the value of n : "); scanf("%d", &n); while(i<=n) sum = sum + i; i = i + 1; printf("\n The sum of numbers from %d to %d = %d", m, n, sum); Code 7 int n, i = 0, sum =0; float avg = 0.0; printf("\n Enter the value of n : "); scanf("%d", &n); do sum = sum + i; i = i + 1; while(i<=n);

avg = (float)sum/n; printf("\n The sum of first %d numbers = %d",n, sum); printf("\n The average of first %d numbers = %.2f", n, avg); Code 8 #include <conio.h> int flag = 0, i, num; clrscr(); printf("\n Enter any number : "); scanf("%d", &num); for(i=2; i<num/2;i++) if(num%i == 0) flag =1; if(flag == 1) printf("\n %d is a composite number", num); else printf("\n %d is a prime number", num);

Code 9 int i = 0; while(i<=10) if (i==5) printf("\t %d", i); i = i + 1; Code 10 int i; for(i=0; i<= 10; i++) if (i==5) continue; printf("\t %d", i); Συναρτήσεις Μια συνάρτηση είναι ένα μαύρο κουτί το οποίο περιλαμβάνει εντολές που επιτελούν κάποιες ενέργειες. Η δήλωση μιας συνάρτησης στη C γίνεται ως εξής: Ενώ η κλήση της: Code 11 int evenodd(int); //FUNCTION DECLARATION

int num, flag; printf("\n Enter the number : "); scanf("%d", &num); flag = evenodd(num); //FUNCTION CALL if (flag == 1) printf("\n %d is EVEN", num); else printf("\n %d is ODD", num); int evenodd(int a) // FUNCTION HEADER // FUNCTION BODY if(a%2 == 0) return 1; else retun 0; Για το πέρασμα παραμέτρων στις συναρτήσεις υπάρχουν δύο τρόποι: Α. Call by value. Η συνάρτηση που καλέι περνά μόνο τις τιμές των μεταβλητών. Οποιαδήποτε αλλαγή γίνεται σε αντίγραφα των μεταβλητών και όχι στις ίδιες τις μεταβλητές. B. Call by reference. Η συνάρτηση που καλεί περνά τις διευθύνσεις των μεταβλητών. Οποιαδήποτε αλλαγή γίνεται στις ίδιες τις μεταβλητές. Code 12 void add(int n); int num = 2; printf("\n The value of num before calling the function = %d", num); add(num); printf("\n The value of num after calling the function = %d", num); void add(int n) n = n + 10; printf("\n The value of num in the called function = %d", n); Code 13

void add(int *); int num = 2; printf("\n The value of num before calling the function = %d", num); add(&num); printf("\n The value of num after calling the function = %d", num); void add(int *n) *n = *n + 10; printf("\n The value of num in the called function = %d", *n); Δείκτες (pointers) Κάθε μεταβλητή έχει ένα όνομα και μια τιμή. Μετά τη δήλωση της μεταβλητής, ένα τμήμα μνήμης δεσμεύεται για αυτή. Έτσι, κάθε μεταβλητή έχει τιμή και μια διεύθυνση μνήμης στην οποία έχει εκχωρηθεί η τιμή αυτή. Οι δείκτες (pointers) είναι μεταβλητές που περιέχουν τη διεύθυνση μνήμης μιας άλλης μεταβλητής. Η δήλωση των δεικτών γίνεται ως εξής: Παραδείγματα: Ακόμα και αν οι δείκτες δείχνουν σε διαφορετικού τύπου δεδομένα, θα καταλάβουν τον ίδιο χώρο στη μνήμη αφού στην ουσία αποθηκεύουν διευθύνσεις μνήμης και όχι τιμές. Η χρήση του * ειδοποιεί το μεταγλωττιστή ότι πρόκειται για μια μεταβλητή τύπου δείκτη. Στο παραπάνω παράδειγμα, το ptr δείχνει σε μια ακέραια μεταβλητή που καταλαμβάνει 2 bytes στη μνήμη. Το σύμβολο & ανακτά τη διεύθυνση μνήμης της μεταβλητής x. Αν η μνήμη έχει την εξής μορφή: Ο δείκτης θα πάρει την τιμή 1003. Code 14 int num, *pnum; pnum = &num; printf("\n Enter the number : "); scanf("%d", &num); printf("\n The number that was entered is : %d", *pnum);

Code 15 int x=10; char ch = A ; void *gp; gp = &x; printf("\n Generic pointer points to the integer value = %d", *(int*)gp); gp = &ch; printf("\n Generic pointer now points to the character= %c", *(char*)gp); Code 16 void sum (int*, int*, int*); int num1, num2, total; printf("\n Enter the first number : "); scanf("%d", &num1); printf("\n Enter the second number : "); scanf("%d", &num2); sum(&num1, &num2, &total); printf("\n Total = %d", total); void sum (int *a, int *b, int *t) *t = *a + *b; Τέλος, στη C μπορούμε να χρησιμοποιήσουμε δείκτες στο να δείχνουν σε άλλους δείκτες. Η δήλωση γίνεται μέσω της χρήσης του συμβόλου * σε κάθε επίπεδο των δεικτών. Παράδειγμα: Σε αυτό το παράδειγμα, η εντολή

Θα τυπώσει το 10. Διάφορα κοινά λάθη που συμβαίνουν με τους δείκτες έχουν ως ακολούθως: Ο δείκτης px δεν έχει οριστεί και με την τρίτη εντολή θα γράψει στα περιεχόμενα της αντίστοιχης θέσης μνήμης την τιμή 20. Η σωστή εντολή είναι px = &x; Η σωστή εντολή είναι *px < *py