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

Σχετικά έγγραφα
Προγραμματισμός Υπολογιστών με C++

Διάλεξη 18η: Διαχείρηση Αρχείων

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

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

double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

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

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

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

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

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

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

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

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

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

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

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

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

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

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

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

Κεφάλαιο : Εισαγωγή στην C: (Διαλέξεις 3-4)

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

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

Προεπεξεργαστής της C. C Preprocessor. Προγραμματισμός II 1

Συμβολοσειρές ΣΥΜΒΟΛΟΣΕΙΡΕΣ. Γεώργιος Παπαϊωάννου ( )

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Εισαγωγή στη γλώσσα προγραμματισμού C++

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

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

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

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

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

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

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

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

Αρχεία Κεφαλίδων ΑΡΧΕΙΑ ΚΕΦΑΛΙΔΩΝ. Γεώργιος Παπαϊωάννου ( )

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

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

Διάλεξη 20: Χαμηλού Επιπέδου Προγραμματισμός II

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο8

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

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

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

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

Επεξεργασία Αρχείων Κειµένου

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

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

Διαδικασία Ανάπτυξης Λογισμικού

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

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

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

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

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

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

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

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

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

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

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

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

ιαφάνειες παρουσίασης #6 (β)

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Β' Περιόδου Θέµα 1. (α')

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

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

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

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

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

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

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

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

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

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

Κεφάλαιο : Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Βιβλιοθήκη stdio. Προγραμματισμός II 1

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Ενότητα 5: «Εισαγωγή στον Προγραμματισμό. Απλές ασκήσεις με γλώσσα C»

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

Συμβολοσειρές Ορίσματα στη main()

Αρχεία & Ρεύματα ΑΡΧΕΙΑ & ΡΕΥΜΑΤΑ. Γεώργιος Παπαϊωάννου ( ) gepap@aueb.gr

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

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

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

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

Transcript:

Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 19η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1

Τι θα ακούσετε σήμερα Βασικές διαφορές της C από τη C++. Απλά παραδείγματα προγραμμάτων C. Χειρισμός αρχείων κειμένου με C. 2

Μερικές διαφορές της C από την C++ Δεν υπάρχουν: τάξεις, σχεδιότυπα, υπερφόρτωση συναρτήσεων. Δεν υπάρχουν χώροι ονομάτων. Δεν υπάρχουν αναφορές. Δεν υπάρχουν οι new και delete. Αντί αυτών: malloc και free. Διαφορετικές συναρτήσεις εισόδου/εξόδου. printf, scanf, κλπ. Μερικές διαφορετικές βασικές βιβλιοθήκες. Π.χ. «stdio.h» αντί «iostream.h». 3

Μερικές διαφορές συνέχεια Δεν υπάρχει τύπος bool. Αντί αυτού int: 0 για false, άλλες τιμές για true. Δεν υπάρχει τύπος string. Αντί αυτού πίνακες από char. Χειρισμός, μεταβίβασή τους με δείκτες (char*). Το «string.h» δεν παρέχει τύπο string αλλά χρήσιμες συναρτήσεις για το χειρισμό πινάκων char. Σταθερές ορίζονται συνήθως με #define. Αν και τα νέα πρότυπα της C παρέχουν και const. Σχόλια μόνο με /*...*/, όχι με //. Αν και πολλοί μεταγλωττιστές πια υποστηρίζουν και //. Αρχεία πηγαίου κώδικα:.c αντί για.cpp. 4

Ένα πρώτο πρόγραμμα C #include <stdio.h> /* Αντίστοιχο του <iostream>. */ #define MAX_NAME_LENGTH 255 int main() { unsigned short int age = 0; char name[max_name_length]; /* Δεν υπάρχουν string. */ printf("enter your age: "); /* Τυπώνει στο standard output (stdout). */ scanf("%d", &age); /* Διαβάζει δεκαδικό αριθμό από το standard input if(age < 18) { (stdin) και τον αποθηκεύει στη μεταβλητή age. */ printf("you are too young (only %d) to use this program.\n", age); return 1; } printf("enter your name: "); scanf("%s", name); /* Διαβάζει συμβολοσειρά. Ο name είναι πίνακας (δείκτης).*/ printf("hi %s. Nice meeting a person of your age (%d).\n", name, age); return 0; } Μεταγλώττιση με: > gcc -o myprog.exe myprog.c 5

