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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

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

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

Οντοκεντρικός Προγραμματισμός

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

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

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

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

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

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

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

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

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

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

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

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

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

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

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

Αντικειμενοστραφής Προγραμματισμός

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

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Χpήσιµες Βιβλιοθήκες της γλώσσας C

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

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

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

Προχωρημένες έννοιες προγραμματισμού σε C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Transcript:

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

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

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

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

Βασικός τύπος char #include <stdio.h> int main() { char a; a = 'g'; printf("this is a char: %c\n", a); return 0; 5

Τα εισαγωγικά Διαφορετική σημασία απλών / διπλών εισαγωγικών "word" αλφαριθμητικό: 4 χαρακτήρες + 0 στο τέλος 'w' ένας χαρακτήρας "w" δύο χαρακτήρες: 'w' + 0 στο τέλος '\x77' ένας χαρακτήρας με ascii code 0x77 (στο δεκαεξαδικό, 119 στο δεκαδικό) '\167' ένας χαρακτήρας με ascii code 0167 (στο οκταδικό, 119 στο δεκαδικό) Χαρακτήρας και κώδικας ascii 6 6

Ιδιότητες char #include <stdio.h> int main() { char a; a = 'A'; printf("this is a char: %c\n", a); printf("requires %d byte(s)\n", sizeof a); printf("ascii code: %d\n", a); printf("is this 'A'? %c", 65); return 0; 7

Αλφαριθμητικά (strings) πρόκειται για πίνακες χαρακτήρων: char name[30]; αρχικοποίηση με char name[30] = "abcd"; το οποίο ισοδυναμεί με name[0] = 'a'; name[1] = 'b'; name[2] = 'c'; name[3] = 'd'; name[4] = 0 ; /* δηλώνει το τέλος ενός αλφαριθμητικού */ 8

Aνάγνωση και εκτύπωση αλφαριθμητικού char str[n_max]; scanf ("%s", str ); printf ("%s\n", str ); %s αντιστοιχεί σε αλφαριθμητικό str[0] είναι ο πρώτος χαρακτήρας str είναι η διεύθυνση του πρώτου στοιχείου str είναι το ίδιο με &str[0] ισχύει για κάθε τύπο πίνακα 9

Επεξεργασία αλφαριθμητικού ανά χαρακτήρα #include <stdio.h> int main() { char string1[ 20 ], string2[] = "string literal"; int i; printf(" Enter a string: "); scanf( "%s", string1 ); printf( "string1 is: %s\nstring2: is %s\n" "string1 with spaces between characters is:\n", string1, string2 ); for ( i = 0; string1[ i ]!= '\0'; i++ ) printf( "%c ", string1[ i ] ); printf( "\n" ); return 0; 10

Μια προγραμματιστική τεχνική Εξασφαλίζουμε ότι μια συνάρτηση μπορεί να αλλάξει τι μές πίνακα μόνο αν αναλυτικά το επιτρέψουμε. Εφαρμογή της αρχής ελαχίστου δικαιώματος (principle of least privilege). 11

#include <stdio.h> void DisplayName(char []); Παραδείγματα #include <stdio.h> void DisplayName(const char []); int main ( ) { char astring[10] = "Hello"; DisplayName(astring); DisplayName(astring); return 0; void DisplayName(char x[]) { int i; for (i=0; x[i]!=0 ; i++) printf("%c", x[i]); x[0]='h'; printf("\n"); int main ( ) { char astring[10] = "Hello"; DisplayName(astring); DisplayName(astring); return 0; void DisplayName(const char x[]) { int i; for (i=0; x[i]!=0 ; i++) printf("%c", x[i]); x[0]='h'; printf("\n"); 12 Error: assignment of read-only location

Χρήση του προσδιοριστή const const char *c; Δείκτης σε σταθερό χαρακτήρα Δεν αλλάζουν τα περιεχόμενα της θέσης στην οποία δείχνει το c char const *c; Δείκτης σε σταθερό χαρακτήρα (ίδιο) char * const p; Σταθερός δείκτης σε χαρακτήρα Δεν αλλάζει το p const char * const p; Σταθερός δείκτης σε σταθερό χαρακτήρα Δεν αλλάζει το p Δεν αλλάζουν και τα περιεχόμενα της θέσης στην οποία δείχνει το p 13

Άθροισμα δύο πινάκων μιας διάστασης Διάβασε πίνακα a Διάβασε πίνακα b Υπολόγισε το άθροισμα c των a και b Τύπωσε τον πίνακα c 14

#include <stdio.h> #define N 3 void getmatrix(int [N], const char []); void computesum(const int [N], const int [N], int [N]); void printmatrix(const int [N], const char []); int main() { int a[n]; int b[n]; int c[n]; getmatrix(a, "matrix a:"); getmatrix(b, "matrix b:"); computesum(a, b, c); printmatrix(c, "result:"); return 0; void printmatrix( const int mat[n], const char p[]) { int i; printf(p); printf("\n"); for (i=0;i<n;i++) printf("%d ", mat[i]); printf("\n"); void computesum( const int mat1[n], const int mat2[n], int mat3[n]) { int i; for (i=0;i<n;i++) mat3[i]=mat1[i]+mat2[i]; void getmatrix(int mat[n], const char p[]){ int i; printf(p); printf("\n"); for (i=0;i<n; i++) scanf("%d", &mat[i]); 15

Αλφαριθμητικό ως πίνακας χαρακτήρων: Παράδειγμα #include <stdio.h> #include <stdlib.h> int main(void) { char alphabet[27]; /* 26 letters plus trailing zero */ char c; for (c='a'; c<='z'; c++) alphabet[c-'a'] = c; alphabet[c-'a'] = 0; printf("%s", alphabet); return 0; 16 16

Δήλωση και ανάθεση τιμής σε αλφαριθμητικό char *strcpy(char *, const char*); main ( ) { char name[10]; name = "katerina"; Λάθος (στη C) printf ("%s", name); #include <string.h> main ( ) { char name[10]; Σωστός τρόπος: strcpy(name,"katerina"); printf ("%s", name); scanf("%s", name); printf ("%s", name); scanf("%s", name); printf ("%s", name); 17

Σύγκριση αλφαριθμητικών Συνάρτηση int strcmp (const char *, const char *) για σύγκριση αλφαριθμητικών: Επιστρέφει 0 αν είναι ίδια -1 αν το πρώτο όρισμα προηγείται του δεύτερου +1 αν έπεται. Προσοχή!!! αν θέλω να συγκρίνω δύο αλφαριθμητικά δεν χρησιμοποιώ τον τελεστή == Αυτός συγκρίνει θέσεις όχι περιεχόμενα!!! 18

Παράδειγμα σύγκρισης αλφαριθμητικών #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char name[100] ="Katerina"; char user[100] =""; char name[100] ="Katerina"; char user[100] =""; printf("enter your name:"); printf("enter your name:"); while (strcmp(user,name)!=0) scanf("%s",user); printf("hello %s\n", user); system("pause"); return 0; while (strcmp(user,name)) scanf("%s",user); printf("hello %s\n", user); system("pause"); return 0; 19

#include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char name[100] ="Katerina"; char user[100] =""; printf("enter your name:"); while (user!= "Katerina") { scanf("%s",user); printf("hello %s\n", user); Άλλο εννοεί εδώ Δεν συγκρίνει τις τιμές αλφαριθμητικών!!! Τι κάνει; Συγκρίνει τη θέση που αρχίζει ο user με τη θέση στην οποία είναι αποθηκευμένο το Katerina. Σύγκριση αλφαριθμητικών με strcmp() return 0; 20

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