ΣΥΝΑΡΤΗΣΕΙΣ. Διαφάνειες από τους Robert Sedgewick και Kevin Wayne

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΣΥΝΑΡΤΗΣΕΙΣ. Διαφάνειες από τους Robert Sedgewick και Kevin Wayne"

Transcript

1 ΣΥΝΑΡΤΗΣΕΙΣ 1

2 Θεμελιώδη για Προγραμματισμό Οποιοδήποτε πρόγραμμα το οποίο θα θέλεις να γράψεις αντικείμενα Συναρτήσεις και ενότητες γραφικά, ήχος, και εικόνα Ε/Ε Για δημιουργία μεγαλύτερων προγραμμάτων και επαναχρησιμοποίηση κώδικα συστοιχίες Συνθήκες and επαναλήψεις Μαθηματικά Κείμενο Ε/E Αρχέγονοι τύποι δεδομένων Προτάσεις ανάθεσης 2

3 Τι είναι οι Συναρτήσεις; x y z f f (x, y, z)

4 Τι είναι οι Συναρτήσεις; Επικοινωνία με το υπόλοιπο πρόγραμμα Δέχονται ορίσματα Επιστρέφουν μια τιμή Απομονώνουν την επίλυση του υπο-προβλήματος Ιδανικά, δεν θέλουμε καμία άλλη επίδραση στο υπόλοιπο πρόγραμμα πέραν των παραπάνω 4

5 Συναρτήσεις (Στατικές Μέθοδοι) Java συνάρτηση Παίρνει καμία ή περισσότερες παραμέτρους εισόδου Επιστρέφει μία τιμή εξόδου Εφαρμογές Οι επιστήμονες χρησιμοποιούν μαθηματικές συναρτήσεις για να υπολογίσουν μαθηματικούς τύπους. Οι προγραμματιστές χρησιμοποιούν συναρτήσεις για να φτιάξουν αρθρωτά προγράμματα. Εσείς χρησιμοποιείτε συναρτήσεις και για τις δύο παραπάνω εφαρμογές. Παραδείγματα Ενσωματωμένες συναρτήσεις: Math.random(), Math.abs(), Integer.parseInt(). Οι Ε/Ε βιβλιοθήκες μας: StdIn.readInt(), StdDraw.line(), StdAudio.play(). Ορισμένες από το χρήστη συναρτήσεις: main(). 5

6 Πλεονεκτήματα των συναρτήσεων Περισσότερο αρθρωτός ο προγραμματισμός Σπάει το πρόγραμμα σε ξεχωριστές εργασίες Κάθε εργασία μπορεί να ανατεθεί σε διαφορετικό προγραμματιστή Επαναχρησιμοποίηση κώδικα Χρησιμοποίηση του κώδικα ξανά και ξανά Θα μπορούσε να είναι μία βιβλιοθήκη κώδικα (όπως η Math.sqrt()) Λιγότερη επικάλυψη κώδικα Βελτιωμένη αναγνωσιμότητα Κάθε συνάρτηση μπορεί να κάνει λίγες ξεκάθαρες εργασίες 6

