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

Σχετικά έγγραφα
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

Εισαγωγή στους Υπολογιστές

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

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

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

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

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

Ι Αρχεία δεδομένων, μέρος δεύτερο: δυαδικά αρχεία ΙΙ Δομές δεδομένων (struct)

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

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

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

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

Εισαγωγή στους Υπολογιστές

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

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

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

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

Ηλεκτρονικοί Υπολογιστές

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Προγραμματισμός Υπολογιστών με C++

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

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

Προγραμματισμός Η/Υ. Ενότητα 5: Εντολές Επανάληψης

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

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

Λογιστικές Εφαρμογές Εργαστήριο

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

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

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

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

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

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

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

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

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

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

Εισαγωγή στους Υπολογιστές

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

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

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Θεωρία Πιθανοτήτων & Στατιστική

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

Transcript:

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 6 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών & Τεχνολογίας Υπολογιστών

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τυπου άδειας χρησης, η άδεια χρησης αναφερεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου των διδασκόντων καθηγητών. Το έργο «Ανοικτά Ακαδήμαϊκά Μαθήματα στο Πανεπιστήμιο Πατρών» έχει χρηματοδοτηθεί μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκη Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικους πόρους. 3

Ανάπτυξη Το παρόν εκπαιδευτικό υλικό αναπτύχθηκε στο τμήμα Ηλεκτρολόγων Μηχανικών και Τεχνολογίας Υπο λογιστών του Πανεπιστημίου Πατρών 4

Types Μέγεθος τύπου Τελεστής sizeof 5

Γιατί ολοκληρώνεται κανονικά η λειτουργία του; #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { short int i; printf ("%d %d\n", i, sizeof i); system("pause"); for (i=0; i>=0; printf("%d\n", i++)); printf("out of loop: %d", i); return 0; 6

Type modifiers: long, unsigned, long long #include <stdio.h> #include <stdint.h> #include <inttypes.h> int main(void) { long long unsigned m = 1ULL << 63ULL; long unsigned n = 1ULL << 31ULL ; unsigned l = 1ULL << 31ULL ; printf("long long number: %"PRIu64" with a size of %d bytes\n", m, sizeof m ); printf("long number: %lu with a size of %d bytes\n", n, sizeof n ); printf("number: %u with a size of %d bytes\n", l, sizeof l ); return 0; 7

Εργαστήριο #include <stdio.h> #include <stdlib.h> int getuserresponse(void); void square(void); void triangle(void); int getuserresponse(void) { int a; printf("enter choice:\n"); scanf("%d", &a); int main(void) { int answer; return a; while((answer=getuserresponse())!=3){ switch (answer) { case 1: square (); break; case 2: triangle(); break; return 0; void square(void) { printf("square\n"); void triangle(void) { printf("triangle\n"); 8

Εργαστήριο #include <stdio.h> #include <stdlib.h> int getuserresponse(void); void square(void); void triangle(void); int getuserresponse(void) { int a; printf("enter choice:\n"); scanf("%d", &a); int main(void) { int answer; return a; while((answer=getuserresponse())!=3){ switch (answer) { case 1: square (); break; case 2: triangle(); break; return 0; void square(void) { printf("square\n"); void triangle(void) { printf("triangle\n"); 9

Πίνακες στη C Δεσμεύουν συνεχή χώρο στη μνήμη Οι ακόλουθες δηλώσεις οδηγούν τον compiler να δημιουργήσει διαφορετική assembly. int a[32]; int s = 32; int a[s]; 10

Πίνακες Συλλογή μεταβλητών ίδιου τύπου, οι οποίες αποθηκεύονται σε διαδοχικές θέσεις μνήμης. float temperature[31]; δήλωση πίνακα μεταβλητών float, 31 στοιχείων temperature[0] είναι το πρώτο στοιχείο, temperature[1] είναι το δεύτερο στοιχείο,... temperature[30] είναι το τριακοστό πρώτο στοιχείο, temperature είναι η διεύθυνση του πρώτου στοιχείου temperature είναι το ίδιο με &temperature[0] 11

Πίνακες δύο (ή περισσότερων) διαστάσεων int a[3][3] ; int a[3][3] = {{1,2,3, {3,2,1, {1,1,1; 1 2 3 3 2 1 1 1 1 12

Παράδειγμα #include <stdio.h> #define N 3 int main ( ) { int i, j; int a[n][n] = {{1,2,3, {3,2,1, {1,1,1; for (i=0; i<n; i++) { for (j=0; j<n; j++) printf("%d ",a[i][j]); printf("\n"); return 0; 13

Αποθήκευση στη μνήμη a[1] σημαίνει δεύτερη γραμμή a[1][2] σημαίνει τρίτο στοιχείο δεύτερης γραμμής 1 2 3 3 2 1 1 1 1 Διεύθυνση Στοιχείο 1000 1 1004 2 1008 3 100C 3 1010 2 1014 1 1018 1 101C 1 1020 1 14

Παράδειγμα #include <stdio.h> #define N 3 int main ( ) { int i, j; int a[n][n] = {{1,2,3, {3,2,1, {1,1,1; int *b = &a[0][0]; for (i=0; i< N; i++) { for (j=0; j< N; j++) printf("%d ",a[i][j]); printf("\n"); for (i=0; i< N*N; i++) printf("%d ", *(b+i)); return 0; 15

Υπάρχουν όρια; #include <stdio.h> #include <string.h> #define N 10 int main ( ) { char other[ ] = "dokimi"; char username[n]; Ναι, αλλά δεν γίνεται έλεγχος... printf("please enter user name: "); scanf("%s", username); printf("hello, %s\n", username); printf("your name is %d letters long stored at %X\n", strlen(username), username); printf("value of other: %s at %X", other, other); return 0; 16

Σχηματικά η μνήμη buffer overflow username other 'd' 'o' 'k' 'i' 'm' 'i' 0 22FEC0 22FED0 V a s s i' l i s 0 d' o k' i' 'm' 'i' 0 V a s s i' l i s P a l i o u r a 's' 0 l' 'o' 'm' 'i' 0 Καταστρέφονται τα περιεχόμενα της other! 17

int arr[10], n ; Πίνακες και δείκτες *(arr + n) = arr[n] arr + n = &arr[n] χρησιμοποιούμε δείκτες για να περάσουμε ως όρισμα σε συνάρτηση πίνακες ακριβέστερα: σε ποια διεύθυνση μνήμης βρίσκεται το πρώτο στοιχείο του πίνακα. 18

Σημείωμα αναφοράς Copyright Πανεπιστήμιο Πατρών, Παλιουράς Βασίλειος, Δερματάς Ευάγγελος «Αρχές Προγραμματισμού». Έκδοση: 1.0. Πάτρα 2015 Διαθέσιμο από τη δικτυακιακή διέυθυνση https://eclass.upatras.gr/modules/ 19