Διάλεξη 22η: Επιπλέον στοιχεία της C

Σχετικά έγγραφα
Διάλεξη 21η: Απλά Συνδεδεμένες Λίστες

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

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

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

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

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

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

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

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

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 7 ο. έντρο. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

Αρχιτεκτονική Υπολογιστών. Data. Κείμενο. Βίντεο. Αριθμοί Εικόνες. Ήχοι

Γεώργιος Δημητρίου Προσαρμογή Εισαγωγικού Μαθήματος από Prof. Stephen A. Edwards (Columbia University)

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

Διάλεξη 19η: Δομές δεδομένων

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

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

Φροντιστήριο 4 Σκελετοί Λύσεων

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

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

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

Διάλεξη 15η: Αναδρομή, μέρος 1ο

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

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

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

Διάλεξη 12: Λίστες Υλοποίηση & Εφαρμογές. Διδάσκων: Παναγιώτης Ανδρέου

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα

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

ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)

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

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

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

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

Προγραμματισμός σε C. Πράξεις με bits (bitwise operators)

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

3 &4. Εισαγωγήστη C Ιωάννης Κατάκης

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

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

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

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Chapter 2. Εντολές : Η γλώσσα του υπολογιστή. (συνέχεια) Η διασύνδεση Υλικού και λογισμικού David A. Patterson και John L.

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

Προγραμματισμός Δομές Δεδομένων

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

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

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

(programming interfaceή/και application programming interface API).

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

ΠΛΗ111. Ανοιξη Μάθηµα 3 ο. Συνδεδεµένες Λίστες. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

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

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

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

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δυναμική Δέσμευση Μνήμης και Δομές Δεδομένων (Φροντιστήριο)

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

a = 10; a = k; int a,b,c; a = b = c = 10;

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1

Δεδομένα, Τύποι και Τιμές

υναµικές οµές εδοµένων (συν.) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα:

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

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

Εντολές του MIPS (2)

ΕΛΛΗΝΙΚΟ ΑΝΟΙΚΤΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

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

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

Διδάσκων: Παναγιώτης Ανδρέου

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

Διδάσκων: Παναγιώτης Ανδρέου

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

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

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

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

Εισαγωγή στον Προγ/μό Υπολογιστών

Φροντιστήριο 4 Σκελετοί Λύσεων

Ενδεικτικές λύσεις και στατιστικά

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

Υλοποίηση Λιστών. Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα:

Μεταφραστής (Compiler)

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

ΠΛΗ111. Ανοιξη Μάθηµα 5 ο. Ουρά. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Διάλεξη 13η: Δυναμική Διαχείρηση Μνήμης, μέρος 1

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

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

Οι λίστες, χάνοντας τα πλεονεκτήματα των πινάκων, λύνουν προβλήματα που παρουσιάζουν οι πίνακες

Transcript:

Διάλεξη 22η: Επιπλέον στοιχεία της C Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Extra CS100, 2018-2019 1 / 11

Οργάνωση του κώδικα Ένα πρόγραμμα μπορεί να βρίσκεται σε πολλά αρχεία Καλύτερη οργάνωση του κώδικα Χρήσιμο/απαραίτητο, ειδικά σε μεγάλα προγράμματα Το linux kernel έχει 135 εκατομμύρια γραμμές κώδικα Το MacOS X έχει 86 εκατομμύρια γραμμές κώδικα Τα Windows XP έχουν 45 Ο firefox έχει 21 εκατομμύρια γραμμές κώδικα σε 11000 αρχεία Χωριστή μεταγλώττιση (compile) και σύνδεση (link) Ο κώδικας βρίσκεται σε αρχεία c Οι δηλώσεις και ορισμοί τύπων βρίσκονται σε αρχεία h (επικεφαλίδας header) Όλα τα αρχεία κώδικα που χρησιμοποιούν τύπους, συναρτήσεις, μεταβλητές, κλπ, δηλωμένα σε ένα header, το εισάγουν με #include fileh Οι δηλώσεις συναρτήσεων και μεταβλητών γίνονται με extern Πρατικάκης (CSD) Extra CS100, 2018-2019 2 / 11

