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

Σχετικά έγγραφα
Α Ν Α Δ Ρ Ο Μ Η (R e c u r s i o n) Παναγιώτης Σφέτσος, PhD

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

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

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

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

Ν!=1*2*3* *(N-1) * N => N! = (Ν-1)! * N έτσι 55! = 54! * 55

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

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

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

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

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

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

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

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

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

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

Αναδρομή (Recursion) Η Δίδυμη Αδελφή της Επανάληψης. Διαφάνειες από τους Robert Sedgewick και Kevin Wayne Ι-1

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

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

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

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

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

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

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

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

Αναδρομικοί Αλγόριθμοι

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

Η λέξη κλειδί this. Γαβαλάς Δαμιανός

API: Applications Programming Interface

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

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

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

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

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

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

Mεταβλητές (variables) και Σταθερές (constants)

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

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

Διάλεξη 15: Αναδρομή (Recursion)

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Μονοδιάστατοι πίνακες Πολυδιάστατοι πίνακες Μέθοδοι Μέθοδοι Recursive Overloading

Προγραμματισμός Αναδρομή

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

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

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

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

CSD Univ. of Crete Φθινόπωρο Άσκηση 1 Εκφώνηση

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

Πανεπιστήμιο Πελοποννήσου. Σχολή Θετικών Επιστημών & Τεχνολογίας. Τμήμα Επιστήμης & Τεχνολογίας Υπολογιστών. Προγραμματισμός Ι Εργαστήριο

Αναδρομή Ανάλυση Αλγορίθμων

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

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

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

Η Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 6 Εντολές Επανάληψης Ασκήσεις. Γιώργος Λαμπρινίδης

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

public class ArrayStack implements Stack {

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

Προγραμματισμός Αναδρομή

(2) Thread Thread. Runnable. ( ) Java. Sample91. Thread Thread ) Thread. Runnable. run() / run() Runnnale ( ) MyRun implements Runnable Runnable

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

Create Sprite at Runtime

Generics και ArrayLists

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

Fractional Colorings and Zykov Products of graphs

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

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

ΘΕΜΑΤΑ ΕΞΕΤΑΣΕΩΝ ΟΜΑΔΑ Α

Γράφημα. Συνδυαστικό αντικείμενο που αποτελείται από 2 σύνολα: Σύνολο κορυφών (vertex set) Σύνολο ακμών (edge set) 4 5 πλήθος κορυφών πλήθος ακμών

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

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

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

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

Διάγραμμα Κλάσεων. Class Diagram

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

10. Εντολές επανάληψηςκαι οι εντολές

Διάλεξη 5η: Εντολές Επανάληψης

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

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

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

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

Δομές ελέγχου & επανάληψης

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Υπερφόρτωση Αντικείμενα σαν ορίσματα

Εργαστηριακή Άσκηση 1

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

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

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

Ουρά Προτεραιότητας (priority queue)

Τεχνικές και Αλγόριθμοι Ταξινόμησης

Διάλεξη 15: Αναδρομή (Recursion)

Wrapper Classes, Abstract Classes and Interfaces

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

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

Δομές Δεδομένων & Ανάλυση Αλγορίθμων. 3ο Εξάμηνο. Ουρά (Queue) Υλοποίηση της με τη βοήθεια πίνακα.

Transcript:

