Διάλεξη 16: Εργαλεία Ι
|
|
- Ερατώ Βασιλόπουλος
- 7 χρόνια πριν
- Προβολές:
Transcript
1 Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Διάλεξη 16: Εργαλεία Ι (μέρος: Κεφάλαια , KNK-2ED) Δημήτρης Ζεϊναλιπούρ
2 Περιεχόμενο Διάλεξης 16 Μεγάλης Κλίμακας Λογισμικό (Large-scale SW) Μέγεθος Λογισμικού και Προβλήματα Κύκλος Ανάπτυξης Λογισμικού Μονάδες Προγράμματος (Modules) Εισαγωγή, Χαρακτηριστικά, Πλεονεκτήματα Συνοχή (Cohesion) και Διασύνδεση (Coupling) Παραδείγματα Μονάδων : glib-c, gzip, coreutils Τύποι Μονάδων, Μονάδες και Βιβλιοθήκες Έλεγχοι και Ανάλυση Κώδικα Επιβεβαίωση Ισχυρισμών assert(), Cunit/Junit Έννοιες: Στατική & Δυναμική Ανάλυση Κώδικα Εργαλεία: Valgrind, gprof, JProfiler (JAVA) και διασύνδεση με Eclipse 16-2
3 Μεγάλης Κλίμακας Λογισμικό (Μέγεθος) Τα περισσότερα πλήρη προγράμματα (fullfeatured programs), είναι χιλιάδες Γραμμές Πηγαίου Κώδικα (Source Lines of Code - SLOC). Παραδείγματα gz124src.zip: To gzip εργαλείο σε UNIX (42 αρχεία με 6,972 SLOC!) perl tar.gz: Ο μεταφραστής και οι βασικές βιβλιοθήκες της γλώσσας PERL (3241 αρχεία και 667,323 SLOC!!) glibc-2.14.tar.gz: ο κώδικας όλων των βιβλιοθηκών της γλώσσας C (8552 αρχεία και 1,775,440 SLOC!!!)
4 Μεγάλης Κλίμακας Λογισμικό (Μέγεθος) Παράδειγμα Εύρεσης SLOC με το εργαλείο CLOC (Count Lines of Code: Windows: Linux (με Perl): $./cloc-1.55.pl gzip124/ 89 text files. 82 unique files. 47 files ignored. Απλά τοποθετήστε το.pl ή.exe στον κατάλογο που θέλετε και μετά "./cloc-1.55.pl <directory> " ή απλά "./cloc-1.55.pl gzip.tar.gz" v 1.55 T=0.5 s (84.0 files/s, lines/s) Language files blank comment code C C/C++ Header Bourne Shell Assembly DOS Batch Perl Teamcenter def SUM:
5 Μεγάλης Κλίμακας Λογισμικό (Μέγεθος) Παραδείγματα SLOC γνωστών Λειτουργικών Συστημάτων. Σύνολο πολλών πλήρων υπο-προγραμμάτων Πηγή:
6 Περιεχόμενο Διάλεξης 16 Μεγάλης Κλίμακας Λογισμικό (Large-scale SW) Μέγεθος Λογισμικού και Προβλήματα Κύκλος Ανάπτυξης Λογισμικού Μονάδες Προγράμματος (Modules) Εισαγωγή, Χαρακτηριστικά, Πλεονεκτήματα Συνοχή (Cohesion) και Διασύνδεση (Coupling) Παραδείγματα Μονάδων : glib-c, gzip, coreutils Τύποι Μονάδων, Μονάδες και Βιβλιοθήκες Έλεγχοι και Ανάλυση Κώδικα Επιβεβαίωση Ισχυρισμών assert(), Cunit/Junit Έννοιες: Στατική & Δυναμική Ανάλυση Κώδικα Εργαλεία: Valgrind, gprof, JProfiler (JAVA) και διασύνδεση με Eclipse 16-6
7 Μονάδες - Modules (Εισαγωγή) Oπως αναφέραμε ήδη, είναι ευκολότερο να βλέπουμε ένα πρόγραμμα ως μια συλλογή από ανεξάρτητες μονάδες (modules). Μονάδα Προγράμματος (Module): Συλλογή από "υπηρεσίες" (συναρτήσεις) οι οποίες είναι διαθέσιμες σε άλλα μέρη του προγράμματος, τα οποία ονομάζονται χρήστες (clients). Ορολογία C: Module ή Object με.o extension (κώδικας μηχανής που προκύπτει από την μεταγλώττιση) Ορολογία JAVA: Class ή Object με.class extension (ενδιάμεσος κώδικας που προκύπτει από την μεταγλώττιση απαιτεί JRE για εκτέλεση μπορεί να γίνει decompile, π.χ., ψάξε jad ή JD στο google.) Module tree.o PROGRAM Module stack.o Client (Object File) main.o Module queue.o 16-7
8 Μονάδες - Modules (Χαρακτηριστικά) Κάθε module έχει μια διεπαφή (interface), η οποία περιγράφει τις διαθέσιμες "υπηρεσίες" του module. Η διεπαφή αυτή την ονομάστηκε αρχείο κεφαλίδας. Κάθε module έχει την υλοποίηση (implementation). H υλοποίηση αυτή ονομάστηκε πηγαίος κώδικας. Κάθε Module αναπτύσσεται ξεχωριστά από τα υπόλοιπα modules. Κάθε Module μπορεί να αναπτύσσεται από διαφορετικούς προγραμματιστές (ή ζεύγη προγραμματιστών extreme programming) Κάθε Module δοκιμάζεται και συντηρείται ξεχωριστά από τα άλλα module (με τους οδηγούς δοκιμής που διερευνούν όλα τα μονοπάτια εκτέλεσης ενός προγράμματος) 16-8
9 Μονάδες - Modules (Πλεονεκτήματα) Πλεονεκτήματα διάσπασης ενός προγράμματος σε μονάδες: Αφαιρετικότητα (Abstraction) Γνωρίζουμε τι κάνει χωρίς να ξέρουμε πως. Επαναχρησιμοποίηση Κώδικα (Reusability) Κάθε μονάδα (π.χ., στοίβα) που παρέχει υπηρεσίες μπορεί εύκολα να είναι χρήσιμη σε άλλους πελάτες. Συντήρηση Κώδικα (Maintainability) Ένα σφάλμα βρίσκεται σε μια μόνο μονάδα, επομένως διευκολύνεται ο εντοπισμός & διόρθωση του προβλήματος. Η επανα-μεταγλώττιση γίνεται γρήγορα (ένα αρχείο). Μπορούμε να αλλάξουμε την υλοποίηση μιας μονάδας χωρίς να αλλάξει το υπόλοιπο πρόγραμμα (εφόσον η διεπαφή δεν αλλάζει πρότυπο) 16-9
10 Μονάδες - Modules (Ερωτηματικά) Κατά τη σχεδίαση ενός αρθρωτού μεγάλου προγράμματος προκύπτουν κάποια ερωτηματικά: Ποιες και πόσες μονάδες πρέπει να έχει ένα πρόγραμμα; Τι υπηρεσίες πρέπει να προσφέρει μια μονάδα; Ποιες υπηρεσίες να είναι εσωτερικές και ποιές εξωτερικές; Τι αλληλεξαρτήσεις πρέπει να έχουν οι μονάδες; Σίγουρα, θα έχετε προβληματιστεί για τα ερωτήματα αυτά, από την έως τώρα τριβή σας με τις εργασίες
11 Συνοχή και Διασύνδεση (Cohesion and Coupling) Σε ένα καλά σχεδιασμένο πρόγραμμα, οι μονάδες πρέπει να έχουν τα ακόλουθα χαρακτηριστικά: Ψηλή Συνοχή (High cohesion): Τα στοιχεία (συναρτήσεις, δεδομένα, κτλ) κάθε μονάδας πρέπει να συσχετίζονται όσο το δυνατό περισσότερο Χαμηλή Διασύνδεση (Low coupling): Τα Modules πρέπει να είναι όσο πιο ανεξάρτητα γίνεται (χωρίς δηλαδή να κάνει το ένα include το άλλο). Ας δούμε τώρα κάποια πραγματικά παραδείγματα από τα προγράμματα glib-c (βιβλιοθήκες gnuc), gzip (εργαλείο C), coreutils (βασικές εντολές UNIX) 16-11
12 Ψηλή Συνοχή και Χαμηλή Διασύνδεση (Παραδείγματα) Οι μονάδες του προγράμματος gzip124 το οποίο υλοποιεί διάφορους αλγόριθμους συμπίεσης / αποσυμπίεσης Παρατηρούμε ότι έχουμε μια μονάδα (module) ανά αλγόριθμο, ένα πελάτη και άλλα gzip.c (Client προγράμματος) trees.c / unpack.c (Huffman αλγόριθμος!) zip.c / unzip.c (PKZIP αλγόριθμος) lzw.c / unlzw.c / lzw.h (LZW αλγ.) inflate.c / deflate.c (LZ77 + Huffman) Αλλα: getopt (command options), κτλ. Το αρχείο κεφαλίδας των πλείστων αρχείων είναι το gzip.h (κάθε συνάρτηση μπορεί να υλοποιείται από ξεχωριστό προγραμματιστή) Οι οδηγοί χρήσης μπορει να είναι υλοποιημένοι εξωτερικά (εκτός κώδικα, το οποίο είναι εφικτό) assembly 16-12
13 Ψηλή Συνοχή και Χαμηλή Διασύνδεση (Παραδείγματα) Υποσύνολο των μονάδων για τα core utilities (βασικές εντολές) του UNIX Διαθέσιμο μέσω : coreutils/coreutils-8.9.tar.gz Τι παρατηρείται; Με ποια λογική έχουν δημιουργηθεί οι μονάδες; Τα δικά μας προγράμματα μέχρι στιγμής ήταν "πολύ μικρά" για αυτό σκόπιμα δημιουργήσαμε και μονάδες που ΔΕΝ θα χρειάζονταν στην πραγματικότητα. Σε μεγαλύτερα προγράμματα θα ήταν πιο ξεκάθαρο πώς να χωριστεί ο κώδικας σε μονάδες (όπως τα παραδείγματα) 16-13
14 Τύποι Μονάδων (Types of Modules) Mέχρι στιγμής είχαμε πει ότι μια Μονάδα (Module) θα αποτελείται από ένα.c και.h αρχείο. Τώρα είμαστε πιο έτοιμοι (ώριμοι) για να χαλαρώσουμε αυτό τον περιορισμό. Γενικότερα, μπορούμε να πούμε ότι οι μονάδες ανήκουν στις ακόλουθες κατηγορίες: A. Συλλογές Δεδομένων (Data pools) B. Βιβλιοθήκες (Libraries) C. Αφαιρετικά Αντικείμενα (Abstract objects) 16-14
15 Τύποι Μονάδων (Types of Modules) A. Συλλογή Δεδομένων (Data Pool): συσχετιζόμενες μεταβλητές ή/και σταθερές. Στη C, μια μονάδα αυτού του τύπου μπορεί να είναι ένα απλό αρχείο κεφαλίδας, π.χ., <float.h>, <limits.h> ή το "def.h" B. Βιβλιοθήκη (Library): μια συλλογή από συσχετιζόμενες συναρτήσεις. <string.h> είναι η διεπαφή (interface) της βιβλιοθήκης που αφορά το συναρτήσεις επεξεργασίας συμβολοσειρών. Βιβλιοθήκη glibc-2.14/string 16-15
16 Μονάδες και Βιβλιοθήκες (Module and Library) Βιβλιοθήκη (Library): Μια συλλογή από modules (αντίστοιχο της έννοιας των JAR αρχείων στη JAVA) Executable Program Library (Βιβλιοθήκη) Module Object File (*.o) Module Object File (*.o) Library tree.o stack.o queue.o Module (Object File) myjpglib.a mybmplib.a main.o Library (Βιβλιοθήκη) Module Object File (*.o) libc.so Module Object File (*.o) Statically-linked (δηλ., κατά την μεταγλώττιση συνδέονται όλα σε ένα αρχείο, το εκτελέσιμο!) Dynamically-linked (δηλ., κατά την εκτέλεση το Λειτουργικό συνδέει το εκτελέσιμο με την βιβλιοθήκη) 16-17
17 Μονάδες και Βιβλιοθήκες (Module and Library) Παράδειγμα Δημιουργίας / Σύνδεσης με Στατική Βιβλιοθήκης: Α) Δημιουργία Αντικειμενικών Αρχείων: gcc -Wall -c f1.c f2.c Β) Δημιουργία Βιβλιοθήκης "mylibc.a" // ar -- create and maintain library archives ar -cvq libc.a f1.o f2.o Γ) Παρουσίαση Αρχείων στη Βιβλιοθήκης: ar t libc.a Δ) Σύνδεση προγράμματος πελάτη με τη Βιβλιοθήκη gcc -o game client.c libc.a Module Object File (f1.o) libc.a Module Object File (f2.o) game Module Object File (client.o) 16-18
18 Εκτελέσιμο Μονάδες και Βιβλιοθήκες (Module and Library) Σύνδεση με Στατική Βιβλιοθήκη (Static Library) Module Object File (*.o) Module Object File (*.o) libc.a Σύνδεση με Δυναμική Βιβλιοθήκη (Dynamic Library) Εκτελέσιμο (Εκτός Μαθήματος) Module Object File (*.o) Module Object File (*.o) libc.so Example:
19 Απόκρυψη Πληροφορίας (Information Hiding) Μια καλά σχεδιασμένη μονάδα αποκρύπτει πληροφορίες από τους πελάτες της (γνωστό ως απόκρυψη πληροφορίας information hiding) Π.χ., Οι πελάτες της στοίβας δε χρειάζεται να γνωρίζουν εάν η στοίβα αποθηκεύεται σε πίνακα, συνδεδεμένη λίστα ή αλλιώς. Λόγοι Απόκρυψης: Ασφάλεια (Security). Εάν οι πελάτες δεν γνωρίζουν πως αποθηκεύονται τα δεδομένα εσωτερικά δεν μπορούν να την μεταβάλουν συνειδητά ή ασυνείδητα. Ευελιξία (Flexibility). Η αλλαγές στα εσωτερικά ενός module δεν θα είναι δύσκολη από τον προγραμματιστή εφόσον το module εκθέτει (διαφημίζει) μόνο τη διεπαφή. της! 16-20
20 Απόκρυψη Πληροφορίας (Information Hiding) Στη C, το βασικό εργαλείο για απόκρυψη πληροφορίας είναι η χρήση του static Μια static μεταβλητή με εμβέλεια αρχείου, είναι "ορατή" μόνο εσωτερικά του αρχείου (ούτε και οι πελάτες της μονάδας δεν το βλέπουν). Μια static συνάρτηση μπορεί να καλείται απευθείας μόνο από άλλες συναρτήσεις μέσα στο ίδιο αρχείο. def.h #define PUBLIC // Ορατή Εκτός Αρχείου #define PRIVATE static // Ορατή Εντός Αρχείου 16-21
21 Τύποι Μονάδων (Types of Modules) C. Αφηρημένο Αντικείμενο (Abstract Object): Συλλογή από συναρτήσεις που εργάζονται πάνω σε κάποια δομή η οποία είναι εσωτερική (hidden). Στη διάλεξη 11 χρησιμοποιήσαμε το static μπροστά από τις εσωτερικές μεταβλητές της στοίβας (η οποία ήταν αφηρημένο αντικείμενο) stack.h static int sp = 0; static double val[100]; Προβλήματα; Επόμενη Διαφάνεια main.ci #include "stack.h" int main() { STACK stack; int x = 1; push(&stack, x); // OK sp = 2; // ERROR 16-22
22 Τύποι Μονάδων (Types of Modules) Πρόβλημα 1: Συγκρούσεις στα Ονόματα (π.χ., include "queue.h" και "stack.h" και τα δυο περιέχουν συνάρτηση top() Λύση: Πρόθεμα στις συναρτήσεις stack_top() και queue_top(). Πρόβλημα 2: Δεν θα μπορούσαμε να "κρύψουμε" τα δεδομένα του stack εάν είχαμε typedef Οι αντικειμενοστραφείς γλώσσες (JAVA, C++, C#) υποστηρίζουν ευκολότερα τους Αφηρημένους Τύπους Δεδομένων (ΑΤΔ) stack.h typedef struct { int sp = 0; double val[100]; } STACK; main.ci #include "stack.h" int main() { STACK stack; int x = 1; push(&stack, x); // OK stack.sp = 2; // ΟΚ!!! 16-23
23 Περιεχόμενο Διάλεξης 16 Μεγάλης Κλίμακας Λογισμικό (Large-scale SW) Μέγεθος Λογισμικού και Προβλήματα Κύκλος Ανάπτυξης Λογισμικού Μονάδες Προγράμματος (Modules) Εισαγωγή, Χαρακτηριστικά, Πλεονεκτήματα Συνοχή (Cohesion) και Διασύνδεση (Coupling) Παραδείγματα Μονάδων : glib-c, gzip, coreutils Τύποι Μονάδων, Μονάδες και Βιβλιοθήκες Έλεγχοι και Ανάλυση Κώδικα Επιβεβαίωση Ισχυρισμών assert(), Cunit/Junit Έννοιες: Στατική & Δυναμική Ανάλυση Κώδικα Εργαλεία: Valgrind, gprof, JProfiler (JAVA) και διασύνδεση με Eclipse 16-25
24 Έλεγχοι Μονάδας ΧΩΡΙΣ Εργαλεία (Assertions) Μια εναλλακτική (ή συμπληρωματική) πρακτική για τον έλεγχο μονάδων είναι αυτή της Επιβεβαίωσης Ισχυρισμών (Assertions) Υποστηρίζεται από όλες τις δημοφιλής γλώσσες! Παράδειγμα #include <assert.h> // assert() #include <stdlib.h> // EXIT_SUCCESS int main() { int A[10], i = 15; assert(0<=i && i<10); A[i] = 0; return EXIT_SUCCESS; } Εκτέλεση Το assert λοιπόν μπορεί να το φανταστεί κανείς ως μια συνθήκη ελέγχου if, η οποία τερματίζει τη ροή εκτέλεσης ενός προγράμματος εάν δεν ικανοποιείται η συνθήκη. Assertion failed: (0<=i && i<10), function main, file new.c, line 6. Abort trap 16-26
25 Έλεγχοι Μονάδας ΧΩΡΙΣ Εργαλεία (Assertions) Μειονέκτημα assert: Ο Χρόνος εκτέλεσης του προγράμματος αυξάνεται από τον επιπλέον έλεγχο, assert (condition). Συνεπώς, πολλοί χρησιμοποιούν το assert μόνο κατά την φάση της δοκιμής / αποσφαλμάτωσης με την ακόλουθη λογική: Εισαγωγή της assert.h αφού πρώτα γίνει def το NDEBUG. #define NDEBUG #include <assert.h> Στην περίπτωση μας θα μπορούσαμε να συνδυάσουμε με τη DEBUG μεταβλητή του makefile μας. #ifdef DEBUG #define NDEBUG #include <assert.h> #endif 16-27
26 Έλεγχοι Μονάδας ΜΕ Εργαλεία (Το Εργαλείο CUnit) Χρήση CUnit για τον έλεγχο μονάδων μιας μοναδας C 16-28
27 Έλεγχοι Μονάδας ΜΕ Εργαλεία (Το Εργαλείο CUnit) /* Simple test of fprintf(). * Writes test data to the temporary file and checks * whether the expected number of bytes were written. */ void testfprintf(void) { int i1 = 10; } if (NULL!= temp_file) { CU_ASSERT(0 == fprintf(temp_file, "")); CU_ASSERT(2 == fprintf(temp_file, "Q\n")); CU_ASSERT(7 == fprintf(temp_file, "i1 = %d", i1)); } Παράδειγμα CUnit Test (Test Driver γραμμένο σε CUnit) /* The main() function for setting up and running the tests. * Returns a CUE_SUCCESS on successful running, another * CUnit error code on failure. */ int main() { CU_pSuite psuite = NULL; psuite = CU_add_suite("Suite_1", init_suite1, clean_suite1); CU_add_test(pSuite, "test of fprintf()", testfprintf);... CU_basic_run_tests(); return CU_get_error(); } Συναρτήσεις αρχικοποίησης ελέγχων 16-29
28 Έλεγχοι Μονάδας ΜΕ Εργαλεία (Το Εργαλείο JUnit) Χρήση JUnit για τον έλεγχο μονάδας κλάσεων JAVA 16-30
29 Στατική Ανάλυση Κώδικα (Static Code Analysis) Στατική Ανάλυση Κώδικα (Static Code Analysis): Η ανάλυση ενός κώδικα ΧΩΡΙΣ να εκτελεστεί (δηλ., σε επίπεδο πηγαίου κώδικα ή αντικειμενικού κώδικα) Μέρος τέτοιας ανάλυσης γίνεται σήμερα από τον μεταγλωττιστή, π.χ., unreachable code, variable-notused, κτλ. (παλαιότερο από άλλα εργαλεία, π.χ, lint) Σε αρκετά πεδία απαιτούνται σήμερα τυπικές μέθοδοι (formal methods) οι οποίες αποδεικνύουν με μαθηματικό τρόπο ότι ένα λογισμικό ανταποκρίνεται στις απαιτήσεις. (π.χ., έλεγχος μοντέλων, λογισμικό για ιατρικούς, πυρηνικούς σκοπούς,) 16-31
30 Ανάλυση Κώδικα στη JAVA με JProfiler To αντίστοιχο εργαλείο JProfiler για δυναμική ανάλυση προγραμμάτ ων JAVA 16-32
31 Δυναμική Ανάλυση Κώδικα (Dynamic Code Analysis) Δυναμική Ανάλυση Κώδικα (Dynamic Code Analysis): Η ανάλυση ενός κώδικα MEΣΩ εκτέλεσης του προγράμματος σε ένα πραγματικό ή νοητό επεξεργαστή Κατά την εκτέλεση καταγράφονται στοιχεία για το πρόγραμμα (π.χ., χρήση μνήμης, επεξεργαστή, κτλ) Το αποτέλεσμα αυτής της ανάλυσης επιτρέπει στον χρήστη να εντοπίσει: Διαρροή Μνήμης (Memory Leaks) Χρόνος Συναρτήσεων, Απαίτηση Πόρων, κτλ
32 Δυναμική Ανάλυση Κώδικα (Dynamic Code Analysis) Χρόνος Συναρτήσεων με gprof (βλέπε Εργαστήριο) gcc prog.c -pg -o prog; 80% του χρόνου! gprof bc prog 11.6 seconds* * Οι χρόνοι καταγράφονται κάνοντας δειγματοληψία το πρόγραμμα σε διαφορετικά χρονικά σημεία
33 Δυναμική Ανάλυση Κώδικα (Dynamic Code Analysis) Εντοπισμός Διαρροών Μνήμης (Memory Leaks) με valgrind (βλέπε Εργαστήριο) valgrind --tool=memcheck --leak-check=full --show-reachable=yes --numcallers=20 --track-fds=yes./test * Εκτέλεση σε νοητό επεξεργαστή 16-35
34 Ανάλυση Κώδικα στο Eclipse (To linuxtools plugin) Κάνοντας install τα "linuxtools" στο Eclipse CDT μας δίνει την ευκαιρία χρήση του GProf, Valgrind και άλλων εργαλείων απευθείας από το eclipse CDT
Διάλεξη 17: Έλεγχος Λογισμικού
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 17: Έλεγχος Λογισμικού (Κεφάλαιο 24.1-24.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 17-1 Μεγάλης
Διάλεξη 17: Έλεγχος Λογισµικού
Τµήµα Πληροφορικής Πανεπιστήµιο Κύπρου ΕΠΛ132 Αρχές Προγραµµατισµού II Διάλεξη 17: Έλεγχος Λογισµικού (Κεφάλαιο 24.1-24.2, KNK-2ED) Δηµήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 17-1 Μεγάλης
Διάλεξη 16: Σχεδίαση Λογισμικού
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 16: Σχεδίαση Λογισμικού (μέρος: Κεφάλαια 19.1-19.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 16-1
ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT)
Τύπος Δεδομένων: ΑΦAΙΡΕΤΙΚΟΣ (ή ΑΦΗΡΗΜΕΝΟΣ) ΤΥΠΟΣ ΔΕΔΟΜΕΝΩΝ (ΑΤΔ) (Abstract Data Type-ADT) - σύνολο δεδομένων (data, objects) - σύνολο πράξεων στα δεδομένα - Ένας ΑΤΔ είναι ένα μαθηματικό μοντέλο (οντότητα)
Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα. Προγραμματισμός II 1
Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα Προγραμματισμός II 1 lalis@inf.uth.gr Χρήση λογισμικού που ήδη υπάρχει Τα πολύπλοκα συστήματα αναπτύσσονται σταδιακά, «χτίζοντας» πάνω σε υπάρχουσα λειτουργικότητα
Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C
Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C Δυσκολία: Προγράμματα που λύνουν «πραγματικά προβλήματα» μπορεί να είναι μεγάλα (χιλιάδες ή εκατομμύρια γραμμές κώδικα). Κανείς δεν
Η γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1
Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων Προγραμματισμός II 1 lalis@inf.uth.gr Βιβλιοθήκες Τμήματα λογισμικού ευρύτερης χρησιμότητας που έχουν σχεδιαστεί με σκοπό να διευκολύνουν την ανάπτυξη πολλών διαφορετικών
Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε
ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα
Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων Modularity, Information Hiding and Abstract Data Types. υσκολία: Προγράµµατα που λύνουν «πραγµατικά προβλήµατα µπορεί να είναι µεγάλα (εκατοµµύρια
Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 9: Στοίβες:Υλοποίηση & Εφαρμογές Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις Εφαρμογή
Δομημένος Προγραμματισμός
Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 1: Εισαγωγή Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά Το έργο
Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a
(programming interfaceή/και application programming interface API).
Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 21: Μεταγλώττιση και σύνδεση πολλαπλών αρχείων κώδικα - Βιβλιοθήκες Επαναχρησιµοποίηση κώδικα Μεγάλο «στοίχηµα» στην βιοµηχανία λογισµικού. Ιδανικά, δεν χρειάζεται να ξαναγράψουµε
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού
Διάλεξη 11: Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 11: Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία (Κεφάλαιο 15.1-15.2, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132
Προγραμματισμός Ι. Πολλαπλά Αρχεία. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Πολλαπλά Αρχεία Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πολλαπλά Αρχεία Όταν γράφουμε μεγάλα προγράμματα θέλουμε να έχουμε ανεξάρτητα κομμάτια κώδικα
Περιεχόμενα. Πρόλογος... 17
Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για
Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -
Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 13-1 Περιεχόμενο
Κεφάλαιο 2.3: Προγραμματισμός. Επιστήμη ΗΥ Κεφ. 2.3 Καραμαούνας Πολύκαρπος
Κεφάλαιο 2.3: Προγραμματισμός 1 2.3.1 Αναφορά σε γλώσσες προγραμματισμού και «Προγραμματιστικά Υποδείγματα» 2.3.1.1 Πρόγραμμα και Γλώσσες Προγραμματισμού Πρόγραμμα: σύνολο εντολών που χρειάζεται να δοθούν
Η γλώσσα προγραμματισμού C
Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως
Προγραμματισμός ΙΙ Εαρινό εξάμηνο Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους
Εργασία 3 Βιβλιοθήκη για λειτουργίες σε γράφους Αναπτύξτε μια βιβλιοθήκη για την δημιουργία / διαχείριση γράφων και την υποστήριξη βασικών λειτουργιών αναζήτησης σε αυτούς. Η βιβλιοθήκη πρέπει να υποστηρίζει
Κεφάλαιο 2.1-2.4: Εισαγωγή στην C: (Διαλέξεις 3-4)
Κεφάλαιο 2.1-2.4: Εισαγωγή στην C (Διαλέξεις 3-4) Περιεχόμενα Εισαγωγή στην C: Σύνταξη και Σημασιολογία σχόλια μεταβλητές και σταθερές τύποι δεδομένων Μετά αυτές τις δυο διαλέξεις θα μπορείτε να γράψετε
Διάλεξη 12: Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία ΙΙ
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 12: Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία ΙΙ (Κεφάλαια 15.2-15.4 &14.1,14.2,14.4, KNK2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132
Ανάπτυξη και Σχεδίαση Λογισμικού
Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός
ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0. Σόλωνος 108,Τηλ Φαξ
ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) ADVANCED αντικειμενοστραφής προγραμματισμός ΕΚΔΟΣΗ 1.0 ΤΙ ΕΙΝΑΙ ΤΟ ADVANCED Οι Advanced θεματικές ενότητες είναι κατάλληλες για άτομα που επιθυμούν να συνεχίσουν σπουδές στο χώρο
Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7
Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη Εισαγωγικά
Εισαγωγή. Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής
Εισαγωγή Διαλέξεις στο μάθημα: Μεταφραστές Γιώργος Μανής Μεταγλωττιστής Αρχικό πρόγραμμα (source program) Μεταγλωττιστής Τελικό πρόγραμμα (object program) Διαγνωστικά μηνύματα Μεταγλωττιστής Παίρνει σαν
Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1
Κεφάλαιο 6 ο Εισαγωγή στον Προγραμματισμό 1 Ποιες γλώσσες αναφέρονται ως φυσικές και ποιες ως τεχνητές; Ως φυσικές γλώσσες αναφέρονται εκείνες οι οποίες χρησιμοποιούνται για την επικοινωνία μεταξύ ανθρώπων,
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι
Εργαστήριο 02: Προγραμματισμός με Γενικούς Τύπους (JAVA Generics) ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Generic Types Τα Generics έχουν προστεθεί στη JAVA από το 2004 ως μέρος του J2SE 5.0 Με τη χρήση
Προεπεξεργαστής C. Προγραμματισμός Ι 1
Προεπεξεργαστής C Προγραμματισμός Ι lalis@inf.uth.gr 1 Βασική ιδέα Ο προεπεξεργαστής (pre-proccesor) της C είναι ένα πρόγραμμα που εκτελείται και μετασχηματίζει τον πηγαίο κώδικα πριν αυτός δοθεί στον
ΚΕΦΑΛΑΙΟ 6. Περιβάλλοντα Ανάπτυξης Εφαρμογών. ΚΕΦΑΛΑΙΟ 6 Περιβάλλοντα Ανάπτυξης Εφαρμογών. Α Γενικού Λυκείου
49 Διδακτικές ενότητες 6.1 Γλώσσες και εργαλεία προγραμματισμού 6.2 Σύγχρονα προγραμματιστικά περιβάλλοντα Διδακτικοί στόχοι Σκοπός του κεφαλαίου είναι οι μαθητές να κατανοήσουν την ανάγκη ύπαρξης τόσο
Προγραμματισμό για ΗΜΥ
ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 3 Εισαγωγή στην C Θέματα ιάλεξης Σύνταξη και Σημασιολογία
Μεθόδων Επίλυσης Προβλημάτων
ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος
Προγραμματισμός Η/Υ 1 (Εργαστήριο)
Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες
Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ
Διάλεξη 2:Αλφαριθμητικές Σειρές Χαρακτήρων (Strings)- Επανάληψη Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγικές Έννοιες σε Strings(Αρχικοποίηση, Ανάγνωση & Εκτύπωση) Πίνακες από Strings
CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -
CE121 Προγραµµατισµός 2 Εισαγωγή σε Makefiles 1 Η διαδικασία µεταγλώττισης myprog.c gcc myprog 2 Η διαδικασία µεταγλώττισης myprog.c preprocessor (cc1) /tmp/cczxt.i assembler (as) compiler (cc1) /tmp/cczxt.o
Εισαγωγή ΕΙΣΑΓΩΓΗ. Γεώργιος Παπαϊωάννου ( )
ΕΙΣΑΓΩΓΗ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Εισαγωγή στη C++ Ιστορικά στοιχεία για τη C/C++ Ένα βασικό πρόγραμμα Μεταγλώττιση ενός προγράμματος Τελευταία ενημέρωση: Σεπτέμβριος 2016
make Προγραμματισμός II 1
make Προγραμματισμός II 1 lalis@inf.uth.gr myprog.c preprocessor (cc1) /tmp/cczxt.i assembler (as) compiler (cc1) /tmp/cczxt.o /tmp/cczxt.s linker (ld) myprog Προγραμματισμός II 2 lalis@inf.uth.gr Δοκιμάστε
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Μεταφραστές Εισαγωγή Διδάσκων: Επικ. Καθ. Γεώργιος Μανής Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό
Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 1: Εισαγωγικές Έννοιες
Δομές Δεδομένων και Τεχνικές Προγραμματισμού Ενότητα 1: Εισαγωγικές Έννοιες Ιωάννης Κοτρώνης Σχολή Θετικών Επιστημών Τμήμα Πληροφορικής και Τηλεπικοινωνιών Σκοποί ενότητας Να εισάγει βασικές έννοιες, όπως
ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C
ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C Στο εργαστήριο αυτό, θα ασχοληθούμε με δύο προγραμματιστικά περιβάλλοντα για τη γλώσσα C: τον gcc μεταγλωττιστή της C σε περιβάλλον
Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας
ΕΡΓΑΣΙΑ 2 Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας Εισαγωγή Ημερομηνία Ανάρτησης: 16/02/2017 Ημερομηνία Παράδοσης: 06/03/2017,
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία (Κεφάλαιο , KNK-2ED)
ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Οργάνωση Προγραμμάτων σε Πολλαπλά Αρχεία (Κεφάλαιο 15.1-15.2, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι
ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι κ. ΠΕΤΑΛΙΔΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ 1 Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται
ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ. Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος.
ΚΑΤΑΝΟΗΣΗ ΑΝΑΛΥΣΗ ΕΠΙΛΥΣΗ Ο προγραμματισμός ασχολείται με το σύνολο των εντολών που δίνονται στον υπολογιστή ώστε να υλοποιείται ο αλγόριθμος 1 2 3 Εικόνα 43: Διάφορες πλακέτες υπολογιστών Μέσα σε δύο
Επανάληψη για τις Τελικές εξετάσεις
Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)
Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) Pascal- Εισαγωγή Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, όπως έχει ήδη αναφερθεί, τρία εξίσου
Ηλεκτρονικοί Υπολογιστές
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 1: Βασικά Στοιχεία της C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative
Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος
ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),
Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ
Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε
Εισαγωγή στον Προγραμματισμό
Εισαγωγή στον Προγραμματισμό 6.1 Η έννοια του προγράμματος Η επίλυση ενός προβλήματος με τον υπολογιστή περιλαμβάνει, τρία σημαντικά στάδια: 1. Τον ακριβή προσδιορισμό του προβλήματος. 2. Την ανάπτυξη
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large)
Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (Programming in the large) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Εξωτερικές µεταβλητές Κανόνες εµβέλειας ιάρκεια µεταβλητών Αρχικοποίηση
Εργαστήριο Λειτουργικών Συστημάτων. Minix Overview
Εργαστήριο Λειτουργικών Συστημάτων Minix Overview Σύνοψη 5ης ιάλεξης Λειτουργικό Σύστημα Minix Οργάνωση του Λειτουργικού Συστήματος Οργάνωση πηγαίου κώδικα Minix recompilation Σύνοψη Μαθήματος Σύνοψη Μαθήματος
Διάλεξη 22η: Επιπλέον στοιχεία της C
Διάλεξη 22η: Επιπλέον στοιχεία της C Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Extra CS100, 2018-2019 1 / 11 Οργάνωση του κώδικα Ένα πρόγραμμα
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ
ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κεφάλαιο 2 Επιμέλεια: Βασίλης Παλιουράς, Αναπληρωτής Καθηγητής Ευάγγελος Δερματάς, Αναπληρωτής Καθηγητής Σταύρος Νούσιας, Βοηθός Ερευνητή Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών
8. Μέθοδοι (Methods)
8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και
Μαλούτα Θεανώ Σελίδα 1
ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΑΡΧΕΣ ΤΗΣ ΕΠΙΣΤΗΜΗΣ ΤΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Α. ΕΡΩΤΗΣΕΙΣ ΘΕΩΡΙΑΣ ΦΥΛΛΑΔΙΟ 6 ο ( Ενότητες 2.3 ) 1.Τι είναι πρόγραμμα; 2. Ποια είναι τα πλεονεκτήματα των γλωσσών υψηλού επιπέδου σε σχέση με τις γλώσσες
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr
Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην
Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές)
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 10: Δομές Δεδομένων Ι (Στοίβες & Ουρές) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 10-1 Περιεχόμενο Διάλεξης
Αντικειμενοστρεφής Προγραμματισμός
Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Περιεχόμενα Java Classes Java Objects Java
Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες
ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Κυκλικές Απλά Συνδεδεμένες Λίστες - Κυκλικές Διπλά Συνδεδεμένες
Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Κ08 Δομές Δεδομένων και Τεχνικές Προγραμματισμού Διδάσκων: Μανόλης Κουμπαράκης Εαρινό Εξάμηνο 2016-2017. Άσκηση 1 (ανακοινώθηκε στις 20 Μαρτίου 2017, προθεσμία παράδοσης: 24 Απριλίου 2017, 12 τα μεσάνυχτα).
Κεφάλαιο 2.1-2.4: Εισαγωγή στην C. ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 2.1-2.4: Εισαγωγή στην C ( ιαλέξεις 3-4) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Περιεχόµενα Εισαγωγή στην C: Σύνταξη και Σηµασιολογία σχόλια µεταβλητές και σταθερές τύποι δεδοµένων Μετά αυτές τις δυο διαλέξεις
Προγραμματισμός Ι. Δομές Δεδομένων. Δημήτρης Μιχαήλ. Ακ. Έτος Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο
Προγραμματισμός Ι Δομές Δεδομένων Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Δομές Δεδομένων Μια δομή δεδομένων είναι μια συλλογή δεδομένων με κάποιες
Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών
Συμβολική γλώσσα Εκπαιδευτικού Υπολογιστή - Λογισμικό Υπολογιστών Πρόγραμμα σε γλώσσα μηχανής του ΕΚΥ Θέση μνήμης Περιεχόμενα μνήμης Εντολή (assembly) 0 0001 000000000011 lda 3 1 0011 000000000100 ada
Διάλεξη 9: Δυναμική Δέσμευση Μνήμης
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 9: Δυναμική Δέσμευση Μνήμης (Κεφάλαιο 17.1-17.4, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 9-1
Αντικειμενοστρεφής Προγραμματισμός
ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΙΚΑ ΜΑΘΗΜΑΤΑ Αντικειμενοστρεφής Προγραμματισμός Ενότητα 15: Σχεδίαση Εφαρμογών Γρηγόρης Τσουμάκας, Επικ. Καθηγητής Άδειες Χρήσης Το παρόν εκπαιδευτικό
ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ
Κεφάλαιο 7 ΕΙΔΗ,ΤΕΧΝΙΚΕΣ ΚΑΙ ΠΕΡΙΒΑΛΛΟΝΤΑ ΠΡΟΓΡΑΜΜΑΤΙ- ΣΜΟΥ Ερωτήσεις 1. Να αναφέρετε διαφορές μεταξύ γλωσσών μηχανής και γλωσσών χαμηλού επιπέδου. Οι γλώσσες μηχανής κωδικοποιούν τις εντολές τους με ομάδες
Περιεχόμενα. Πρόλογος... 21
Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31
Πληροφορική 2. Γλώσσες Προγραμματισμού
Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση
Ενότητα 13. Εισαγωγή στην Πληροφορική. Κεφάλαιο 13Α. Αρχεία. Χειµερινό Εξάµηνο ρ. Παναγιώτης Χατζηδούκας (Π..407/80) προγραµµατισµός
Ενότητα 13 Εισαγωγή στην Πληροφορική Χειµερινό Εξάµηνο 2006-07 Προγραµµατισµός Κεφάλαιο 13Α: ηµιουργία Προγραµµάτων Υπολογιστή Κεφάλαιο 13Β: Γλώσσες Προγραµµατισµού και η ιαδικασία Προγραµµατισµού ρ. Παναγιώτης
Διδάσκων: Παναγιώτης Ανδρέου
Διάλεξη 10: Στοίβες:Υλοποίηση& Εφαρμογές Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση Στοιβών με Δυναμική Δέσμευση Μνήμης - Εφαρμογή Στοιβών 1: Αναδρομικές συναρτήσεις - Εφαρμογή
Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων
Δομημένος Προγραμματισμός Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός
Προγραμματισμός Υπολογιστών με C++
Προγραμματισμός Υπολογιστών με C++ 1η διάλεξη (2012-13) Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Γιατί να μάθει κανείς C++; Απαιτούμενο προσόν για πολλές θέσεις εργασίας. Υψηλού επιπέδου προγραμματισμός.
Λογισµικό (Software SW) Γλώσσες
Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής
ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ
Καθηγητής Πληροφορικής ΠΕ19 1 ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΚΕΦΑΛΑΙΟ 6 ο : ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΙΣΤΟΣΕΛΙΔΑ ΜΑΘΗΜΑΤΟΣ: http://eclass.sch.gr/courses/el594100/ Η έννοια του προγράμματος
Προγραμματισμός Ι (ΗΥ120)
Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας
Τι σημαίνει; n Για την αποδοτική δέσμευση δομών δεδομένων μη. n Για την αποφυγή «διαρροών μνήμης» (memory leaks).
Δέσμευση Μνήμης (memory allocatio) Τι σημαίνει; Διαχείριση Μνήµης Ο καλός προγραμματισμός επιβάλλει την αποδοτική χρήση της μνήμης του Η/Υ. Είναι σημαντικό να καταλαβαίνουμε τις διαδικασίες δέσμευσης μνήμης:
Προγραμματισμός Συστημάτων
MYY502 Προγραμματισμός Συστημάτων Β. Δημακόπουλος dimako@cse.uoi.gr http://www.cse.uoi.gr/~dimako Εργαστήρια Μάλλον (!) ξεκινούν την επόμενη εβδομάδα Εγγραφές στο εργαστήριο 2 βάρδιες, 15:00 17:00 και
Λειτουργικά Συστήματα (Λ/Σ)
Λειτουργικά Συστήματα (Λ/Σ) Βασικές Έννοιες Λειτουργικών Συστημάτων Βασίλης Σακκάς 13/11/2013 1 ΒασικέςΈννοιεςΛ/Σ Η επικοινωνία μεταξύ Λ/Σ και των προγραμμάτων του χρήστη γίνεται μέσω του συνόλου των «εκτεταμένων
B. Ενσωμάτωση Ιθαγενών Μεθόδων
B. Ενσωμάτωση Ιθαγενών Μεθόδων Στο τέλος αυτού του κεφαλαίου θα μπορείτε: Να δημιουργείτε κώδικα Java που θα φορτώνει βιβλιοθήκες και θα καλεί ιθαγενείς μεθόδους (native methods). Να χρησιμοποιείτε τη
Διάλεξη 6: Δείκτες και Πίνακες
Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ευάγγελος Γ. Ούτσιος Θεόδωρος Γ. Λάντζος Διάλεξη Νο2-Νο3 1 Κανόνες Ομαλής Λειτουργίας Ερχόμαστε στην ώρα μας Δεν καπνίζουμε και τρώμε εντός της αίθουσας Επιτρέπετε το
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών
ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών Ακαδηµαϊκό έτος 2010 2011, Χειµερινό εξάµηνο Ασκήσεις Επανάληψης Ενδιάµεσης
Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο
Εισαγωγή στο Bison Μεταγλωττιστές, Χειμερινό εξάμηνο 2016-2017 Συντακτική Ανάλυση Αποτελεί την δεύτερη φάση της μετάφρασης. Εύρεση της σχέσης που υπάρχει των λεκτικών μονάδων ενός προγράμματος. Παράδειγμα
Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε
Δομημένος Προγραμματισμός
ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Δομημένος Προγραμματισμός Ενότητα: Συναρτήσεις θεωρία Δ. Ε. Μετάφας Τμ. Ηλεκτρονικών Μηχ. Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό
Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 6 C & Assembly
Προηγμένοι Μικροεπεξεργαστές Εργαστήριο 6 C & Assembly Real World Situation Στον πραγματικό κόσμο, κανείς δεν γράφει αποκλειστικά assembly Κουραστικό Δύσκολα συντηρήσιμος κώδικας Μηδενική φορητότητα Μεγάλη
Βασικές Αρχές Προγραμματισμού
Βασικές Αρχές Προγραμματισμού Κεφάλαιο 2 ΗγλώσσαC Ιστορική Αναδρομή ΗανάπτυξητηςC ξεκίνησε το 1972 στα εργαστήρια Bell από τον Dennis Ritchie με σκοπό την ανάπτυξη ενός λειτουργικού συστήματος για τον
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ
Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (
alpha Language age (3/5) alpha Language Φροντιστήριο Syntax Directed Translation and
alpha Language (1/5) ΗΥ-340 Γλώσσες και Μεταφραστές Φροντιστήριο Syntax Directed Translation and alpha Language Στην alpha δεν υπάρχει main() συνάρτηση, ο κώδικας ξεκινάει την εκτέλεση από την αρχή του
Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή
Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή Δημιουργία Νέου αρχείου Από το μενού προγραμμάτων ανοίγετε το DEV C++ Επιλέγετε File-> New-> Source File (συντόμευση πληκτρολογίου Ctrl+N)
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07
ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 8 & 9 18/10/07 Αλγόριθμος: Βήμα προς βήμα διαδικασία για την επίλυση κάποιου προβλήματος. Το πλήθος των βημάτων πρέπει να είναι πεπερασμένο. Αλλιώς: Πεπερασμένη
Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.
Διάλεξη 11: Φροντιστήριο για Στοίβες Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1 ΑΤΔ Στοίβα- Πράξεις Θυμηθείτε τον ΑΤΔ στοίβα με τις πράξεις του: MakeEmptyStack()
Προγραμματισμός Η/Υ (ΤΛ2007 )
Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15
ΕΠΛ233 Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA
Βιβλιοθήκες και Προσδιοριστές Πρόσβασης στην JAVA 2 «Μονάδα Μετάφρασης» 2 «Μονάδα Μετάφρασης» Όταν δημιουργείται ένα αρχείο πηγαίου κώδικα στην Java, το αρχείο καλείται µονάδα µετάφρασης (compilation unit)
Δοκιμή και Αποσφαλμάτωση Testing and Debugging
Δοκιμή και Αποσφαλμάτωση Testing and Debugging XVI-1 Ο μεταγλωττιστής εντοπίζει τα συντακτικά λάθη ενός προγράμματος. Δεν είναι όμως σε θέση να εντοπίσει λάθη στη λογική του προγράμματος. δεδομένα πρόγραμμα