Προγραμματιστικές Τεχνικές

Σχετικά έγγραφα
Προγραµµατιστικές Τεχνικές

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

Προγραµµατιστικές Τεχνικές

Προγραμματιστικές τεχνικές

Προγραμματιστικές τεχνικές

Προγραμματιστικές Τεχνικές

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

Προγραμματιστικές Τεχνικές

Προγραµµατιστικές Τεχνικές

Συναρτήσεις (Functions) Εισαγωγή στη C++

Προγραμματιστικές Τεχνικές

Προγραµµατιστικές τεχνικές

Προγραµµατιστικές τεχνικές

Προγραµµατιστικές Τεχνικές

Στοιχειώδης προγραμματισμός σε C++

Εισαγωγή στην πληροφορική

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

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

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

Εισαγωγή στην πληροφορική

Αναφορές, είκτες και Αλφαριθμητικά

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

Παίρνοντας Αποφάσεις 1

Εισαγωγή στην πληροφορική

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

Εισαγωγή στην πληροφορική

2 using namespace s t d ; 4 { 12 int t= x ; 6 x=y ; 7 y=t ; 8 } 9 11 { 13 x= y ; 14 y=t ; 15 } {

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

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

Δομές δεδομένων (Structures) Εισαγωγή στη C++

Περιγραφή αλγορίθµων. ιαγράµµατα ροής

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++

ΗΥ-150. Προγραμματισμός

Εισαγωγή στην πληροφορική

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

Πληροφορική 2. Γλώσσες Προγραμματισμού

Προγραµµατιστικές τεχνικές

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

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

Προγραµµατιστικές Τεχνικές

17TimeThis.h function returns reference pointer to same object { return *this; }

Δομές Επανάληψης. Εισαγωγή στη C++

ΗΥ-150. Προγραμματισμός

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

Προγραμματιστικές τεχνικές

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

Παράδειγμα Να γράψετε πρόγραμμα που θα υπολογίζει με τη βοήθεια συναρτήσεων τον n-οστό όρο της αναδρομικής ακολουθίας x n =(n-4)!x n-1 +(n-3)!

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Εισαγωγή στην πληροφορική

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Προέλευση της Pazcal ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ. Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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

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

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

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

Το πρόγραμμα θα τυπώνει και τους τρεις πίνακες.

Εισαγωγή στην πληροφορική

Προγραμματισμός Υπολογιστών με C++

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

Πίνακες (Arrays) Εισαγωγή στη C++

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

Γιάννης Σαμωνάκης. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 4 - PHP)

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

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

Βασικά Στοιχεία της Java

ΛΥΣΕΙΣ ΘΕΜΑΤΩΝ ΤΕΛΙΚΗΣ ΦΑΣΗΣ Οι παρακάτω λύσεις είναι απολύτως ενδεικτικές

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

HY150a Φροντιστήριο 3 24/11/2017

Υπερφόρτωση τελεστών (operator(

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

Υπολογισμός - Εντολές Ελέγχου

Transcript:

Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Προγραμματιστικές Τεχνικές Βασίλειος Βεσκούκης Δρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωμύλος Κορακίτης Αστροφυσικός Αναπλ. Καθηγητής ΕΜΠ romylos@survey.ntua.gr Ανακεφαλαίωση Εμβέλεια μεταβλητών

: 2006 : :. : : : 1 25) C++ int thousands, hundrends, tens, units, rep=0; float number1, number2; 1.1 1.2 1.3 1.4 1.5 2 3.1 3.2 4 5 for (thousands=1;thousands<=9;thousands++) for (hundrends=0;hundrends<=9; hundrends++) for (tens=0;tens<=9;tens++) for (units=0;units<=9;units++) { rep++; number1=thousands*1000+hundrends*100+tens*10+units; number2=pow(thousands,4)+pow(hundrends,4)+pow(tens,4)+pow(units,4); if (number1==number2) cout<<number1<<endl; pow(x,y) x y. 1 ( 7). thousands=1, hundrends=0 tens=0, units=0 thousands=1, hundrends=0 tens=0, units=0 thousands=1, hundrends=0 tens=0, units=0 thousands<10 thousands<10 thousands<10 hundrends<10 hundrends<10 hundrends<10 tens<10 tens<10 tens<10 units<10 units<10 units<10 thousands*1000 + hundrends*100 + tens*10 + units; thousands*1000 + hundrends*100 + tens*10 + units; thousands*1000 + hundrends*100 + tens*10 + units; number2 = pow(thousands,4) + pow(hundrends,4) + pow(tens,4) + pow(units,4); number2 = pow(thousands,4) + pow(hundrends,4) + pow(tens,4) + pow(units,4); number2 = pow(thousands,4) + pow(hundrends,4) + pow(tens,4) + pow(units,4); number2 number2 number2 number1 number1 number1 units++ units++ thousands++ tens++ tens++ hundrends++ hundrends++ hundrends++ tens++ thousands++ thousands++ units++ O 1

2 ( 3) ;. - 9000 - : 3 ( 4) number1;. 1000 9999 4 ( 5) number1, (number2 ). for (number1=1000; number1<10000; number1++); 5 ( 6) ;. 1634, 8208 9474) : 1 4 + 6 4 + 3 4 + 4 4 = 1 + 1296 + 81 + 256 = 1634 2 15) C++, int i=1, j=2, k=3; float a=10.0, b=20.0, c=30.0; bool p=true, q=false; 10*(a+b)==300 True bool 2*(i+k)-j+j%i 6 integer 1 c<b-80 && b>10*k FALSE bool 2 c/a+i*j 5 float 3 (a+b+c)/j-i*c 0 float 4 a/i+(k*c) 100 float 5 a == i*c - 20 TRUE bool 6 a/i+a/k 40/3 float 7 a * (i%j)+ j%k 12 float 8 p ((a<k) (c>b)) TRUE bool 9 p q TRUE bool 10 (a-j)/c-a -292/300 float 2