1 Άσκηση 1 η Δίνεται το παρακάτω απόσπασμα προγράμματος που εμφανίζει την ακολουθία των αριθμών Fibonacci. Εξ ορισμού, οι πρώτοι δύο αριθμοί Fibonacci είναι το 0 και το 1, και κάθε επόμενος αριθμός είναι το άθροισμα των δύο προηγούμενων. με και Το πρόγραμμα αρχικά διαβάζει το πλήθος των όρων της ακολουθίας Fibonacci και στη συνέχεια εμφανίζει τους όρους αυτούς: public class Fibonacci extends Program{ public void run(){ int count = readint("dwste to plithos twn orwn tis akolouthias Fibοnacci: "); if(count>=0) System.out.println(0); if(count>=1) System.out.println(1); if (count>=2) { for (i=2; i<count; i++){ public class Fibonacci extends Program{ public void run(){ int count = readint("dwste to plithos twn orwn tis akolouthias fib: "); if(count>=0) System.out.println(0); //fib(0)=0; if(count>=1) System.out.println(1); //fib(1)=1; if(count>=2) { //fib(n)=fib(n-1)+fib(n-2); for(i=2; i<count; i++){ currentfib = fib1 + fib2; //fib(n)=fib(n-1)+fib(n-2); System.out.println(currentFib); fib2=fib1; //για fib(n+1) το fib'(n-2) = fib(n-1) fib1=currentfib; //για fib(n+1) το fib'(n-1) = fib(n)

2 Άσκηση 2 η Γράψτε ένα πρόγραμμα το οποίο διαβάζει έναν ακέραιο και ελέγχει αν ανήκει (αποτελεί όρο) στην ακολουθία Fibonacci. public class FibonacciCheck extends Program{ int n = readint("poios arithmos thelete na elegxthei an anhkei sthn akolouthia Fibonacci? "); boolean flag=false; if ((n==0) (n == 1)) { System.out.println("To "+n+" anhkei"); flag = true; if(n>=2) { if (!flag) println("o arithmos " + n + " den periexetai");

3 public class FibonacciCheck extends Program{ int n = readint("poios arithmos thelete na elegxthei an anhkei sthn akolouthia Fibonacci? "); boolean flag=false; if ((n==0) (n == 1)) { System.out.println("To "+n+" anhkei"); flag = true; if(n>=2) { while(true) { currentfib = fib1 + fib2; println(currentfib); if (n == currentfib) { println ("To "+n+" anhkei"); flag = true; fib2=fib1; fib1=currentfib; if (currentfib>=n) break; if (!flag) println("o arithmos " + n + " den periexetai");

4 Άσκηση 3 η Το παρακάτω πρόγραμμα υπολογίζει το πλήθος των συνδυασμών (combinations) n ανά κ: όπου n factorial (n!) = 1 * 2 * * n Συμπληρώστε με τις κατάλληλες εντολές το σώμα των συναρτήσεων combinations και factorial public class Combinations extends ConsoleProgram { int n = readint("enter number of objects in the set (n): "); int k = readint("enter number to be chosen (k): "); println("c(" + n + ", " + k + ") = " + combinations(n, k)); * Returns the mathematical combinations function C(n, k), * which is the number of ways of selecting k objects * from a set of n distinct objects. int combinations(int n, int k) { * Returns the factorial of n, which is defined as the * product of all integers from 1 up to n. int factorial(int n) {

* File: Combinations.java * ----------------------- * This program computes the mathematical combinations function * C(n, k), which is the number of ways of selecting k objects * from a set of n distinct objects. public class Combinations extends ConsoleProgram { int n = readint("enter number of objects in the set (n): "); int k = readint("enter number to be chosen (k): "); println("c(" + n + ", " + k + ") = " + combinations(n, k)); * Returns the mathematical combinations function C(n, k), * which is the number of ways of selecting k objects * from a set of n distinct objects. private int combinations(int n, int k) { return factorial(n) / (factorial(k) * factorial(n - k)); * Returns the factorial of n, which is defined as the * product of all integers from 1 up to n. private int factorial(int n) { int result = 1; for (int i = 1; i <= n; i++) { result *= i; return result; 5

6 Άσκηση 4 η Το παρακάτω πρόγραμμα δημιουργεί ένα τετράγωνο (50x50 pixels) και το μετακινεί κάνοντας 1000 χρονικά βήματα από την επάνω αριστερή γωνία του παραθύρου μέχρι την κάτω δεξιά. * File: AnimatedSquare.java * ------------------------- * This program animates a square so that it moves from the * upper left corner of the window to the lower right corner. import acm.graphics.*; public class AnimatedSquare extends GraphicsProgram { // Δημιούργησε το τετράγωνο square ως ένα αντικείμενο τύπου GRect // Γέμισε (setfilled) το τετράγωνο (όχι μόνο περίγραμμα) // Τοποθέτησε (add) το τετράγωνο στο παράθυρο γραφικών // Υπολόγισε την απόσταση μετακίνησης του τετραγώνου dx και dy ως // πηλίκο του πλάτους του παραθύρου γραφικών δια του πλήθους των // χρονικών βημάτων double dx = ; double dy = ; Για κάθε βήμα { // Μετακίνησε το τετράγωνο (square.move) κατά dx kai dy // Κάνε παύση (pause) για 20 χιλιοστά του δευτερολέπτου Private constants private static final int N_STEPS = ; private static final int PAUSE_TIME = ; private static final double SQUARE_SIZE = ;

7 * File: AnimatedSquare.java * ------------------------- * This program animates a square so that it moves from the * upper left corner of the window to the lower right corner. import acm.graphics.*; public class AnimatedSquare extends GraphicsProgram { GRect square = new GRect(0, 0, SQUARE_SIZE, SQUARE_SIZE); square.setfilled(true); add(square); double dx = (getwidth() - SQUARE_SIZE) / N_STEPS; double dy = (getheight() - SQUARE_SIZE) / N_STEPS; for (int i = 0; i < N_STEPS; i++) { square.move(dx, dy); pause(pause_time); Private constants private static final int N_STEPS = 1000; private static final int PAUSE_TIME = 20; private static final double SQUARE_SIZE = 50;