ΕΠΛ131 Είσοδος και Έξοδος (Input and Output)

Σχετικά έγγραφα
Γραφικά Περιβάλλοντα

Είσοδος και Έξοδος. (Input and Output) Διαφάνειες από τους Robert Sedgewick και Kevin Wayne. Τι θα δούµε σήµερα

ΕΠΛ Φροντιστήριο 3

Βασικά στοιχεία προγραµµατισµού στη JAVA. Επαναχρησιµοποίηση κώδικα Ονοµατολογία Χρήσιµες Βιβλιοθήκες (I/O) Προγραµµατιστικές συµβάσεις

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #17

Week 10: Graphical User Interfaces

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Graphical User Interfaces (GUI) SWING

ΕΠΛ 131 Φροντιστήριο 2

Βρίγκας Μιχαήλ Α.Μ.744 Μπράχος Χ. Ευάγγελος Α.Μ.795

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

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

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

ημιουργία Γραφικού Περιβάλλοντος

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

8.1 Top-Level Swing Containers και Swing Components

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

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #18

Week 12: GUIs with Swing

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

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

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

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Wrapper Classes, Abstract Classes and Interfaces

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

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

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

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

Ανάπτυξη εφαρμογής Input-Output

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Βασικά της γλώσσας JAVA

2. Με το εικονίδιο συντόμευσης στην επιφάνεια εργασίας των Windows.

Πληρουορική Γ Γσμμασίοσ

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

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

Γράφοντας μουσική με το Finale 2006 (Δ μέρος)

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πολυμορφισμός Αφηρημένες κλάσεις Interfaces (διεπαφές)

Εισαγωγή στον Αντικειμενοστρέφή Προγραμματισμό Διάλεξη #13

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

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

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

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

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

Διάλεξη 08: Λίστες ΙΙ Κυκλικές Λίστες

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 12 : ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ GUI AWT ΚΑΙ

Προτεινόμενες εργασίες Προγραμματισμού Διαδικτύου

Το πρόγραμμα αρχικά διαβάζει το πλήθος των όρων της ακολουθίας Fibonacci και στη συνέχεια εμφανίζει τους όρους αυτούς:

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

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

ΜΑΘΗΜΑ Άνοιγμα Της Εφαρμογής Επεξεργασίας Κειμένου. 2. Κύρια Οθόνη Της Εφαρμογής Κειμένου ΣΤΟΧΟΙ:

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

ΕΠΛ : Εισαγωγή στην Επιστήμη της Πληροφορικής Σημειώσεις Εργαστηρίων (2009)

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ Ι

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ I

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

Διάλεξη 15: Αναδρομή (Recursion) Διδάσκων: Παναγιώτης Ανδρέου

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

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

Συλλογές, Στοίβες και Ουρές

ΕΠΛ233 Βασικά στοιχεία προγραµµατισµού στη JAVA

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

Κατασκευαστές. Μέθοδοι Κατασκευής (Constructors).

Δημιουργία μιας εφαρμογής Java με το NetBeans

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

MOVIE MAKER. Οδηγός Χρήσης

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

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

VK -14/10/2016 Σελίς 1

4. Εισαγωγή στη Java

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

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

Μελέτη Περίπτωσης: Random Surfer

Σημειωματάριο Τετάρτης 25 Οκτ. 2017

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

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

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

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

Computing and Information Systems Service. Windows XP

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

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

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

API: Applications Programming Interface

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Ανάπτυξη εφαρμογής Input-Output

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

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

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

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

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

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

Σημειώσεις όγδοης εβδομάδας

Εργαστήριο ΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ UNIX

Transcript:

Είσοδος και Έξοδος (Input and Output)

Είσοδος και Έξοδος Μονάδες Εισόδου Πληκτρολόγιο Ποντίκι Σκληρός Διαδίκτυο Ψηφιακή κάμερα Μικρόφωνο δίσκος Μονάδες Εξόδου Οθόνη Ηχεία Σκληρός δίσκος Διαδίκτυο Εκτυπωτής MP3 Player Στόχος: Τα προγράμματα μας σε Java να επικοινωνούν με τον έξω κόσμο