7 Ανατομία μίας συνάρτησης Απαιτούμενη σύνταξη Τύπος απάντησης Τύπος 1 ης παραμέτρου Τύπος τελευταίας παραμέτρου public static type name(type arg1,,type argn) { statement1; statement2; statementm; Όνομα συνάρτησης Όνομα 1 ης παραμέτρου Όνομα τελευταίας παραμέτρου Κώδικας που γίνεται από τη συνάρτηση 7

8 Ένα απλό παράδειγμα Δίνοντας 2 ακεραίους, βρείτε τον μικρότερο ακέραιο. public static int min(int a, int b) { if( a < b ) return a; else return b; 8

9 Συναρτήσεις που επιστρέφουν τιμές Είναι δυνατόν να τις διαχωρίσουμε σε δύο τύπους: Οι συναρτήσεις που επιστρέφουν τιμές Κενές (void) συναρτήσεις Οι συναρτήσεις που επιστρέφουν μία τιμή επιστρέφουν μία απάντηση: int small = min(x, y); 9

10 Void μέθοδοι Οι κενές συναρτήσεις δηλώνονται με το void ως τύπο επιστροφής τους public static void help(int times) { for( int i = 1; i <= times; i++ ) Void methods just do something System.out.println( Help! ); If you try to save the value they give back, there will be an error return; 10

11 return δηλώσεις Στη Java, ο κώδικας μέσα σε μία συνάρτηση εκτελείται γραμμή προς γραμμή. Βέβαια, μπορεί κανείς να χρησιμοποιήσει υπό συνθήκη δηλώσεις και βρόγχους επανάληψης μέσα στις συναρτήσεις. Μπορεί επίσης να χρησιμοποιηθούν return δηλώσεις. Μία συνάρτηση θα σταματήσει την εκτέλεση και θα κάνει άλμα πίσω όπου και αν κλήθηκε η return. 11

12 Ροή Ελέγχου Σημείο κλειδί. Οι συναρτήσεις παρέχουν ένα νέο τρόπο για να ελέγχουν τη ροή εκτέλεσης. 12

13 Ροή Ελέγχου Σημείο κλειδί. Οι συναρτήσεις παρέχουν ένα νέο τρόπο για να ελέγχουν τη ροή εκτέλεσης. Σύνοψη του τι συμβαίνει όταν μία συνάρτηση καλείται: Ο έλεγχος μεταφέρεται στον κώδικα συνάρτησης. Στις μεταβλητές παραμέτρων ανατίθενται οι τιμές που δίνονται στην κλήση. Ο κώδικας της συνάρτησης εκτελείται. Η επιστρεφόμενη τιμή ανατίθεται στη θέση του ονόματος της συνάρτησης στου κώδικα που καλείται. Ο έλεγχος επιστρέφει πίσω στον καλούντα κώδικα. Σημείωση. Αυτό είναι γνωστό ως πέρασμα δια τιμής. 13

14 Καλώντας συναρτήσεις Θα πρέπει να καλεστούν οι συναρτήσεις για να χρησιμοποιηθούν. Καλώντας μία συνάρτηση σημαίνει ότι δίνεις σε μία μέθοδο τις παραμέτρους (ή ορίσματα) που χρειάζεται και στη συνέχεια αναμένεις την απάντηση. System.out.println() Math.sqrt() 14

15 Η σύνταξη της κλήσης Η σωστή σύνταξη για να καλεστεί μια στατική συνάρτηση είναι πρώτα το όνομα της κλάσης όπου η συνάρτηση ανήκει, μία τελεία, το όνομα της συνάρτησης, και στη συνέχεια οι παράμετροι. Εάν η συνάρτηση είναι στην ίδια κλάση καθώς ο κώδικας την καλεί, μπορείτε να αφήσετε έξω το Class. τμήμα Εάν η συνάρτηση επιστρέφει τιμή, μπορείτε να αποθηκεύσετε αυτή την τιμή στη μεταβλητή με τον κατάλληλο τύπο. Class.name(arg1, arg2, arg3); 15

16 Η Ανατομία μίας Java Συνάρτησης Java συναρτήσεις. Εύκολα μπορείτε να γράψετε και τη δικιά σας συνάρτηση. είσοδος f(x) = x έξοδος

17 Ορίσματα Πραγματικές Παράμετροι Arguments Actual Parameters Τιμές (values), οι οποίες μπορεί να διατυπωθούν ως οποιαδήποτε έκφραση π.χ. απόλυτη τιμή, μεταβλητή, κλήση συνάρτησης, κτλ που αποτιμάται σε τιμή συμβατή με τον τύπο της αντίστοιχης τυπικής παραμέτρου 17

18 Binding Μια μαγική διαδικασία που ονομάζεται δεσμευτική (binding) αντιγράφει τις τιμές από τον καλούντα κώδικα στις παραμέτρους της συνάρτησης Η κλήση του κώδικα μπορεί να χρησιμοποιήσει τις μεταβλητές με το ίδιο όνομα, με διαφορετικά ονόματα, ή ακόμα και κατά γράμμα (όπως 3 ή ) Η συνάρτηση δεν αλλάζει τις τιμές των μεταβλητών στον αρχικό κώδικα - Έχει μόνο αντίγραφα των τιμών 18

19 Αντιστοιχία Ορισμάτων με Παραμέτρους Τυπικές παράμετροι ή απλά παράμετροι αναφέρονται μία φορά, στον ορισμό της συνάρτησης Πραγματικές παράμετροι ή απλά ορίσματα αναφέρονται σε κάθε ξεχωριστή κλήση της συνάρτησης Η αντιστοιχία ανάμεσα σε ορίσματα και παραμέτρους είναι μία-προς-μία Συναρτήσεις με παραμέτρους είναι πιο χρήσιμες ευρύτερο πεδίο εφαρμογής γενικά χαρακτηρίζονται από υψηλότερη αυτοδυναμία 19

20 Αντιστοιχία Ορισμάτων με Παραμέτρους 1. Ο αριθμός ορισμάτων σε δεδομένη κλήση της συνάρτησης πρέπει να είναι ο ίδιος με τον αριθμό παραμέτρων στον ορισμό της συνάρτησης. 2. Η αντιστοιχία αποφασίζεται από τη σειρά των ορισμάτων. Το πρώτο όρισμα αντιστοιχεί στην πρώτη παράμετρο, το δεύτερο όρισμα στη δεύτερη παράμετρο, κτλ. 3. Ο τύπος κάθε ορίσματος πρέπει να είναι συμβατός προς τον τύπο της αντίστοιχης παραμέτρου, δηλαδή ο τύπος μπορεί να καταχωρηθεί στην εν λόγω παράμετρο, χωρίς την απροσδόκητη απώλεια πληροφορίας, π.χ. int μπορεί να ανατεθεί σε double χωρίς καθόλου απώλεια πληροφορίας, και double μπορεί να ανατεθεί σε int, με αναμενόμενη όμως την απώλεια των δεκαδικών ψηφίων. 20

21 Binding παράδειγμα int a = 10; int x = 3; int y = add( 5, a ); //το y περιέχει 15 τώρα public static int add(int x, int y){ int z = x + y; // return z; No connection between the two different x s and y s 21

22 public static double cyl_volume (double area, double height) { ροή πληροφοριών cyl_volume(3.0, 5.0) Οι παράμετροι area και height λαμβάνουν σάρκα και οστά από τα ορίσματα 3.0 και 5.0 αντιστοίχως. Τα εν λόγω ορίσματα είναι τιμές πέρασμα δια τιμής (call by value) 22

23 Πέρασμα δια τιμής radius height cyl_volume double res = cyl_volume (3.0, 5.0); res Οι τιμές αντιγράφονται τοπικά, δηλαδή σε χώρο που ανήκει στην εν λόγω ενεργοποίηση της συνάρτησης radius height cyl_volume

24 double r = 3.0, h = 5.0; h 5.0 r 3.0 cyl_volume(r, h); radius height cyl_volume ? 24

25 Εμβέλεια Οι μεταβλητές από έξω από τη μέθοδο δεν υπάρχουν εάν δεν έχουν περαστεί ως παράμετροι. Ανεξάρτητα με το πόσο πολύπλοκο είναι ένα πρόγραμμα, μέσα στη συνάρτηση μόνο οι x, y, και z μεταβλητές υπάρχουν public static int add(int x, int y) { int z = x + y; return z; 25

26 Εμβέλεια Εμβέλεια (ενός ονόματος). Ο κώδικας ο οποίος αναφέρεται σε αυτό το όνομα. Π.χ. Η εμβέλεια μίας μεταβλητής είναι ο κώδικας που ακολουθεί τη δήλωση στο μπλοκ. 2 διαφορετικές μεταβλητές με το ίδιο όνομα i public class Newton { public static double sqrt(double c) { double epsilon = 1e-15; if (c < 0) return Double.NaN; double t = c; while (Math.abs(t - c/t) > epsilon * t) t = (c/t + t) / 2.0; return t; public static void main(string[] args) { double[] a = new double[args.length]; for (int i = 0; i < args.length; i++) a[i] = Double.parseDouble(args[i]); for (int i = 0; i < a.length; i++) { double x = sqrt(a[i]); StdOut.println(x); Η εμβέλεια της c Η εμβέλεια του epsilon Η εμβέλεια του t Η εμβέλεια του a Η καλύτερη πρακτική: δηλώστε μεταβλητές για να περιορίσετε την εμβέλεια τους. 26

27 Κανόνες Ξεκινά η συνάρτηση με λέξεις κλειδιά public static. Μετά έρχεται ο τύπος επιστροφής. Μετά το όνομα της συνάρτησης. Μετά, σε παρενθέσεις, τα ορίσματα που θα δοθούν στη συνάρτηση. Μέσα στις αγκύλες, μπαίνει το σώμα της συνάρτησης. Περιέχει μία return δήλωση η οποία επιστρέφει μία τιμή με βάση τον τύπο της συνάρτησης. 27

28 Πρόκληση 1a Ερώτηση. Τι συμβαίνει όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα; public class Cubes1 { public static int cube(int i) { int j = i * i * i; return j; public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) StdOut.println(i + " " + cube(i)); % javac Cubes1.java % java Cubes

29 Πρόκληση 1β Ερώτηση. Τι συμβαίνει όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα; public class Cubes2 { public static int cube(int i) { int i = i * i * i; return i; public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) StdOut.println(i + " " + cube(i)); 29

30 Πρόκληση 1γ Ερώτηση. Τι συμβαίνει όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα; public class Cubes3 { public static int cube(int i) { i = i * i * i; public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) StdOut.println(i + " " + cube(i)); 30

31 Πρόκληση 1δ Ερώτηση. Τι συμβαίνει όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα; public class Cubes4 { public static int cube(int i) { i = i * i * i; return i; public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) StdOut.println(i + " " + cube(i)); 31

32 Πρόκληση 1ε Ερώτηση. Τι συμβαίνει όταν μεταγλωττίσετε και εκτελέσετε τον παρακάτω κώδικα; public class Cubes5 { public static int cube(int i) { return i * i * i; public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 1; i <= N; i++) StdOut.println(i + " " + cube(i)); 32

33 Απόσταση Η εύρεση της Ευκλίδειας μεταξύ 2 σημείων είναι πολύ σημαντική Υπάρχουν εφαρμογές : Σχεδιασμό δρόμων Λογισμικό για σχεδίαση γραφικών Video παιχνίδια d ) 2 ( ) ( x x y y 33

34 method euclid() No matter how complex a program is, inside this method, only x, y, and public static double euclid (double x1, z variables exist double x2, double y1, double y2) { double xsq = (x1-x2)*(x1-x2); double ysq = (y1-y2)*(y1-y2); double d = Math.sqrt(xsq+ysq); return d; 34

35 Παραδείγματα public static final double PI= ; /* Συνάρτηση για τον υπολογισμό του εμβαδού ενός κύκλου. */ public static double area (double radius) { return PI * radius * radius; radius 35

36 /* Συνάρτηση για τον υπολογισμό του όγκου ενός κυλίνδρου */ public static double cyl_volume (double radius, double height) { double vol; vol = PI * radius * radius * height; return vol; r h 36

37 /* Εναλλακτικοί ορισμοί */ public static double cyl_volume (double radius, double height) { double vol; vol = area(radius) * height; return vol; public static double cyl_volume (double radius, double height) { double vol = area(radius) * height; return vol; public static double cyl_volume (double radius, double height) { return area(radius) * height; 37

38 cyl-volume radius height area * cyl-volume area * Γράφος εξαρτήσεων (dependency graph) 38

39 Ολόκληρο το Πρόγραμμα public class program { public static final PI= ; /* Πρωτότυπα Συναρτήσεων */ public static double area (double radius); public static double cyl_volume (double radius, double height); public static void main(string[] args){ System.out.println ( Δώσε την ακτίνα και το ύψος του κυλίνδρου: ); r = double.parseint(args[0]); h = double.parseint(args[1]); System.out.println( Εμβαδόν = + area(r)+ Όγκος = + cyl_volume(r,h)); public static double area (double radius) { return PI * radius * radius; public static double cyl_volume (double radius, double height) { return area(radius) * height; 39

40 Δώσε την ακτίνα και μετά το ύψος του κυλίνδρου: Εμβαδόν = Όγκος = Σχολιάστε το πρόγραμμα από τη σκοπιά της επαλήθευσης των δεδομένων (input validation) 40

41 Το παιχνίδι της ζωής του Conway Ένα κελί αναπαρίσταται από ένα μπλοκ σε ένα πλέγμα Κάθε κελί έχει 8 γείτονες Απλοί κανόνες για ένα κελί όταν έρχεται στη ζωή ή όταν πεθαίνει : Ένα ζωντανό κελί με λιγότερους από 2 ζωντανούς γείτονες πεθαίνει από μοναξιά. Ένα ζωντανό κελί με περισσότερους από 3 ζωντανούς γείτονες πεθαίνει από υπερπληθυσμό. Ένα ζωντανό κελί με ακριβώς 2 ή 3 ζωντανούς γείτονες παραμένει ζωντανό. Ένα νεκρό κελί με ακριβώς 3 ζωντανούς γείτονες έρχεται στη ζωή. 41

42 method conway() public static void conway (int[][] cell, int m, int n) No matter how complex a program is, inside this method, only x, y, and { z variables exist int live = 0; for (int i=m-1; i<=m+1; i++) { for (int j=n-1; j<=n+1; j++) { if (cell(i,j)==1) live++; 42

43 method conway() if (cell(m,n)==1) { live--; z variables exist if (live < 2 live > 3) cell(m,n) = 0; else { if (live == 3) cell (m,n) = 1; return; No matter how complex a program is, inside this method, only x, y, and 43

44 Παράδειγμα: Υπολογισμός τετραγωνικών ριζών με τη μέθοδο του Νεύτωνα Είσοδος: x, πραγματικός αριθμός Έξοδος: x, εάν x 0.0, διαφορετικά μήνυμα λάθους Σταθερά ακρίβειας προσέγγισης epsilon 1e-15 Εάν x 0.0 y x Ενόσω ( x y 2 epsilon) επανέλαβε y (y + x / y) / 2.0 Εκτύπωσε (y) Διαφορετικά εκτύπωσε μήνυμα λάθους 44

45 public class Sqrt { public static void main (String[] args) { double epsilon = 1e-15; double x = Double.parseDouble(args[0]); double y = x; if (x >= 0.0){ while (Math.abs(x y * y) > epsilon) y = (y + x / y) / 2.0; System.out.println(y); else System.out.println( ERROR: Negative Number ); % java Sqrt

46 /* Introducing Modularity */ public class Sqrt { public static double square (double x){ return x * x; public static boolean goodenough (double x, double y){ double epsilon = 1e-15; return Math.abs(x square(y)) <= epsilon; public static double nextapprox (double x, double y){ return (y + x / y) / 2.0; public static double sqrt (double x) { double y = x; while (!goodenough(x,y)) y = nextapprox(x,y); return y; public static void main (String[] args) { double x = Double.parseDouble(args[0]); if (x >= 0.0) System.out.println(sqrt(x)); else System.out.println( ERROR: Negative Number ); 46

47 Άρθρωση Διάσπαση Προβλήματος sqrt goodenough nextapprox Math.abs square 47

48 Γράφος Εξαρτήσεων main Δείχνει τις σχέσεις ανάμεσα στα τμήματα ενός προγράμματος ή ανάμεσα σε προγράμματα ή μεθόδους και βασικές εντολές = >=! sqrt Double.parseDouble System.out.println nextapprox goodenough + / Math.abs square * return 48

49 Εναλλακτικός Ορισμός της sqrt χρησιμοποιώντας for public static double sqrt(double x){ double y; for (y = x;!goodenough(x,y); y = nextapprox(x,y)); return y;

50 Παρένθεση: Η μέθοδος του Νεύτωνα υπολογίζει τη ρίζα δεδομένης συνάρτησης η οποία είναι συνεχής και παραγωγίσιμη γύρω από ένα δεδομένο σημείο, που αποτελεί την αρχική προσέγγιση της ρίζας Εάν το y είναι μία προσέγγιση στη ρίζα της συνάρτησης f, η έκφραση f(y) y = f (y) δίνει μία καλύτερη προσέγγιση 50

51 f(y) f(y) y o y o y o y o Εφαρμογή μεθόδου για τον υπολογισμό τετραγωνικών ριζών, x = y Η τετραγωνική ρίζα αντιστοιχεί στη ρίζα της συνάρτησης f(y) = y 2 x Συνεπώς, η επόμενη προσέγγιση υπολογίζεται ως y f(y) / f (y) = y (y 2 x) / 2y = (y + x / y) / 2 51

52 Εφαρμογή μεθόδου για τον υπολογισμό τριγωνικών ριζών, 3 x = y Η τριγωνική ρίζα αντιστοιχεί στη ρίζα της συνάρτησης f(y) = y 3 x Συνεπώς, η επόμενη προσέγγιση υπολογίζεται ως y f(y) / f (y) = y (y 3 x) / 3y 2 = (2y + x / y 2 ) / 3 52

53 /* Computing cube roots using Newton s method */ public class CubeRoots { public static double square (double x){ return x * x; public static double cube (double x){ return x * x * x; public static boolean goodenough (double x, double y){ double epsilon = 1e-15; return Math.abs(x cube(y)) <= epsilon; public static double nextapprox (double x, double y){ return (2*y + x / square(y)) / 3.0; public static double cuberoot (double x) { double y = x; while (!goodenough(x,y)) y = nextapprox(x,y); return y; public static void main (String[] args) { double x = Double.parseDouble(args[0]); System.out.println(cubeRoot(x)); 53

54 Συναρτήσεις Περαιτέρω Παραδείγματα: Δημιουργία Διακριτών Σχημάτων Ι-54

55 Παραδείγματα Διακριτών Σχημάτων ******************* ******************* *** *** *** *** *** *** *** *** ******************* ******************* * * ******** * * **** * * * * * * * ******* ***** * * * * * * * * * * * * * ******** ***** ***** **** 55

56 Προσοχή! Χρησιμοποιούμε γραμματοσειρά όπου χρησιμοποιείται ο ίδιος χώρος για την εκτύπωση κάθε χαρακτήρα, όπως δηλαδή σε μία γραφομηχανή (proportionally spaced), π.χ. Courier ή Courier New Ποιές είναι οι βασικές εντολές; «Εκτύπωσε *» System.out.print ( * ); «Εκτύπωσε space» System.out.print ( ); «Νέα γραμμή» System.out.println(); 56

57 Ποιά είναι η επίδραση μιας απλής εντολής όπως «Εκτύπωσε *»; Εξαρτάται από την κατάσταση πραγμάτων που ίσχυε πριν την εκτέλεση της εντολής. Διαγράμματα «Πριν-Μετά» HELLO Εκτύπωσε * HELLO* goodbye Πριν Εκτύπωσε * goodbye* Μετά HELLO Εκτύπωσε * Πριν HELLO * Μετά 57

58 Ποιά είναι η επίδραση μιας απλής εντολής όπως «Εκτύπωσε *»; Εξαρτάται από την Τρέχουσα Θέση Εκτύπωσης (Current Printing Position CPP ), η οποία ορίζει που θα εμφανιστεί το επόμενο σημάδι όταν πιεστεί κάποιο πλήκτρο ή όταν εκτελεστεί κάποια εντολή εκτύπωσης χαρακτήρα. HELLO Εκτύπωσε * HELLO* HELLO Εκτύπωσε * Πριν HELLO * Μετά { Εκτύπωσε * ; Εκτύπωσε * HELLO Εκτύπωσε * HELLO * Εκτύπωσε * HELLO ** Πριν Ενδιαμέσως Μετά 58

59 Πιο επακριβώς δίνεται και η τρέχουσα θέση εκτύπωσης (CPP ) { Εκτύπωσε * ; Εκτύπωσε * HELLO Εκτύπωσε * HELLO * Εκτύπωσε * HELLO ** Πριν Ενδιαμέσως Μετά Ορισμοί των επιδράσεων της εκτέλεσης των βασικών εντολών «Εκτύπωσε *» Εκτυπώνει ένα αστερίσκο (*) στη θέση CPP και μετακινεί τη CPP μία θέση στα δεξιά «Εκτύπωσε space» Μετακινεί τη CPP μία θέση στα δεξιά «Νέα γραμμή» Μετακινεί τη CPP κάτω μία γραμμή και στο αριστερό περιθώριο του χαρτιού/οθόνης 59

60 Υπολογίζοντας Ερμηνείες (Calculating Meanings) Γιατί οι ορισμοί των ερμηνειών (των εντολών) χρειάζεται να είναι τόσο ακριβείς; Το σημαντικό πλεονέκτημα που απορρέει είναι ότι έτσι μπορούμε να συμπεραίνουμε ή να υπολογίζουμε την επίδραση ενός προγράμματος χωρίς κατ ανάγκη να χρειάζεται να δοκιμάσουμε το πρόγραμμα στον υπολογιστή, αποφεύγοντας έτσι μεγάλη σπατάλη χρόνου σε δοκιμές και λάθη Ο συλλογισμός αυτός μπορεί να γίνει αφού ο υπολογιστής απλά ακολουθεί ηλιθιοδώς και στα τυφλά τις ίδιες ερμηνείες για να παράξει την επίδραση του προγράμματος 60

61 Υπολογίζοντας Ερμηνείες Ομαλές και Ανώμαλες Περιστάσεις Πόση λεπτομέρεια χρειάζεται για να μπορούν να θεωρούνται οι ορισμοί των ερμηνειών (των εντολών) ως ακριβείς; Για παράδειγμα, στην ερμηνεία της εντολής «Εκτύπωσε *» δεν γίνεται αναφορά στο δεξιό περιθώριο ή στο πλάτος του χαρτιού/οθόνης, κτλ Μία ερμηνεία είναι επαρκώς ακριβής αν καλύπτει τις «ομαλές» συνθήκες εκτέλεσης Μπορεί φυσικά να υπάρχουν και «ανώμαλες» περιστάσεις όπου η εκτέλεση μίας εντολής είναι μη εφαρμόσιμη και συνεπώς η συμπεριφορά είναι μη προβλέψιμη Οι υποθέσεις (assumptions) που προσδιορίζουν τις «ομαλές» συνθήκες εκτέλεσης (με άλλα λόγια προσδιορίζουν ένα ιδεατό αφηρημένο κόσμο στο πλαίσιο του οποίου μπορεί να εκτελεστεί ομαλά το πρόγραμμα) πρέπει να διατυπώνονται ρητά για να είναι οι ερμηνείες ολοκληρωμένες και ακριβείς 61

62 Διακριτά Σχήματα *** *** *** τετράγωνο public static void draw_square () {System.out.println();System.out.print( *** ); System.out.println();System.out.print( *** ); System.out.println();System.out.print( *** ); * ** *** τρίγωνο Α public static void draw_tria () {System.out.println();System.out.print( * ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( *** ); ** *** * τρίγωνο B public static void draw_trib () {System.out.println();System.out.print( * ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( *** ); 62

63 Περαιτέρω Διακριτά Σχήματα *** ** * τρίγωνο C public static void draw_tric () {System.out.println();System.out.print( *** ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( * ); *** ** * * ** *** *** ** * τρίγωνο D ένα σχήμα public static void draw_trid () {System.out.println();System.out.print( *** ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( * ); public static void draw_some_fig () {System.out.println();System.out.print( * ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( *** ); System.out.println();System.out.print( *** ); System.out.println();System.out.print( ** ); System.out.println();System.out.print( * ); public static void draw_some_fig () {draw_trib(); draw_trid(); 63

64 Σχεδιάζοντας «τετράγωνα» *** *** *** τετράγωνο public static void two_square () { draw_square(); draw_square(); *** *** *** *** *** *** public static void two_square() {draw_square (); new_draw_square(); public static void draw_square () {System.out.println(); System.out.print( *** ); System.out.println(); System.out.print( *** ); System.out.println(); System.out.print( *** ); Εναλλακτικός ορισμός για «τετράγωνο» public static void new_draw_square () {System.out.println( *** ); *** System.out.println( *** ); *** System.out.println( *** ); ****** *** *** Γιατί; 64

65 Διαγράμματα «Πριν-Μετά» square: square: draw_square(); *** *** *** new_draw_square(); square: *** *** *** 65

66 Διαγράμματα «Πριν-Μετά» square: *** draw_square(); *** *** square: square:*** new_draw_square(); *** *** 66

67 Πώς ξέρουμε ότι η draw_square() είναι ορθή; Σίγουρα ξέρουμε ότι η new_draw_square() δεν είναι ορθή διότι ένα και μοναδικό παράδειγμα λάθους αρκεί Ο μόνος τρόπος για να επιβεβαιωθεί η καθολική ορθότητα της draw_square() είναι μέσω κάποιας μαθηματικής απόδειξης της ορθότητάς της Υπάρχουν διάφοροι τρόποι συλλογισμού και απόδειξης ιδιοτήτων αναφορικά με προγράμματα, π.χ. Η αντικατάσταση μίας φόρμουλας με άλλη ισοδύναμη φόρμουλα μπορεί να αποτελέσει κανόνα για τον υπολογισμό της ερμηνείας μίας φόρμουλας 67

68 Άσκηση 1: Γράψτε συναρτήσεις για κάθε ένα από τα ακόλουθα σχήματα: ***** * * ***** * * * * * * * * * ***** ***** * * * * * * * ***** * * ***** ***** 68

69 Άσκηση 2: Χρησιμοποιήστε τις συναρτήσεις για να δημιουργήσετε το σχήμα: * * * * ***** * * * * ***** * ***** * ***** * * * * ***** * * * * ***** ***** * * * * * * ***** 69

70 Άσκηση 3: Μπορείτε να χρησιμοποιήστε τις συναρτήσεις που γράψατε στην Άσκηση 1 (χωρίς αλλαγές) για να δημιουργήσετε το ακόλουθο σχήμα; Ναι ή όχι και γιατί; * * ***** * * ***** * * * * * * * ***** ***** * * * * * * * * * * * * * ***** ***** ***** ***** 70

71 Περιορισμένη Λειτουργικότητα Με τις συναρτήσεις που αναπτύξαμε (draw_square, draw_tria, draw_trib, κτλ) μπορούμε να συνθέσουμε κάθετες αλυσίδες, αποτελούμενες από συνδυασμούς των συγκεκριμένων απλών σχημάτων. Όμως δεν μπορούμε: Να σχεδιάσουμε σχήματα αποτελούμενα από διαφορετικούς χαρακτήρες, π.χ

72 Περιορισμένη Λειτουργικότητα Δεν μπορούμε: Να σχεδιάσουμε σχήματα διαφορετικών μεγεθών, π.χ Να έχουμε οριζόντιες τοποθετήσεις σχημάτων, π.χ

73 ** o o + + $ $$$ **** oo oo $$ $$ ****** oooooo $$$$ ****** oooooo $$$$ **** oooo $$ $$ ** oo + + $$$ $ rombus kite butterfly windmill Διάσπαση και σύνθεση 73

74 Ανάγκη για Παραμετροποίηση Συναρτήσεων (Επεκτασιμότητα Αφαιρετικότητα) Για τη δημιουργία σχημάτων διαφορετικών μεγεθών και αποτελούμενων από διαφορετικούς χαρακτήρες απαιτείται η χρήση παραμέτρων: 1. Παράμετρο για το μέγεθος του σχήματος (size) 2. Παράμετρο για το γέμισμα του σχήματος (fill) size fill draw_square draw_square(4, o ); oooo oooo oooo oooo draw_square(1, x ); x draw_square(2, + );

75 Νέος ορισμός συνάρτησης draw_square Ποιά θα πρέπει να είναι η κύρια αλγοριθμική δομή; ακολουθία, επιλογή, επανάληψη; Διπλή Επανάληψη Εξωτερικός Βρόχος για κάθε σειρά Εσωτερικός Βρόχος για κάθε στήλη της σειράς Προσοχή! Κάθε βρόχος πρέπει να τερματίζει Ανάλυση περιπτώσεων 1. Βασικές περιπτώσεις, όπου η επανάληψη τερματίζεται (τετράγωνο 1x1) 2. Γενικές περιπτώσεις, όπου η επανάληψη συνεχίζεται αλλά σταδιακά οδηγεί σε τερματισμό της επεξεργασίας 75

76 /* Η παράμετρος size δίνει το μέγεθος του τετραγώνου, και η παράμετρος fill το χαρακτήρα που θα απαρτίζει το τετράγωνο. */ public static void draw_square (int size, char fill) { int row, col; row = 1; /* αρχίζοντας από την πρώτη σειρά */ while (row <= size) /* και επαναλαμβάνοντας για κάθε σειρά */ {System.out.println(); /* άρχισε καινούρια γραμμή */ col = 1; /* αρχίζοντας από την πρώτη στήλη της σειράς */ while (col <= size) /* και επαναλαμβάνοντας για κάθε στήλη της σειράς*/ {System.out.print(fill); col = col + 1; /* επόμενη στήλη */ row = row + 1; /* επόμενη σειρά */ 76

77 Ξετύλιγμα Επανάληψης σε Ακολουθία Μία εντολή επανάληψης ξετυλίγεται σε μία ακολουθία απλών εντολών draw_square(3, * ); System.out.println( *** ); System.out.println( *** ); System.out.println( *** ); System.out.println(); System.out.print( * ); System.out.print( * ); System.out.print( * ); System.out.println(); System.out.print( * ); System.out.print( * ); System.out.print( * ); System.out.println(); System.out.print( * ); System.out.print( * ); System.out.print( * ); 77

78 Συναρτήσεις για Τρίγωνα Πάλι διπλή επανάληψη, όπου υπάρχουν δύο εσωτερικές επαναλήψεις: 1. μία για τις στήλες της σειράς, που αποτελούνται από το χαρακτήρα fill, και 2. μία για τις στήλες που αποτελούνται από το χαρακτήρα (space). Όπως και προηγουμένως η εξωτερική επανάληψη είναι για τις σειρές Διπλή Επανάληψη Εξωτερικός Βρόχος για κάθε σειρά Εσωτερικός Βρόχος 1 για κάθε στήλη της σειράς που έχει το χαρακτήρα fill Εσωτερικός Βρόχος 2 για κάθε στήλη της σειράς που έχει το χαρακτήρα space 78

79 space CPP draw_tria(4, X ); X XX XXX XXXX draw_trib(5, I ); I II III IIII IIIII System.out.println(); System.out.print( x ); System.out.print( ); System.out.print( ); System.out.print( ); System.out.println(); System.out.print( x ); System.out.print( x ); System.out.print( ); System.out.print( ); System.out.println(); System.out.print( x ); System.out.print( x ); System.out.print( x ); System.out.print( ); System.out.println(); System.out.print( x ); System.out.print( x ); System.out.print( x ); System.out.print( x ); 79

80 space CPP draw_tric(4, $ ); $$$$ $$$ $$ $ draw_trid(5, a ); aaaaa aaaa aaa aa a 80

81 /* Συνάρτηση για τρίγωνα τύπου Α */ public static void draw_tria(int size, char fill) { int row, col; row = 1; while (row <= size) {System.out.println(); col = 1; while (col <= row) {System.out.print(fill); col = col + 1; while (col <= size) {System.out.print( ); col = col + 1; row = row + 1; 81

82 /* Συνάρτηση για τρίγωνα τύπου Β */ public static void draw_triβ(int size, char fill) { int row, col; row = 1; while (row <= size) {System.out.println(); col = size; /* αντίστροφη μέτρηση των στηλών */ while (col > row) {System.out.print( ); col = col 1; while (col > 0) {System.out.print(fill); col = col 1; row = row + 1; 82

83 /* Συνάρτηση για τρίγωνα τύπου C */ public static void draw_tric(int size, char fill) { int row, col; row = size; while (row > 0) /* αντίστροφη μέτρηση των σειρών */ {System.out.println(); col = 1; while (col <= row) {System.out.print(fill); col = col + 1; while (col <= size) {System.out.print( ); col = col + 1; row = row 1; 83

84 /* Συνάρτηση για τρίγωνα τύπου D */ public static void draw_trid(int size, char fill) { int row, col; row = size; /* αντίστροφη μέτρηση των σειρών */ while (row > 0) {System.out.println(); col = size; /* αντίστροφη μέτρηση των στηλών */ while (col > row) {System.out.print( ); col = col 1; while (col > 0) {System.out.print(fill); col = col 1; row = row 1; 84

85 Είναι οι πιο πάνω ορισμοί ανθεκτικοί (robust) ως προς τις τιμές εισόδου τους; Π.χ. τι γίνεται αν οι συναρτήσεις κληθούν με το 0 ή με αρνητικό αριθμό ως προς το size; Υπενθύμιση: Επανάληψη τύπου, while (συνθήκη) εντολή, δεν εκτελείται καθόλου εάν από την αρχή η συνθήκη δεν επαληθεύεται. 85

86 Άρθρωση Για να επιτευχθεί πλήρως η απαιτούμενη λειτουργικότητα, π.χ. οριζόντια τοποθέτηση σχημάτων, χρειάζεται να εισαχθεί άρθρωση στις συναρτήσεις. Επομένως, ποια είναι η βασική λειτουργία σε όλες αυτές τις συναρτήσεις; Η βασική λειτουργία είναι η εκτύπωση γραμμών /* Συνάρτηση για την εκτύπωση γραμμής δεδομένου μήκους, len, και αποτελούμενης από δεδομένο χαρακτήρα, fill. */ public static void draw_line (int len, char fill) { int col = len; while (col > 0) {System.out.print(fill); col = col 1; 86

87 draw_line(10, % ); draw_line(-5, + ); %%%%%%%%%% draw_line(0, + ); draw_line(15, k ); kkkkkkkkkkkkkkk draw_line(115, o ); ooooooooooooooooooooooooooooooooooooooo ooooooooooooooooooooooooooooooooooooooo ooooooooooooooooooooooooooooooooooooo 87

88 Επαναδιατύπωση των συναρτήσεων draw_square, draw_tria, draw_trib, draw_tric, και draw_trid Προσοχή: Εξακολουθεί να μην είναι εφικτή η οριζόντια τοποθέτηση σχημάτων, π.χ. H E L L O public static void draw_square (int size, char fill) { int row, col; row = 1; /* αρχίζοντας από την πρώτη σειρά */ while (row <= size) /* και επαναλαμβάνοντας για κάθε σειρά */ {System.out.println(); /* άρχισε καινούρια γραμμή */ draw_line(size,fill); row = row + 1; /* επόμενη σειρά */ 88

89 Παρατηρούμε, ότι ο εσωτερικός βρόχος έχει αντικατασταθεί από την κλήση της βασικής συνάρτησης draw_line - αφαιρετικότητα draw_square draw_square(2, * ) putchar putchar(nl) putchar(nl) draw_line draw_line(2, * ) draw_line(2, * ) Γράφος Εξαρτήσεων Ορισμός συνάρτησης Η σειρά δεν έχει σημασία putchar( * ) Ξετύλιγμα επαναλήψεων System.out.println() System.out.print( * ) System.out.print( * ) System.out.println() System.out.print( * ) System.out.print( * ) putchar( * ) putchar( * ) putchar( * ) Διάγραμμα Εκτέλεσης (Execution Diagram) Κλήση συνάρτησης Η σειρά έχει σημασία 89

90 /* Συνάρτηση για τρίγωνα τύπου Α */ public static void draw_tria(int size, char fill) { int row, col; row = 1; while (row <= size) {System.out.println(); draw_line(row, fill); draw_line(size row, ); row = row + 1; Οι εσωτερικές επαναλήψεις έχουν αντικατασταθεί από τις σχετικές κλήσεις της βασικής συνάρτησης draw_line. Έτσι δεν εμφανίζεται ρητά η διπλή επανάληψη. 90

91 /* Συνάρτηση για τρίγωνα τύπου Β */ public static void draw_triβ(int size, char fill) { int row, col; row = 1; while (row <= size) {System.out.println(); draw_line(size row, ); draw_line(row, fill); row = row + 1; 91

92 /* Συνάρτηση για τρίγωνα τύπου C */ public static void draw_tric(int size, char fill) { int row, col; row = size; while (row > 0) /* αντίστροφη μέτρηση των σειρών */ { System.out.println(); draw_line(row, fill); draw_line(size row, ); row = row 1; 92

93 /* Συνάρτηση για τρίγωνα τύπου D */ void draw_trid(int size, char fill) { int row, col; row = size; /* αντίστροφη μέτρηση των σειρών */ while (row > 0) {System.out.println(); draw_line(size row, ); draw_line(row, fill); row = row 1; 93

94 Παρατηρήσεις 1. Τώρα μπορούμε να σχεδιάσουμε τετράγωνα και τρίγωνα διαφόρων μεγεθών και γεμισμάτων. 2. Επίσης μπορούμε να συνθέσουμε περίπλοκα σχήματα βάσει κάθετων τοποθετήσεων απλούστερων σχημάτων. 3. Όμως δεν μπορούμε να συνθέσουμε σχήματα βάσει οριζόντιων τοποθετήσεων απλούστερων σχημάτων, π.χ. rombus, kite, butterfly, ή windmill. 4. Για να υπάρχει η δυνατότητα για οριζόντιες τοποθετήσεις, τα σχήματα δεν δημιουργούνται εξ ολοκλήρου, αλλά κάθε σειρά τους δημιουργείται ξεχωριστά. 5. Συνεπώς, χρειάζεται περαιτέρω διάσπαση του προβλήματος και διαχωρισμός του κεντρικού υπο-προβλήματος που είναι η δημιουργία δεδομένης σειράς ενός σχήματος. 94

95 /* Η συνάρτηση draw_line_tria εκτυπώνει δεδομένη σειρά δεδομένου τριγώνου τύπου Α. Η παράμετρος size δίνει το μέγεθος του τριγώνου, η παράμετρος row τον αριθμό της σειράς (οι σειρές απαριθμούνται από το 1 μέχρι το size), και η παράμετρος fill δίνει το χαρακτήρα που απαρτίζει το σχήμα */ draw_line_tria (int size, int row, char fill) { draw_line(row, fill); draw_line(size row, ); 95

96 /* Επαναδιορισμός της draw_tria */ public static void draw_tria (int size, char fill) { int row = 1; while (row <= size) {System.out.println(); draw_line_tria(size, row, fill); row = row + 1; draw_tria draw_line_tria draw_line putchar 96

97 /* Βασικές συναρτήσεις για υπόλοιπους τύπους τριγώνων */ /* Για τρίγωνα τύπου Β */ public static void draw_line_trib (int size, int row, char fill) {draw_line(size row, ); draw_line(row, fill); /* Για τρίγωνα τύπου C */ public static void draw_line_tric (int size, int row, char fill) {draw_line(size row + 1, fill); draw_line(row 1, ); /* Για τρίγωνα τύπου D */ public static void draw_line_trid (int size, int row, char fill) {draw_line(row 1, ); draw_line(size row + 1, fill); 97

98 Σύνθεση Ανεμόμυλων Σειρά 1 Α Σειρά 1 C Σειρά 5 A Σειρά 5 C Σειρά 1 Β Σειρά 1 D Σειρά 5 Β Σειρά 5 D ανεμόμυλος μεγέθους 5 αποτελούμενος από το χαρακτήρα + 98

99 /* Συνάρτηση για το σχεδιασμό ανεμόμυλου μεγέθους κενού αποτελούμενου από το χαρακτήρα fill */ public static void draw_windmill (int size, char fill) { int row; row = 1; while (row <= size) {System.out.println(); draw_line_tria(size, row, fill); draw_line_tric(size, row, fill); row = row + 1; row = 1; while (row <= size) {System.out.println(); draw_line_trib(size, row, fill); draw_line_trid(size, row, fill); row = row + 1; 99

100 /* Περαιτέρω Άρθρωση */ /* Συνάρτηση που δημιουργεί το πάνω μισό του ανεμόμυλου */ public static void draw_tophalf_wm (int size, char fill) {int row = 1; while (row <= size) {System.out.println(); draw_line_tria(size, row, fill); draw_line_tric(size, row, fill); row = row + 1; /* Συνάρτηση που δημιουργεί το κάτω μισό του ανεμόμυλου */ public static void draw_bottomhalf_wm (int size, char fill) {int row = 1; while (row <= size) {System.out.println(); draw_line_trib(size, row, fill); draw_line_trid(size, row, fill); row = row + 1; 100

101 /* Συνάρτηση για ολόκληρο τον ανεμόμυλο. */ public static void draw_windmill (int size, char fill) { draw_tophalf_wm(size,fill); draw_bottomhalf_wm(size, fill); Διάσπαση Προβλήματος draw_windmill draw_tophalf_wm draw_bottomhalf_wm draw_line_tria draw_line_tric draw_line_trib draw_line_trid draw_line 101

102 Συναρτήσεις υπερφόρτωση Πολλαπλοί παράμετροι 102

103 Gaussian Κατανομή Standard Gaussian κατανομή Καμπύλη καμπάνας." Αποτελεί τη βάση της στατιστικής ανάλυσης για κοινωνικές και φυσικές επιστήμες. Π.χ. Οι 2000 SAT τιμές σημειώθηκαν ακολουθούν Gaussian κατανομή με μέση τιμή = 1019, σταθερή απόκλιση = (x) 1 2 e x2 /2 (x,, ) 1 2 e (x )2 / 2 2 x / 103

104 Java Συνάρτηση για (x) Μαθηματικές Συναρτήσεις. Χρησιμοποιήστε ενσωματωμένες συναρτήσεις όπου είναι δυνατόν. Δημιουργήστε τις δικές σας όταν δεν είναι διαθέσιμες. public class Gaussian { (x) 1 2 e x2 /2 public static double phi(double x) { return Math.exp(-x*x / 2) / Math.sqrt(2 * Math.PI); public static double phi(double x, double mu, double sigma) { return phi((x - mu) / sigma) / sigma; (x,, ) x / Υπερφόρτωση. Συναρτήσεις με διαφορετικές υπογραφές είναι διαφορετικές. Πολλαπλοί παράμετροι. Συναρτήσεις μπορούν να παίρνουν οποιοδήποτε αριθμό παραμέτρων. Κλήση άλλων συναρτήσεων. Συναρτήσεις μπορούν να καλούν άλλες συναρτήσεις. Βιβλιοθήκη ή ορισμένη από το χρήστη συνάρτηση 104

105 Gaussian Αθροιστική Συνάρτηση Πιθανότητας Στόχος. Υπολογίστε τη Gaussian cdf (z). Πρόκληση. Μη κλειστής μορφής έκφραση και όχι στη Java βιβλιοθήκη. (z) (x) 1 2 e x2 /2 z Taylor series Κατώτατη γραμμή. 1,000 χρόνια μαθηματικών τύπων στα χέρια σας 105

106 Java συνάρτηση για (z) public class Gaussian { public static double phi(double x) // as before public static double Phi(double z) { if (z < -8.0) return 0.0; if (z > 8.0) return 1.0; double sum = 0.0, term = z; for (int i = 3; sum + term!= sum; i += 2) { sum = sum + term; term = term * z * z / i; return sum * phi(z); accurate with absolute error less than 8 * public static double Phi(double z, double mu, double sigma) { return Phi((z - mu) / sigma); (z,, ) z (z,, ) ((z ) / ) 106

107 Δημιουργία Συναρτήσεων Οι συναρτήσεις σας δίνουν τη δυνατότητα να δημιουργήσετε ένα νέο επίπεδο αφαιρετικότητας. Σας οδηγεί πέρα από τις βιβλιοθήκες με έτοιμα πακέτα. Δημιουργείτε τα εργαλεία που εσείς χρειάζεστε: Gaussian.phi(), Διεργασία. Βήμα 1: προσδιορίστε ένα χρήσιμο χαρακτηρηστικό. Βήμα 2: υλοποιήστε το. Βήμα 3: χρησιμοποιήστε το. Βήμα p 3': επαναχρησιμοποιήστε το σε οποιοιδήποτε από τα προγράμματά σας. 107

Η βασική λειτουργία σε όλες αυτές τις συναρτήσεις είναι η εκτύπωση γραµµών.

Η βασική λειτουργία σε όλες αυτές τις συναρτήσεις είναι η εκτύπωση γραµµών. draw_tric(4, $ ); $$$$ $$$ $$ $ draw_trid(5, a ); aaaaa aaaa aaa aa a Άρθρωση Η βασική λειτουργία σε όλες αυτές τις συναρτήσεις είναι η εκτύπωση γραµµών. /* Συνάρτηση για την εκτύπωση γραµµής δεδοµένου

Διαβάστε περισσότερα

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων Συναρτήσεις Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων ιεπαφή Συναρτήσεων (Πρωτότυπα Συναρτήσεων function prototypes): εδοµένα εισόδου (παράµετροι parameters): πέρασµα δια τιµής ή µέσω

Διαβάστε περισσότερα

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

Δοκιμή και Αποσφαλμάτωση Testing and Debugging Δοκιμή και Αποσφαλμάτωση Testing and Debugging XVI-1 Ο μεταγλωττιστής εντοπίζει τα συντακτικά λάθη ενός προγράμματος. Δεν είναι όμως σε θέση να εντοπίσει λάθη στη λογική του προγράμματος. δεδομένα πρόγραμμα

Διαβάστε περισσότερα

Επανάληψη. Εντολές while, for, do-while

Επανάληψη. Εντολές while, for, do-while Επανάληψη Εντολές while, for, do-while Απροσδιόριστη Επανάληψη ή Επανάληψη υπό συνθήκη (while, do-while) Απαριθµητή Επανάληψη (for) Εντολή while while (συνθήκη) εντολή C? ναι όχι S Σηµασιολογία Εάν από

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Πρώτοι αριθμοί ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 6/12/07 Ένας ακέραιος μεγαλύτερος του 1 είναι πρώτος αν έχει ακριβώς δύο διαιρέτες (τη μονάδα και τον εαυτό του). Πρόβλημα: έλεγχος

Διαβάστε περισσότερα

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

ΕΠΛ131 Αρχές Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ131 Αρχές Προγραμματισμού Ακαδημαϊκό Έτος 2016/17 Εαρινό Εξάμηνο ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ ΗΜΕΡΟΜΗΝΙΑ: 15 Μαρτίου 2017 ΔΙΑΡΚΕΙΑ: 4:00μμ 6:30μμ ΑΙΘΟΥΣΕΣ: Κτήριο ΧΩΔ01,

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

Διαβάστε περισσότερα

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008

2 Ορισμός Κλάσεων. Παράδειγμα: Μηχανή για Εισιτήρια. Δομή μιας Κλάσης. Ο Σκελετός της Κλάσης για τη Μηχανή. Ορισμός Πεδίων 4/3/2008 Παράδειγμα: Μηχανή για Εισιτήρια 2 Ορισμός Κλάσεων Σύνταξη κλάσης: πεδία, κατασκευαστές, μέθοδοι Ένας αυτόματος εκδότης εισιτηρίων είναι μια μηχανή που δέχεται χρήματα και εκδίδει ένα εισιτήριο. Εκδίδει

Διαβάστε περισσότερα

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ.

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. είκτες ως Τιµές Εξόδου Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. int *select (int f (int, int), int *add1, int *add2) { if (f (*add1, *add2)) return add1; else return add2; Η συνάρτηση

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Μ έ θ ο δ ο ι Οι μέθοδοι είναι εκείνα τα τμήματα του κώδικα όπου εκτελούνται οι ουσιαστικές

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

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

ΕΠΛ131 Αρχές Προγραμματισμού ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ131 Αρχές Προγραμματισμού Ακαδημαϊκό Έτος 2016/17 Χειμερινό Εξάμηνο ΕΝΔΙΑΜΕΣΗ ΕΞΕΤΑΣΗ ΗΜΕΡΟΜΗΝΙΑ: 29 Οκτωβρίου 2016 ΔΙΑΡΚΕΙΑ: 10:00πμ 12:30μμ ΑΙΘΟΥΣΕΣ: Κτήριο

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις Προγραμματισμός Η/Υ Ενότητα 7: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση του ορισμού και της κλήση

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

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

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

Διαβάστε περισσότερα

Συναρτήσεις και Πίνακες

Συναρτήσεις και Πίνακες Συναρτήσεις και Πίνακες Συναρτήσεις καθιερωμένης βιβλιοθήκης της C++ Συναρτήσεις οριζόμενες από τον χρήστη Μεταβίβαση κατ αξία Συναρτήσεις void και λογικές συναρτήσεις Μεταβίβαση κατ αναφορά Επιστροφή

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Συναρτήσεις Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1

Διαβάστε περισσότερα

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

Διαβάστε περισσότερα

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch; ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Τι είναι ; Συναρτήσεις Αυτόνομα τμήματα κώδικα (υποπρογράμματα) που πραγματοποιούν μια καθορισμένη εργασία. Χρήσιμες για περιπτώσεις που ο ίδιος υπολογισμός επαναλαμβάνεται πολλές φορές

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Λογικά λάθη public class ShowLogicErrors

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Γαβαλάς Δαμιανός dgavalas@aegean.gr Λογικά

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

Διαβάστε περισσότερα

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

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Βασικά Δομικά Στοιχεία ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΔΟΜΙΚΑ ΣΤΟΙΧΕΙΑ ΔΟΜΙΚΑ

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Μία Μελέτη Περίπτωσης: Διήθηση

Μία Μελέτη Περίπτωσης: Διήθηση Μία Μελέτη Περίπτωσης: Διήθηση Ι-1 Μία Μελέτη Περίπτωσης: Διήθηση Μία Μελέτη Περίπτωσης: Διήθηση Διήθηση. Ρίψη υγρού πάνω σε κάποιο πορώδες υλικό Θα φτάσει το υγρό στον πυθμένα; Εφαρμογές. [ χημεία, γεωλογία,

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

3 Αλληλεπίδραση Αντικειμένων

3 Αλληλεπίδραση Αντικειμένων Αφαίρεση και Αρθρωσιμότητα 3 Αλληλεπίδραση Αντικειμένων Πώς συνεργάζονται τα αντικείμενα που δημιουργούμε Αφαίρεση (abstraction) είναι η δυνατότητα να αγνοούμε τις λεπτομέρειες και να εστιάζουμε την προσοχή

Διαβάστε περισσότερα

Λογισµικό (Software SW) Γλώσσες

Λογισµικό (Software SW) Γλώσσες Λογισµικό (Software SW) Γλώσσες Προγραµµατισµού Οι γενιές των γλωσσών προγραµµατισµού Προβλήµατα που επιλύονται σε ένα περιβάλλον στο οποίο ο άνθρωπος πρέπει να προσαρµόζεται στα χαρακτηριστικά της µηχανής

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα.

lab2 -Στην printf να βάζεις \n έτσι ώστε να αλλάζει γραµµή όποτε σου εµφανίζει κάποιο µήνυµα. Α. Μ. Βαθμός Σχόλιο 1183 lab2 - Πολύ καλή δουλειά κατά τα άλλα 1194 1238 1239 FAIL 1240 1241 1242 1243 1244 1245 1246 - πολύ καλό (*υπάρχουν οι τελεστές = ). Ο κώδικας είναι καλά σχολιασµένος -

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

Διαβάστε περισσότερα

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

Διαβάστε περισσότερα

8. Μέθοδοι (Methods)

8. Μέθοδοι (Methods) 8. Μέθοδοι (Methods) Χειμερινό εξάμηνο 2012 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Μέθοδοι που παρέχονται από τη τάξη Math του Java API Χρήση στατικών μεθόδων και

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος I Θέματα ιάλεξης Μη- ομημένος

Διαβάστε περισσότερα

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 7: Συναρτήσεις Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python

Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Εισαγωγή στον Προγραμματισμό Python Μάθημα 4: Συναρτήσεις (functions) και δομοστοιχεία (modules) στην Python Νοέμβριος 2014 Χ. Αλεξανδράκη, Γ. Δημητρακάκης Συναρτήσεις (Functions) Στον προγραμματισμό,

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Συναρτήσεις. Εισαγωγή

Συναρτήσεις. Εισαγωγή Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο

Διαβάστε περισσότερα

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

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00

ΕΡΓΑΣΙΑ 2. Κατασκευάζοντας Ημερολόγια. Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00 ΕΡΓΑΣΙΑ 2 Κατασκευάζοντας Ημερολόγια Ημερομηνία Ανάρτησης: 23/02/2018 Ημερομηνία Παράδοσης: 13/03/2018, 09:00 Εισαγωγή Σκοπός της παρούσας άσκησης είναι η απόκτηση εμπειρίας στη χρήση πινάκων (πολλαπλών

Διαβάστε περισσότερα

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας

Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας ΕΡΓΑΣΙΑ 2 Σχηματίζοντας Γραφικές Παραστάσεις για Ημίτονο και Συνημίτονο και Ελέγχοντας Περιορισμούς σε Συστάδες Καρτών Τόμπολας Εισαγωγή Ημερομηνία Ανάρτησης: 16/02/2017 Ημερομηνία Παράδοσης: 06/03/2017,

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

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

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11) Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I (Διάλεξη 11) 11-1 Μη-Δομημένος Προγραμματισμός Το πρόγραμμα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δομή). Όλη η λειτουργικότητα ορίζεται μέσα στην main. Το αποτέλεσμα

Διαβάστε περισσότερα

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις Στατικές μέθοδοι Τι σημαίνει το keyword static στον ορισμό της main μεθόδου? Τι είναι μια στατική μέθοδος?

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Περισσότερα για τις Κλάσεις, τα Αντικείμενα και τις Μεθόδους Σύνοψη των βασικών λειτουργιών

Διαβάστε περισσότερα

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

ΣΥΝΑΡΤΗΣΕΙΣ (Functions) ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν Σώμα της συνάρτησης Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 τύπος_2

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 17/1/08 Constructors (Κατασκευαστές) Ειδικός τύπος μεθόδων που δημιουργούν αντικείμενα μιας κλάσης και: Εκτελούνται κατά την αρχικοποίηση των αντικειμένων

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΔΙΚΕΣ ΜΑΣ ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

Διαβάστε περισσότερα

Θέματα Προγραμματισμού Η/Υ

Θέματα Προγραμματισμού Η/Υ Πρόγραμμα Μεταπτυχιακών Σπουδών Πληροφορική και Υπολογιστική Βιοϊατρική Θέματα Προγραμματισμού Η/Υ Ενότητα 8: Θεματική Ενότητα: Συναρτήσεις ΘΕΜΑΤΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ Θεματική Ενότητα 8 Συναρτήσεις Πληροφορική

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

Διαβάστε περισσότερα

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 4 : CLASSES Κων. Κόκκινος Αντικειμενοστραφής Προγραμματισμός Η ιδέα του αντικειμενοστραφούς προγραμματισμού Αυτόνομες οντότητες Στιγμιότυπα οντοτήτων Παράδειγμα

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Επανάληψης

Υπολογισμός - Εντολές Επανάληψης Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Επανάληψης ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Υπάρχουσες κλάσεις και αντικείμενα στην Java Strings Wrapper Classes Δομές ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων

Διαβάστε περισσότερα

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών Συναρτήσεις 60 Ροή ελέγχου Είναι η σειρά µε την οποία εκτελούνται οι εντολές. Μέχρι τώρα, «σειριακή»,

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

Διαβάστε περισσότερα

Ψευδοκώδικας. November 7, 2011

Ψευδοκώδικας. November 7, 2011 Ψευδοκώδικας November 7, 2011 Οι γλώσσες τύπου ψευδοκώδικα είναι ένας τρόπος περιγραφής αλγορίθμων. Δεν υπάρχει κανένας τυπικός ορισμός της έννοιας του ψευδοκώδικα όμως είναι κοινός τόπος ότι οποιαδήποτε

Διαβάστε περισσότερα