Παράδειγμα με stdin και stdout /* Τυπώνει στο stdout αριθμημένες τις γραμμές του stdin.*/ #include <stdio.h> #include <string.h> /* Παρέχει συναρτήσεις χειρισμού πινάκων χαρακτήρων (π.χ. strncpy). Διαφορετικό από το <string> της C++. */ #define MAX_PROG_NAME_LENGTH 80 #define MAX_LINE_LENGTH 1024 /* Καθολική (global) μεταβλητή. Έχουν πρόσβαση σε αυτήν όλα τα τμήματα του προγράμματος. Χρησιμοποιούμε καθολικές μεταβλητές με φειδώ (ή καθόλου). */ char programname[max_prog_name_length]; /* Συνεχίζεται... */ 6

Συνέχεια του παραδείγματος... int main(int argc, char* argv[]) { char line[max_line_length]; unsigned long counter = 0; /* Αντιγράφει στον καθολικό πίνακα programname το όνομα που έχει το πρόγραμμα στη γραμμή εντολών, περικόπτοντάς το αν δεν χωράει. */ strncpy(programname, argv[0], MAX_PROG_NAME_LENGTH 1); if(argc!= 1) { fprintf(stderr, "%s: bad number of arguments.\n", programname); return 1; } /* Διαβάζει στον πίνακα line μια ολόκληρη γραμμή από το stdin, μέχρι MAX_LINE_LENGTH 1 χαρακτήρες. */ while(fgets(line, MAX_LINE_LENGTH, stdin)!= NULL) { printf("%d: %s", ++counter, line); } return 0; } 7

Παραλλαγή με άνοιγμα/κλείσιμο αρχείων #include <stdio.h> #include <string.h> #define MAX_PROG_NAME_LENGTH 80 #define MAX_LINE_LENGTH 1024 char programname[max_program_name_length]; int main(int argc, char *argv[]) { FILE* inputfile; /* Δείκτες σε δομές FILE. Κάθε FILE */ FILE* outputfile; /* παριστάνει ένα αρχείο. */ char line[max_line_length]; unsigned long counter = 0; strncpy(programname, argv[0], MAX_PROG_NAME_LENGTH - 1); /* Συνεχίζεται... */ 8

Συνέχεια της παραλλαγής... if(argc!= 3) { fprintf(stderr, "%s: bad number of arguments.\n", programname); return 1; } /* Άνοιγμα αρχείου για διάβασμα. */ if((inputfile = fopen(argv[1], "r")) == NULL) { fprintf(stderr, "%s: could not open input file.\n", programname); return 2; } /* Άνοιγμα αρχείου για γράψιμο. */ if((outputfile = fopen(argv[2], "w")) == NULL) { fprintf(stderr, "%s: could not open output file.\n", programname); return 3; } /* Συνεχίζεται... */ 9

Συνέχεια της παραλλαγής... while(fgets(line, MAX_LINE_LENGTH, inputfile)!= NULL) { fprintf(outputfile, "%d: %s", ++counter, line); } fclose(inputfile); fclose(outputfile); return 0; } 10

Παράδειγμα με πολλά πηγαία αρχεία /* Αρχείο main.c : */ #include "mystring.h" Μεταγλώττιση με: > gcc -o myprog.exe main.c mystring.c int main() { char* str1 = "string alpha"; char* str2 = "string beta"; printf("length of str1: %d, length of str2: %d\n", mystrlen(str1), mystrlen(str2)); } return 0; 11

Συνέχεια παραδείγματος πολλών πηγαίων αρχείων /* Αρχείο mystring.h : */ #ifndef _MYSTRING_H_ #define _MYSTRING_H_ unsigned long mystrlen(char* s); #endif 12

Συνέχεια παραδείγματος πολλών πηγαίων αρχείων /* Αρχείο mystring.c : */ #include "mystring.h" unsigned long mystrlen(char* str) { unsigned long counter = 0; while(*str!= '\0') { /* Οι πίνακες χαρακτήρων που παριστάνουν συμβολοσειρές τελειώνουν με '\0'. */ str++; /* Προχωράμε το δείκτη στην επόμενη θέση του πίνακα χαρακτήρων. */ counter++; } return counter; } 13