3 30) C++ : int a[5]={3, 2, 4, 5, 0; int i, j, k, s, x, y, xp, yp, m; 1 ( 20). 5. 1 2 3 4 5 6 7 8 9 10 s=0; for (i=0; i<5; i++) { s=s+a[i]; cout<<endl<<"s="<<s; x=a[0]; xp=0; for (i=1; i<5;i++) if (a[i]>x) { x=a[i]; xp=i; cout<<endl<<"xp="<<xp; m=0; for (i=0; i<5;i++) if (a[i]%2==1) m++; cout<<endl<<"m="<<m; x=a[0]; for (i=1; i<5;i++) { if (a[i]>x) x=a[i]; cout<<endl<<"x="<<x; y=a[0]; yp=0; for (i=1; i<5;i++) if (a[i]<y) { y=a[i]; yp=i; cout<<endl<<"yp="<<yp; for (i=0; i<5;i++) cout<<a[i]<<endl; cout<<endl; y=a[0]; for (i=1; i<5;i++) {. &. if (a[i]<y) y=a[i]; a cout<<endl<<"y="<<y; s=1; for (i=0; i<5; i++) s=s*a[i]; cout<<endl<<"s="<<s; s=0; for (i=0;i<=4;i++) s=s*a[i]; cout<<endl<<"s="<<s; for (i=1;i<=3;i=i+2) { if (a[i-1]/a[i]<>2) k=k!;. a. a. a. a. a. a. a. a. a. a. a,. a,. C++ ( ). 2 ( 10) 4 8 whilefor 4 x=a[0]; i=1; while (i<5) { if (a[i]>x) x=a[i]; i++; cout<< endl<<"x="<<x;. &. a 8 s=1; i=0; while (i<5) { s=s*a[i]; i++; cout<< endl<<"s="<<s; 3

4 15) C++ x [a, b] a<=b float a, b, x; // a b do cout<< \n Enter x outside range ( <<a<<, <<b<< : ; cin>>x; while ((x>=a) && (x<=b)); 4

( 25) C++ N x N. swap(a,b) a b.. 1 2 3 1 4 7 4 5 6 Ł 2 5 8 7 8 9 3 6 9 #include <iostream> using namespace std; void swap(float &a, float &b) // int main() { int i, j, n; n=3; // float p[n][n]; // for (i=0;i<n;i++) for (j=i+1;j<n;j++) swap(p[i][j],p[j][i]); return 0; 5

Εμβέλεια μεταβλητών Οόροςεμβέλεια μιας μεταβλητής (scope of name) αναφέρεται στο τμήμα του προγράμματος στο οποίο έχει εφαρμογή η δήλωση μιας μεταβλητής, δηλαδή αναγνωρίζεται η μεταβλητή. Στην C++, η βασικήμονάδα(τμήμα) προγράμματος είναι το block, μια ομάδα εντολών που περικλείεται σε άγκιστρα {. Η εμβέλεια των ονομάτων των μεταβλητών προσδιορίζεται από μερικούς βασικούς κανόνες: 1. Ονόματα μεταβλητών ορισμένα σ ένα block έχουν τοπική (local) ισχύ, μέσα στο block αυτό. 2. Αν ένα blockπεριέχεται σ ένα άλλο (είναι δηλαδή «θυγατρικό») τότε κληρονομεί τις μεταβλητές του «μητρικού» block. 3. Μεταβλητές που ορίζοντα έξω από οποιοδήποτε block θεωρούνται καθολικές (global) και έχουν ισχύ από το σημείο ορισμού τους μέχρι το τέλος του πηγαίου κώδικα. 4. Μια τοπική μεταβλητή υπερισχύει μιας καθολικότερης μεταβλητής με το ίδιο όνομα. Ίδιοι κανόνες εμβέλειας ισχύουν και για τα άλλα προσδιοριστικα (identifiers), όπως π.χ. τα ονόματα των συναρτήσεων. Κάθε συνάρτηση ενός προγράμματος αποτελεί ένα block (που πιθανόν περικλείει άλλα μικρότερα block στο εσωτερικό του), επομένως ισχύουν οι παραπάνω κανόνες. Όμως, η C++ δεν επιτρέπει τον ορισμό μιας συνάρτησης στο εσωτερικό μιας άλλης, δεν υπάρχουν δηλαδή θυγατρικές συναρτήσεις. Δρ. Ρωμύλος Βασίλειος Κορακίτης Βεσκούκης

Εμβέλεια μεταβλητών - παράδειγμα #include <iostream> using namespace std; const double rate = 10.50; int z; void Ftwo(int a, int b, char x); void Fthree(int one, double y, int z); int main () { int num, first; double x, y, z; char name, last;... return 0; int w; void Ftwo(int a, int b, char x) { int count;... void Fthree(int one, double y, int z) { int a;... //BlockFour { char a;... //end BlockFour... Εμβέλειατωνμεταβλητώνσταδιάφορατμήματα Όνομα Ftwo Fthree BlockFour main Καθολικές: rate ΝΑΙ ΝΑΙ ΝΑΙ ΝΑΙ z ΝΑΙ ΌΧΙ ΌΧΙ ΌΧΙ w ΝΑΙ ΝΑΙ ΝΑΙ ΌΧΙ main: (function name) ΝΑΙ ΝΑΙ ΝΑΙ ΝΑΙ Τοπικές της main ΌΧΙ ΌΧΙ ΌΧΙ ΝΑΙ Ftwo: (function name) ΝΑΙ ΝΑΙ ΝΑΙ ΝΑΙ a (παράμετρος) ΝΑΙ ΌΧΙ ΌΧΙ ΌΧΙ b (παράμετρος) ΝΑΙ ΌΧΙ ΌΧΙ ΌΧΙ x (παράμετρος) ΝΑΙ ΌΧΙ ΌΧΙ ΌΧΙ Τοπικές της Ftwo ΝΑΙ ΌΧΙ ΌΧΙ ΌΧΙ Fthree: (function name) ΝΑΙ ΝΑΙ ΝΑΙ ΝΑΙ one (παράμετρος) ΌΧΙ ΝΑΙ ΝΑΙ ΌΧΙ y (παράμετρος) ΌΧΙ ΝΑΙ ΝΑΙ ΌΧΙ z (παράμετρος) ΌΧΙ ΝΑΙ ΝΑΙ ΌΧΙ Τοπικές της Fthree ΌΧΙ ΝΑΙ ΝΑΙ ΌΧΙ BlockFour : a (τοπική) ΟΧΙ ΌΧΙ ΝΑΙ ΟΧΙ Δρ. Ρωμύλος Βασίλειος Κορακίτης Βεσκούκης

Παράδειγμα - Συναρτήσεις και εμβέλεια μεταβλητών Πρόβλημα: Είναι γνωστές οι ορθογώνιες συντεταγμένες (x0,y0) ενός σημείουτ0 καιμετράταιηαπόσταση s και η γωνία διεύθυνσης a προς το σημείο Τ1. Να υπολογιστούν οι ορθογώνιες συντεταγμένες (x1,y1) του T1. Δρ. Ρωμύλος Βασίλειος Κορακίτης Βεσκούκης

Παράδειγμα - Συναρτήσεις και εμβέλεια μεταβλητών Δρ. Ρωμύλος Βασίλειος Κορακίτης Βεσκούκης

Παράδειγμα - Συναρτήσεις και εμβέλεια μεταβλητών x=x0+s*sin(r); y=y0+s*cos(r); return; Δρ. Ρωμύλος Βασίλειος Κορακίτης Βεσκούκης