Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
Εισαγωγή στον Προγ/μό Η/Υ
Ενότητα 4 Συναρτήσεις Διδάσκων: Μιχάλης Τίτσιας
2
Τι είναι οι συναρτήσεις
Ορισμοί λειτουργιών/εντολών που δέχονται δεδομένα/ορίσματα εισόδου και επιστρέφουν (πιθανόν) μια έξοδο. Στην Java οι συναρτήσεις ονομάζονται μέθοδοι τις οποίες θα τις παρουσιάσουμε διεξοδικά και πιο αυστηρά σε επόμενα μαθήματα. Εδώ θα δούμε πως μπορούμε να ορίσουμε δικές μας απλές μεθόδους/συναρτήσεις.
3
Συναρτήσεις double R, per; double pi = 3.14; R = 5; per = 2*pi*R;
import acm.program.*; public class test extends Program { public void run() { double R, per; double pi = 3.14; R = 5; per = 2*pi*R; println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+per); }
4
Συναρτήσεις double R, per; R = 5; per = perifereia(R);
import acm.program.*; public class test extends Program { public void run() { double R, per; R = 5; per = perifereia(R); println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+per); }
5
Συναρτήσεις double R, per; R = 5; perifereia(R);
import acm.program.*; public class test extends Program { public void run() { double R, per; R = 5; perifereia(R); println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+per); println(”Εμβαδό = ”+emvado(R)); }
6
Ορισμός συναρτήσεων Μαθηματικά Java perifereia(x) = 2πx emvado(x) = πx2 double perifereia(double x ) { return 2*3.14*x; } double emvado(double x ) { return 3.14*x*x; }
7
Ορισμός συναρτήσεων double perifereia(double x) { return 2*3.14*x;
import acm.program.*; public class test extends Program { public void run() { double R, per; R = 5; per = perifereia(R); println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+per); println(”Εμβαδό = ”+emvado(R)); } double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x;
8
Επαναχρησιμοποίηση κώδικα
import acm.program.*; public class test extends Program { public void run() { double R; R = 5; println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+ perifereia(R)); println(”Εμβαδό = ”+emvado(R)); R = 6; println(”Περιφέρεια κύκλου ακτίνας ”+R+”=”+perifereia(R)); } double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x;
9
Επαναχρησιμοποίηση κώδικα
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x;
10
Επαναχρησιμοποίηση κώδικα
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; run circle_info perifereia emvado println
11
Επαναχρησιμοποίηση κώδικα
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πρόβλημα Πληροφορίες κύκλου με δεδομένη ακτίνα περιφέρεια εμβαδό εμφάνιση
12
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της run
13
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 5.0
14
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της perifereia Πλαίσιο εκτέλεσης της circle_info x double 5.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή:
15
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της perifereia Πλαίσιο εκτέλεσης της circle_info x double 5.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή: 31.4
16
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 31.4 Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 5.0
17
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 31.4 Πλαίσιο εκτέλεσης της println s String ”Περιφέρεια κύκλου ακτίνας 5 = 31.4” Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r short 5
18
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 5.0
19
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της emvado Πλαίσιο εκτέλεσης της circle_info x double 5.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή:
20
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της emvado Πλαίσιο εκτέλεσης της circle_info x double 5.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή: 785.0
21
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 785.0 Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 5.0
22
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της println s String ”Εμβαδό=785.0” Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r short 5
23
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 5.0
24
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της run
25
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 6.0
26
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της perifereia Πλαίσιο εκτέλεσης της circle_info x double 6.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή:
27
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της perifereia Πλαίσιο εκτέλεσης της circle_info x double 6.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή: 37.68
28
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 37.68 Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 6.0
29
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 37.68 Πλαίσιο εκτέλεσης της println s String ”Περιφέρεια κύκλου ακτίνας 5 = 37.68” Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r short 5
30
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 6.0
31
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της emvado Πλαίσιο εκτέλεσης της circle_info x double 6.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή:
32
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της emvado Πλαίσιο εκτέλεσης της circle_info x double 6.0 Πλαίσιο εκτέλεσης της run r short 5 Τιμή:
33
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; 113.04 Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 6.0
34
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της println s String ”Εμβαδό=113.04” Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r short 5
35
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της circle_info Πλαίσιο εκτέλεσης της run r double 6.0
36
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; Πλαίσιο εκτέλεσης της run
37
Αποτίμηση συναρτήσεων
import acm.program.*; public class test extends Program { public void run() { circle_info(5); circle_info(6); } void circle_info(double r) { println(”Περιφέρεια κύκλου ακτίνας ”+r+”=”+perifereia(r)); println(”Εμβαδό = ”+emvado(r)); double perifereia(double x) { return 2*3.14*x; double emvado(double x) { return 3.14*x*x; ΤΕΛΟΣ
38
Παράδειγμα Πρόβλημα: υπολογισμός συνολικής ετήσιας απόδοσης δύο καταθετικών λογαριασμών με μηνιαίο επιτόκιο 5%, 18% με αρχικά κεφάλαια 10€ και 3€ αντιστοίχως. Πρόβλημα Ετήσια απόδοση Εμφάνιση Μηνιαία απόδοση
39
Παράδειγμα Πρόβλημα: υπολογισμός συνολικής ετήσιας απόδοσης δύο καταθετικών λογαριασμών με μηνιαίο επιτόκιο 5%, 18% με αρχικά κεφάλαια 10€ και 3€ αντιστοίχως. run ethsia_apodosh println m
40
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
41
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
42
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
43
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
44
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
45
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { return m(m(m(m(m(m(m(m(m(m(m(kef, tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok), tok); double m(double kef, double tok) { return kef*(1+tok/100);
46
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { double f = 1+tok/100; return kef*f*f*f*f*f*f*f*f*f*f*f*f;
47
Παράδειγμα public void run() {
import acm.program.*; public class test extends Program { public void run() { double synolo, kef1 = 10, kef2 = 3, tok1 = 5, tok2 = 18; synolo = ethsia_apodosh(kef1, tok1) + ethsia_apodosh(kef2, tok2); println(”Συνολική απόδοση = ”+synolo); } double ethsia_apodosh(double kef, double tok) { double f = 1+tok/100, f2, f4, f8; f2 = f*f; f4 = f2*f2; f8 = f4*f4; return kef*f8*f4;
48
Συναρτήσεις ως εργαλείο αφαίρεσης
Με τη χρήση συναρτήσεων επιτυγχάνουμε: Αποφυγή επανάληψης κώδικα Ανάλυση προβλήματος σε ευκολότερα Περισσότερο κατανοητά προγράμματα (χρήση ονομάτων συναρτήσεων αντί κώδικα υπολογισμού) Έμφαση στο «τι» υπολογίζουμε, όχι στο «πώς» Π.χ., στη run αρκεί να ξέρουμε τι υπολογίζει η ethsia_apodosh, όχι πως το υπολογίζει
49
Είσοδος int Εύρεση ηλικίας από ημ/νία γέννησης int x;
x = readInt(); /* Πρόγραμμα αναμένει χρήστη να πληκτρολογήσει ημ/νία γέννησης*/ int age = 2016-x; println(age);
50
Είσοδος int Είσοδος με μήνυμα προτροπής
x = readInt(”Δώσε ημ/νία γέννησης:”);
51
Είσοδος double τιμών Υπολογισμός τετραγώνου της υποτείνουσας
double a, b; a = readDouble(”Μήκος πλευράς α: ”); b = readDouble(”Μήκος πλευράς β: ”); print(”Τετράγωνο πλευράς γ = ”); println(a*a+b*b); Πώς θα κατασκευάζαμε μια συνάρτηση για τον υπολογισμό του τετραγώνου της υποτείνουσας;
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.