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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

Επανάληψη για τις Τελικές εξετάσεις

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

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

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

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

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

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

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

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

Προγραμματισμός Ι. Θεματική ενότητα 6: Πίνακες αλφαριθμητικά

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

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

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

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

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

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

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

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

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

είκτες και Πίνακες (2)

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Πίνακες. Χρησιμοποιούνται για αποθήκευση συνόλου δεδομένων του ίδιου τύπου. Γραμμική Διάταξη Δήλωση Τύπος Δεδομένων ΌνομαΠίνακα[ length ]

Προγραμματισμός Συστημάτων

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

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

Εισαγωγή στην πληροφορική

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

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

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

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

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

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

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

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

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

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

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

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

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

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

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

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

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

Transcript:

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

Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2

Τύπος Πίνακα Σύνθετος τύπος δεδομένων Αναπαριστά ένα σύνολο ομοειδών τιμών π.χ. βαθμοί ενός μαθητή, θερμοκρασίες ενός μήνα Χαρακτηριστικά: μέγεθος πίνακα, τύπος στοιχείων 3 3

Δήλωση - Αρχικοποίηση Δήλωση <τύπος> <όνομα-πίνακα> [<μέγεθος>] float grades[5]; Αρχικοποίηση float grades[5]={10, 8, 12.5, 15.5, 14}; float grades[ ]={10, 8, 12.5}; Global και static arrays Αρχικοποιούνται αυτόματα με 0 (εκτός αν έχετε δηλώσει explicit αρχικοποίηση) Local arrays ΔΕΝ αρχικοποιούνται by default Αν αρχικοποιήσετε μερικές τιμές, οι υπόλοιπες αρχικοποιούνται με 0 Συνεπώς, για αρχικοποίηση όλων με 0 int myarray[1024] = {0}; 4 4

Προσπέλαση - Αναφορά Τα στοιχεία ενός πίνακα αποθηκεύονται σε γειτονικές (διαδοχικές) θέσεις μνήμης. Ο πίνακας είναι μία δομή τυχαίας προσπέλασης Χαρακτηριστικά: μέγεθος πίνακα, τύπος στοιχείων 0 1 2 3 4 grades 10 8 12.5 15.5 14... grades[0] grades[1] grades[4] Δείκτης θέσης 5

Μεταβλητές με ενδείκτη - Ανάθεση Οι μεταβλητές με δείκτη χρησιμοποιούνται όπως οι κοινές μεταβλητές. x=grades[3]*2; y=(grades[i]+10)/5; Oι μεταβλητές με δείκτη χρησιμοποιούνται για ανάθεση/επεξεργασία των τιμών στα στοιχεία του πίνακα. grades[3] = 14; grades[j] = grades[j+1]+10; 6 6

Παράδειγμα Θεωρούμε μονοδιάστατο πίνακα 20 ακεραίων στοιχείων (int num[20]). Nα γραφεί κώδικας C που να αυξάνει τα αρνητικά στοιχεία κατά 1 και να μειώνει τα θετικά κατά 2. for (i=0; i<20; i++) if (num[i] < 0) num[i]++; else num[i] -= 2; 7

Ιδέες για εξάσκηση Παράδειγμα αρχικοποίησης πίνακα Παράδειγμα εύρεσης μέσου όρου στοιχείων πίνακα Παράδειγμα εύρεσης ελάχιστης τιμής πίνακα Παράδειγμα εύρεσης μέγιστης τιμής πίνακα Παράδειγμα ψαξίματος σε πίνακα 8 8

Αλφαριθμητικά - Πίνακες Αλφαριθμητικό ακολουθία αλφαβητικών και αριθμητικών χαρακτήρων (π.χ. Όνομα χρήστη, τίτλος βιβλίου, ISBN βιβλίου κλπ) Pascal -> ειδικός τύπος (string) C -> πίνακας χαρακτήρων με τελευταίο στοιχείο το μηδενικό χαρακτήρα ( \0 ) 9 9

Αλφαριθμητικά Εκτύπωση printf( Hello ); printf( Ο αριθμός είναι %s\n, str); Εισαγωγή scanf( %s, str); ή scanf( %s, &str[0]); διαβάζει μέχρι το πρώτο κενό προσοχή στην υπέρβαση του μεγέθους 10 10

Παράδειγμα #include <stdio.h> #define MAX_CHARS 80 #include <stdio.h> #define MAX_CHARS 80 int main() { char str[max_chars]; int i; printf( Δώσε αλφαριθμητικό: ); scanf( %s, str); for (i=0; i<max_chars; i++) printf( %c\n, str); } int main() { char str[max_chars]; int i; printf( Δώσε αλφαριθμητικό: ); scanf( %s, str); i = 0; while (str[i]!= \0 ) printf( %c\n, str[i++]); } 11 11

Συναρτήσεις Αλφαριθμητικών <stdio.h> char *gets(char *s) // διαβάζει string από το stdin στο s // και επιστρέφει το s int puts(const char *s) // γράφει το string s στο stdout void fgets(char*s, int n, FILE *fstream); // διαβάζει το πολύ n-1 //χαρακτήρες σταματώντας αν συναντήσει χαρακτήρα νέας γραμμής <string.h> int strlen(cs) int strcmp(cs,ct) char *strcpy(s,ct) char *strcat(s,ct) 12 12

Ιδέες για εξάσκηση Παράδειγμα ανάγνωσης και εκτύπωσης συμβολοσειράς Παράδειγμα αρχικοποίησης συμβολοσειράς Παράδειγμα αντίστροφης εκτύπωσης συμβολοσειράς Παράδειγμα χρήσης συναρτήσεων Παράδειγμα που από μία συμβολοσειρά αποκόπτονται τα κενά 13 13

Δισδιάστατος Πίνακας (1) Αναπαράσταση 10 φοιτητών και 4 μαθημάτων: χρήση δισδιάστατου πίνακα. int grades[10][4] πίνακας 10 στοιχείων, κάθε στοιχείο πίνακας 4 ακεραίων ή πίνακας 10 γραμμών και 4 στηλών. grades[0][1] -> βαθμός 2ου μαθήματος, πρώτου φοιτητή Αποθήκευση στη μνήμη κατά γραμμές (σαν μονοδιάστατος) 14 14

Δισδιάστατος Πίνακας (2) Φοιτητές (γραμμές) Μαθήματα (στήλες) 0 1 2 0 14 15 18 1 12 14 16 2 18 15 17 3 13 19 18 // Αρχικοποίηση int grades[4][3]= { {14,15,18}, {12,14,16}, {18,15,17}, {13,19,18} } 15 15

Ιδέες για εξάσκηση Πολλαπλασιασμός πινάκων Υλοποίηση λεξικού μετάφρασης όρων 16 16

Sneak preview! Στο επόμενο μάθημα: pointers Ορισμός: Ένας pointer είναι μια μεταβλητή με τιμή μία διεύθυνση μνήμης Σημείωση: Να μην συγχέεται με την μεταβλητή με δείκτη (indexed variable), που είναι κάτι διαφορετικό Δεν υπάρχει τέτοια δυνατότητα σε όλες τις γλώσσες! 17 17