Παράδειγμα intlisth struct list_node { int data; struct list_node *next; }; typedef struct list_node node_t; extern node_t *root; extern node_t *list_insert_before(node_t *, int); extern void list_insert_after(node_t *, int); extern node_t *list_find(node_t *, int); extern node_t *list_nth(node_t *, int); extern node_t *list_remove_node(node_t *, node_t *); extern void list_delete(node_t *); Πρατικάκης (CSD) Extra CS100, 2018-2019 3 / 11

Παράδειγμα (2) intlistc #include intlisth node_t *root = NULL; node_t *list_insert_before(node_t *list, int data) { } void list_insert_after(node_t *list, int data) { } node_t *list_find(node_t *list, int data) { } node_t *list_nth(node_t *list, int position) { } node_t *list_remove_node(node_t *list, node_t *node) { } void list_delete(node_t *list) { } Πρατικάκης (CSD) Extra CS100, 2018-2019 4 / 11

Παράδειγμα (3) mainc #include intlisth int main() { node_t *ptr; list_insert_after(root, 10); root = list_insert_before(root, 42); ptr = list_find(root, 10); printf( found %d!\n, ptr->data); return 0; } Πρατικάκης (CSD) Extra CS100, 2018-2019 5 / 11

Παράδειγμα (4) Μεταγλώττιση κάθε αρχείου χωριστά σε object code Μεταγλώττιση $ gcc -c intlistc -o intlisto $ gcc -c mainc -o maino Σύνδεση όλων των object αρχείων για την παραγωγή του εκτελέσιμου Σύνδεση $ gcc maino intlisto -o program $ /program found 10! $ Πρατικάκης (CSD) Extra CS100, 2018-2019 6 / 11

Bits Δεκαδικό σύστημα: 1993 10 = 1 10 3 + 9 10 2 + 9 10 1 + 3 10 0 Δυαδικό σύστημα: 1101 2 = 1 2 3 + 1 2 2 + 0 2 1 + 1 2 0 Οκταδικό σύστημα: 7103 2 = 7 8 3 + 1 8 2 + 0 8 1 + 3 8 0 Δεκαεξαδικό σύστημα: F1A7 16 = 15 16 3 + 1 16 2 + 10 16 1 + 7 16 0 Πρατικάκης (CSD) Extra CS100, 2018-2019 7 / 11

Τελεστές Bits Οι τελεστές bit εφαρμόζονται σε κάθε ένα bit του κάθε (ακέραιου) τελεσταίου Τελεστής NOT: ~ ~10000111 == 01111000 Τελεστής AND: & (11100011 & 10000111) == 10000011 Τελεστής OR: & (11100011 10000111) == 11100111 Τελεστής XOR: (11100011 ˆ 10000111) == 01100100 Πρατικάκης (CSD) Extra CS100, 2018-2019 8 / 11

Τελεστές Ολίσθησης Τελεστής shift left: << Τελεστής shift right: >> Ολισθαίνουν τα bits του πρώτου τελεσταίου δεξιά ή αριστερά κατά τόσες θέσεις όσες καθορίζει ο δεύτερος τελεσταίος Τα καινούρια bits είναι πάντα 0 Το shift right διατηρεί το πρόσημο σε signed int Παράδειγμα (10000000 >> 2) == 00100000 (00000011 << 3) == 00011000 Πρατικάκης (CSD) Extra CS100, 2018-2019 9 / 11

Παράδειγμα countbitsc int count_bits(int x) { int n; for(n = 0; x!= 0; ++n) { x &= (x -1); } return n; } Πρατικάκης (CSD) Extra CS100, 2018-2019 10 / 11

Πεδία bit Σε δομές που περιέχουν πεδία με περιορισμένες τιμές Μπορούμε να ορίσουμε πόσα bits καταλαμβάνει ένα πεδίο struct foo { unsigned year :11; unsigned is_ valid : 1; unsigned percent : 7; unsigned : 0; unsigned field1 : 3; signed field2 :10; }; Τα bit fields δεν έχουν διεύθυνση (δεν εφαρμόζεται ο τελεστής &) Η σειρά των bit fields στη μνήμη δεν καθορίζεται από τη C Μπορεί να αλλάξει ανάλογα με τον compiler και τον επεξεργαστή Πρατικάκης (CSD) Extra CS100, 2018-2019 11 / 11