Input and Output Μονάδες Εισόδου Πληκτρολόγιο Ποντίκι Σκληρός Διαδίκτυο Ψηφιακή κάμερα Μικρόφωνο Δίσκος Μονάδες Εξόδου Οθόνη Ηχεία Σκληρός Διαδίκτυο Εκτυπωτής MP3 Player δίσκος Η προσέγγισή μας Ορίζουμε στη Java βιβλιοθήκες με συναρτήσεις εισόδου και εξόδου Χρησιμοποιούμε το λειτουργικό σύστημα για να συνδέσουμε τα προγράμματά μας με αρχεία, το ένα με το άλλο, το πληκτρολόγιο, το ποντίκι, την οθόνη, και τα ηχεία.

Το Πρόγραμμα «Digital Michelangelo» Στόχος: Η ακριβής τρισδιάστατη περιγραφή του αγάλματος Laser rangefinder. 5,000 ώρες σάρωσης, 32 Gigabytes!

Τερματικό Τερματικό: Εφαρμογή όπου μπορεί να πληκτρολογείς εντολές προς το λειτουργικό σύστημα Mac OS X Microsoft Windows

Είσοδος από τη Γραμμή-Εντολής και Standard Έξοδος Είσοδος από τη γραμμή-εντολής (command-line input): Διαβάζουμε ένα ακέραιο N ως όρισμα της γραμμής-εντολής Standard έξοδος Ευέλικτη διασύνδεση με το λειτουργικό σύστημα για έξοδο Στην Java, έξοδος από την System.out.println() διοχετεύεται στο stdout. Ως προεπιλογή, το stdout διοχετεύεται στο Τερματικό public class RandomSeq { public static void main(string[] args) { int N = Integer.parseInt(args[0]); for (int i = 0; i < N; i++) { System.out.println(Math.random()); % java RandomSeq 4 0.9320744627218469 0.4279508713950715 0.08994615071160994 0.6579792663546435

Η Παλαιότερη Αντίληψη

Η Σύγχρονη Αντίληψη

Standard Είσοδος και Έξοδος

Είσοδος από Γραμμή-Εντολής vs. Standard Είσοδος Είσοδοι από γραμμή-εντολής Χρησιμοποιούμε εισόδους από τη γραμμή εντολής για την εισδοχή μικρού αριθμού τιμών από το χρήστη Δεν αποτελεί πρακτικό μέσο εισδοχής για μεγάλο αριθμό τιμών Οι τιμές εισάγονται πριν να αρχίσει η εκτέλεση του προγράμματος Standard είσοδος Ευέλικτη διασύνδεση με το λειτουργικό σύστημα για είσοδο Ως προεπιλογή, το stdin παραλαμβάνεται από Τερματικό παράθυρο Τιμές μπορούν να εισαχθούν κατά την εκτέλεση του προγράμματος, παρέχοντας έτσι στο πρόγραμμα τη δυνατότητα του διαλογικού στοιχείου

Standard Είσοδος και Έξοδος Standard είσοδος: Παρέχεται η βιβλιοθήκη StdIn για την εισαγωγή κειμένου Standard έξοδος: Παρέχεται η βιβλιοθήκη StdOut για την εξαγωγή κειμένου

Standard Εισοδος και Έξοδος Για χρήση: Κατεβάζουμε τις βιβλιοθήκες StdIn.java και StdOut.java από την ιστοσελίδα του βιβλίου και τις αποθηκεύουμε στο φάκελο εργασίας (working directory) (ή χρησιμοποιούμε classpath). see booksite public class Add { public static void main(string[] args) { StdOut.print("Type the first integer: "); int x = StdIn.readInt(); StdOut.print("Type the second integer: "); int y = StdIn.readInt(); int sum = x + y; StdOut.println("Their sum is " + sum); % java Add Type the first integer: 1 Type the second integer: 2 Their sum is 3

Υπολογισμός Μέσου Όρου μιας Ακολουθίας Αριθμών Κλάση Average: Διαβάζονται οι αριθμοί ένας προς ένας, και εκτυπώνεται ο μέσος όρος τους public class Average { public static void main(string[] args) { double sum = 0.0; // cumulative total int n = 0; // number of values while (!StdIn.isEmpty()) { double x = StdIn.readDouble(); sum = sum + x; n++; StdOut.println(sum / n); % java Average 10.0 5.0 6.0 3.0 7.0 32.0 <Ctrl-d> 10.5 <Ctrl-d> is OS X/Linux/Unix EOF <Ctrl-z> is Windows analog currently no DrJava analog

Επανα-κατεύθυνση και Σωλήνωση (Redirection and Piping)

Επανα-κατευθύνοντας την Standard Έξοδο Επανα-κατευθύνοντας την standard έξοδο: Χρησιμοποιούμε το directive του λειτουργικού συστήματος (>) για να επανα-κατευθύνουμε την standard έξοδο σε κάποιο αρχείο για μόνιμη αποθήκευση (αντί για το τερματικό παράθυρο) % java RandomSeq 1000 > data.txt redirect stdout

Επανα-κατευθύνοντας την Standard Είσοδο Επανα-κατευθύνοντας την standard είσοδο: Χρησιμοποιούμε το directive του λειτουργικού συστήματος (<) για να επανα-κατευθύνουμε την standard είσοδο σε κάποιο αρχείο, δηλαδή να διαβάζουμε στοιχεία από το αρχείο (αντί από το τερματικό παράθυρο) % more < data.txt 0.5475375782884312 0.4971087292684019 0.23123808041753813 redirect stdin % java Average < data.txt 0.4947655567740991

Σωλήνωση Προγραμμάτων Σωλήνωση (piping): Χρησιμοποιούμε το directive του λειτουργικού συστήματος ( ), έτσι ώστε η standard έξοδος ενός προγράμματος να γίνει η standard είσοδος κάποιου άλλου. % java RandomSeq 1000000 java Average 0.4997970473016028

Standard Drawing

StdDraw: Βιβλιοθήκη για την παρουσίαση αποτελεσμάτων με γραφικό τρόπο public class StdDraw void line (double x0, double y0, double x1, double y1) void point (double x, double y) void text (double x, double y, String s) void circle (double x, double x, double r) void filledcircle (double x, double x, double r) void square (double x, double y, double r) void filledsquare (double x, double y, double r) void polygon (double[] x, double[] y) void filledpolygon (double[] x, double[] y) void setxscale (double x0, double x1) reset x range to (x 0, x 1 ) void setyscale (double y0, double y1) reset y range to (y 0, y 1 ) void setpenradius (double r) void setpencolor (Color c) void setfont (Font f) void setcanvassize (int w, int h) set pen radius to r set pen color to c set text font to f set canvas to w-by-h window

Συνέχεια Βιβλιοθήκης StdDraw public class StdDraw void clear (Color c) void show (int dt) void save (String filename) clear the canvas; color it c show all; pause dt milliseconds save to a.jpg or w.png file

Standard Draw Standard drawing. Υπάρχει η βιβλιοθήκη StdDraw για γραφικά, η οποία μπορεί να χρησιμοποιηθεί κατεβάζοντας το αρχείο StdDraw.java και αποθηκεύοντας το στο φάκελο εργασίας (working directory) public class Triangle { public static void main(string[] args) { double t = Math.sqrt(3.0) / 2.0; StdDraw.line(0.0, 0.0, 1.0, 0.0); StdDraw.line(1.0, 0.0, 0.5, t); StdDraw.line(0.5, t, 0.0, 0.0); StdDraw.point(0.5, t/3.0); (½, ½ 3) % java Triangle (0, 0) (1, 0)

Οπτική Παρουσίαση Δεδομένων (Data Visualization) Φίλτρο σχεδιασμού (Plot filter): Διαβάζουμε μια ακολουθία συντεταγμένων (x, y) από τη standard είσοδο, και σχεδιάζουμε τα σημεία χρησιμοποιώντας standard drawing. public class PlotFilter { public static void main(string[] args) { double xmin = StdIn.readDouble(); double ymin = StdIn.readDouble(); double xmax = StdIn.readDouble(); double ymax = StdIn.readDouble(); StdDraw.setXscale(xmin, xmax); StdDraw.setYscale(ymin, ymax); rescale coordinate system while (!StdIn.isEmpty()) { double x = StdIn.readDouble(); double y = StdIn.readDouble(); StdDraw.point(x, y); read in points, and plot them

Οπτική Παρουσίαση Δεδομένων % more < USA.txt 669905.0 247205.0 1244962.0 490000.0 1097038.8890 245552.7780 1103961.1110 247133.3330 1104677.7780 247205.5560... bounding box coordinates of 13,509 US cities % java PlotFilter < USA.txt

Σχεδιάζοντας Μαθηματικές Συναρτήσεις double[] a = new double[n+1]; for (int i = 0; i <= N; i++) a[i] = Math.sin(4*Math.PI*i/N) + Math.sin(20*Math.PI*i/N); StdDraw.setXscale(0, N); StdDraw.setYscale(-2.0, +2.0); for (int i = 0; i < N; i++) StdDraw.line(i, a[i], i+1, a[i+1]); y sin 4x sin 20x

Το Παιγνίδι του Χάους Το Παιγνίδι του Χάους (Chaos Game): Παίζεται σε ένα ισόπλευρο τρίγωνο με κορυφές R, G, B. Αρχίζουμε από την κορυφή R Επαναλαμβάνουμε τα ακόλουθα N φορές: Επιλέγουμε τυχαία μια κορυφή Μετακινούμαστε στο μέσο της απόστασης ανάμεσα στο τρέχον σημείο και την κορυφή που επιλέξαμε Ζωγραφίζουμε ένα σημείο στο χρώμα της κορυφής B: (½, ½ 3) Ε. Τι εικόνα δημιουργείται; B B G R B G 1 2 5 3 6 4 0 R: (0, 0) G: (1, 0)

Το Παιγνίδι του Χάους public class Chaos { public static void main(string[] args) { int T = Integer.parseInt(args[0]); double[] cx = { 0.000, 1.000, 0.500 ; double[] cy = { 0.000, 0.000, 0.866 ; ½ 3 (avoid hardwired constants like this) double x = 0.0, y = 0.0; for (int t = 0; t < T; t++) { int r = (int) (Math.random() * 3); x = (x + cx[r]) / 2.0; y = (y + cy[r]) / 2.0; StdDraw.point(x, y); between 0 and 2

Το Παιγνίδι του Χάους Απλή τροποποίηση: Χρωματίζουμε το σημείο στο χρώμα της κορυφής που επιλέξαμε τυχαία StdDraw.setPenColor(StdDraw.RED) για να αλλάξουμε το χρώμα της πένας B % java Chaos 10000 R Sierpinski triangle G

// the modification for using the vertex colors for the points public class Chaos { public static void main(string[] args) { int T = Integer.parseInt(args[0]); double[] cx = { 0.000, 1.000, 0.500 ; double[] cy = { 0.000, 0.000, 0.866 ; double x = 0.0, y = 0.0; for (int t = 0; t < T; t++) { int r = (int) (Math.random() * 3); x = (x + cx[r]) / 2.0; y = (y + cy[r]) / 2.0; if (r == 0) StdDraw.setPenColor(StdDraw.RED); else if (r == 1) StdDraw.setPenColor(StdDraw.GREEN); else if (r == 2) StdDraw.setPenColor(StdDraw.BLUE); StdDraw.point(x, y);

Η Φτέρη του Barnsley (Barnsley Fern) Η φτέρη του Barnsley: Παίζουμε το παιγνίδι του χάους με διαφορετικούς κανόνες probability new x new y 2%.50.27y 15% -.14x +.26y +.57.25x +.22y -.04 13%.17x -.21y +.41.22x +.18y +.09 70%.78x +.03y +.11 -.03x +.74y +.27 E. Τι μας λέει η υπολογιστική για τη φύση; E. Τι μας λέει η φύση για την υπολογιστική; Επιστήμες του 20 ου αιώνα: Φόρμουλες Επιστήμες του 21 ου αιώνα: Αλγόριθμοι;

// modifying the rules for Barnsley Fern public class Chaos { public static void main(string[] args) { int T = Integer.parseInt(args[0]); double x = 0.0, y = 0.0; StdDraw.setPenColor(StdDraw.GREEN); for (int t = 0; t < T; t++) { double r = Math.random(); if (r < 0.02){x =.5; y =.27*y; else if (r < 0.17){x = -.14*x +.26*y +.57; y =.25*x +.22*y -.04; else if (r < 0.3) {x =.17*x -.21*y +.41; y =.22*x +.18*y +.09; else if (r < 1.0) {x =.78*x +.03*y +.11; y = -.03*x +.74*y +.27; StdDraw.point(x, y);

Εμψύχωση (Animation) Animation loop. Επανέλαβε τα ακόλουθα: Καθάρισε την οθόνη Μετακίνησε το αντικείμενο Σχεδίασε το αντικείμενο Παρουσίασε και περίμενε για ένα μικρό χρονικό διάστημα Παράδειγμα. Η μετακινούμενη μπάλα Η μπάλα έχει θέση (rx, ry) και σταθερή ταχύτητα (vx, vy). Εντοπίζουμε σύγκρουση με τοίχο και αντιστρέφουμε την ταχύτητα (vx, vy) (+1, +1) (rx, ry) (-1, -1)

Η Μετακινούμενη Μπάλα public class BouncingBall { public static void main(string[] args) { double rx =.480, ry =.860; double vx =.015, vy =.023; double radius =.05; StdDraw.setXscale(-1.0, +1.0); StdDraw.setYscale(-1.0, +1.0); position constant velocity radius rescale coordinates while(true) { if (Math.abs(rx + vx) > 1.0) vx = -vx; if (Math.abs(ry + vy) > 1.0) vy = -vy; bounce rx = rx + vx; ry = ry + vy; update position StdDraw.clear(StdDraw.GRAY); StdDraw.setPenColor(StdDraw.BLACK); StdDraw.filledCircle(rx, ry, radius); StdDraw.show(50); turn on animation mode: display and pause for 50ms clear background draw the ball

Ειδικά Εφέ Εικόνες: Αποθηκεύουμε ένα αρχείο.gif,.png, ή.jpg στο φάκελο εργασίας και χρησιμοποιούμε StdDraw.picture()για να το ζωγραφίσουμε Ηχητικά εφέ: Αποθηκεύουμε ένα αρχείο.wav,.mid, ή.au στο φάκελο εργασίας και χρησιμοποιούμε StdAudio.play()για να το παίξουμε Άσκηση: Τροποποιείστε την κλάση BouncingBall για να απεικονίζει εικόνα και να παίζει ήχο σε κάθε σύγκρουση Να γίνει αντικατάσταση της StdDraw.filledCircle() με: StdDraw.picture(rx, ry, "earth.gif"); Να προστεθεί η ακόλουθη εντολή όταν γίνεται σύγκρουση με τον τοίχο: StdAudio.play("boing.wav");

Επιπρόσθετο Υλικό

Διεπαφές Χρήστη (User Interfaces) Διεπαφή γραμμής εντολής: Ο χρήστης πληκτρολογεί εντολές στο τερματικό Εύκολα προσαρμόσιμο Επεκτείνεται σε σύνθετες ακολουθίες εντολών Δείξε και κάνε κλικ: Ο χρήστης ενεργοποιεί εφαρμογές μέσω γραφικών επιλογών (by clicking) File Open HelloWorld.java Περιορίζεται σε προ-αποφασισμένες επιλογές του μενού (menu options)

Swing Graphical User Interface "Swing" is Java's GUI. Buttons. Menus. Scrollbars. Toolbars. File choosers. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class GUI implements ActionListener { private int clicks = 0; private JFrame frame = new JFrame(); private JLabel label = new JLabel("Number of clicks: 0 "); public GUI() { JButton button = new JButton("Click Me"); button.addactionlistener(this); JPanel panel = new JPanel(); panel.setborder(borderfactory.createemptyborder(30, 30, 10, 30)); panel.setlayout(new GridLayout(0, 1)); panel.add(button); panel.add(label); frame.add(panel, BorderLayout.CENTER); frame.setdefaultcloseoperation(jframe.exit_on_close); frame.settitle("gui"); frame.pack(); frame.show(); public void actionperformed(actionevent e) { clicks++; label.settext("number of clicks: " + clicks); ; public static void main(string[] args) { GUI gui = new GUI(); Ignore details. a sample Swing application

Computer Animation Computer animation: Παρουσιάζεται μια ακολουθία στενά σχετιζόμενων εικόνων σε ταχεία διαδοχή δίνοντας έτσι τη ψευδαίσθηση της κίνησης 1 2 10 11 Frame rate: Χρησιμοποιούνται 15-70 εικόνες το δευτερόλεπτο για να ξεγελάσουν" το ανθρώπινο μάτι και εγκέφαλο στο να βλέπουν ομαλή κίνηση Παρ. 1: Κινούμενα σχέδια Παρ. 2: Java mascot Duke cart-wheeling. 3 4 5 6 12 13 14 15 7 16 8 17 9 http://java.sun.com/docs/books/tutorial

Java Implementation public class Duke { public static void main(string[] args) { int images = 17; int WIDTH = 130, HEIGHT = 80; StdDraw.setCanvasSize(WIDTH, HEIGHT); for (int t = 0; true; t++) { int i = 1 + (t % images); String file = "T" + i + ".gif"; StdDraw.picture(0.5, 0.5, file); StdDraw.show(100); T1.gif - T17.gif

Συγκεκριμένα Στοιχεία Λειτουργικών Συστημάτων Common OS abstractions. Operation Windows XP OS X Unix Cycle through recent command Up, down arrows Up, down arrows Up, down arrows File name completion Tab Tab Tab End of file Ctrl-z <Enter>Ctrl-d Ctrl-d Newline character \r\n \n or \r \n Scroll through text, one screenful at a time more more less more less List files in current directory dir ls ls Redirection, pipes <, >, <, >, <, >, File system C:\introcs\Hi.java /u/introcs/hi.java /u/introcs/hi.java Unix means Unix variants (Linux, Solaris, Aix) Most Windows XP commands also supported in other version of Windows.

Είκοσι Ερωτήσεις Είκοσι Ερωτήσεις: Ο χρήστης σκέφτεται ένα ακέραιο αριθμό από το 1 μέχρι το 1 εκατομμύριο. Ο υπολογιστής προσπαθεί να τον μαντέψει. public class TwentyQuestions { public static void main(string[] args) { int lo = 1, hi = 1000000; while (lo < hi) { int mid = (lo + hi) / 2; StdOut.println("Is your number <= " + mid + "?"); boolean response = StdIn.readBoolean(); if (response) hi = mid; else lo = mid + 1; StdOut.println("Your number is " + lo); Δυαδική αναζήτηση: Κάθε ερώτηση αφαιρεί τις μισές από τις πιθανές εναπομείναντες τιμές Συνέπεια: Ο υπολογιστής πάντοτε έχει επιτυχία μετά από 20 ερωτήσεις invariant: user's number always between lo and hi 2 20 1 million