print( x is positive ) Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από το χρήστη:

Σχετικά έγγραφα

Z L L L N b d g 5 * " # $ % $ ' $ % % % ) * + *, - %. / / + 3 / / / / + * 4 / / 1 " 5 % / 6, 7 # * $ 8 2. / / % 1 9 ; < ; = ; ; >? 8 3 " #


Λογικές εκφράσεις και μεταβλητές

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

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

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

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

ΜΑΘΗΜΑΤΑ PYTHON. Καθηγητής Ι. Δημητρίου.

Γλώσσες Προγραμματισμού Εφαρμογών - ΜΕΠΒ20

Γλώσσα προγραμματισμού python

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

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

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

Διάλεξη 1. Πράξεις Τελεστές Έλεγχος Ροής

Βασικές Ασκήσεις από τα Εργαστήρια της Python. Πέμπτη ΠΚ2 11:15, 13:15, 15:15, 17:15 και 19:15

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

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

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

Σημειωματάριο Δευτέρας 30 Οκτ. 2017

ιαφάνειες παρουσίασης #6

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

Ενότητα: Δυαδική Αναζήτηση Σχέδιο Δραστηριότητας: Παιχνίδι: Βρες τον αριθμό

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

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

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΕΞΙ (6)

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

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

Εισαγωγή στην Αριθμητική Ανάλυση

Βασικές Ασκήσεις από τα Εργαστήρια της PYTHON (εβδομάδα 5)

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

Γραφικά υπολογιστών Εργαστήριο 2 Παιχνίδια μαντεύματος με τυχαίους αριθμούς και loops

4. Επιλογή και Επανάληψη

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Εντολές ελέγχου ροής if, for, while, do-while

11/23/2014. Στόχοι. Λογισμικό Υπολογιστή

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Βασικά στοιχεία γλώσσας προγραμματισμού. Σπάχος Κυριάκος Καθηγητής Πληροφορικής ΠΕ19

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

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

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

Πληροφορική ΙΙ Θεματική Ενότητα 7

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Γλώσσες Προγραμματισμού Εφαρμογών - ΜΕΠΒ20

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ Η/Υ (ΟΜΑΔΑ ΘΕΜΑΤΩΝ A)

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

1. Κατασκευάστε ένα διάνυσμα με στοιχεία τους ζυγούς αριθμούς μεταξύ του 31 και 75

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

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

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

Προγραμματισμός Η/Υ. Ενότητα 4: Εντολές Επιλογής

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

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

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

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

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

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

Τιμές και τύποι, μεταβλητές Ένα πρώτο σημαντικό βήμα για να μάθουμε να προγραμματίζουμε είναι να

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

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

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

Εισαγωγή στους Υπολογιστές

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

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

Υπο-προγράμματα στη Fortran

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

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

Κεφάλαιο : Επαναλήψεις (o βρόγχος While) (Διάλεξη 9) Δομές Έλεγχου Προγράμματος

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

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

3. Γράψτε μία εντολή που να εμφανίζει π.χ. «Πόσα είναι τα κορίτσια του;» και μία που να εμφανίζει: «Τα κορίτσια του Τζειμς Μποντ είναι 4»

ΕΡΓΑΣΙΑ 1 Ημερομηνία Ανάρτησης: 02/02/2017 Ημερομηνία Παράδοσης: 16/02/2017, 09:00 π.μ. Στόχος Ορισμός

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Σφάλματα, εξαιρέσεις, εκσφαλμάτωση Χειμερινό Εξάμηνο 2016

Πληροφορική ΙΙ Θεματική Ενότητα 5

Τυχαίοι αριθμοί ρίξε μια «ζαριά»

Να γράψετε τους αριθμούς 1, 2, 3 από τη Στήλη Α και δίπλα το γράμμα α, β, γ, δ, ε από τη Στήλη Β που δίνει τη σωστή αντιστοιχία.

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

song='''εγώ μετράω τα ρέστα μου να βγάλω κι άλλο μήνα

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

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

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

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

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Φύλλο Εργασίας 3. Μια γρήγορη επανάληψη από τα προηγούμενα

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

Στόχοι και αντικείμενο ενότητας. Προτάσεις επανάληψης. Έλεγχος ροής προγράμματος. #5.. Εντολές Επανάληψης

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

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

Transcript:

37 ΛΑΜΒΑΝΟΝΤΑΣ ΑΠΟΦΑΣΕΙΣ 1. Εκτέλεση υπό συνθήκη if x >0: print('x is positive') x > = 0 print( x is positive ) Σχήμα: Η λογική του if then Στο διερμηνευτή Python, προσοχή στη στοίχιση, διότι γίνεται από το χρήστη:

38 2. If με δύο δυνατότητες (if else) # if even odd.py x=2 if x%2 == 0 : print(x, ' is even') else : print(x, ' is odd') x=3 if x%2 == 0 : print(x, ' is even') else : print(x, ' is odd') RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36 32/if even odd.py 2 is even 3 is odd print(x, ' is even') x%2 == x print(x, ' is odd') Σχήμα: Η λογική του if then else

39 ΕΦΑΡΜΟΓΗ ΣΤΟ SHELL ΛΟΓΙΚΕΣ ΕΚΦΡΑΣΕΙΣ (Boolean expression) Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. 5 ==5 True 5==6 False type(true) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'true' is not defined type(true) <class 'bool'> x=3 y=4 x>5 and y>5 False 17 and True True ΕΚΤΕΛΕΣΗ ΥΠΟ ΣΥΝΘΗΚΗ if x>0: print('x is positive') x is positive if x<10: print ('pass') pass ΕΝΑΛΛΑΚΤΙΚΗ ΕΚΤΕΛΕΣΗ if x%2 == 0: print ('x is even') else: print ('x is odd') x is odd

40 ΑΛΥΣΙΔΩΤΗ ΣΥΝΘΗΚΕΣ if x<y: print ('x less than y') elif x>y: print ('x greater than y') else: print ('x equal y') x less than y ΚΥΒΩΤΙΣΜΕΝΕΣ ΣΥΝΘΗΚΕΣ if x==y: print ('x=y') else: if x<y: print ('x<y') else: print ('x>y') x<y if 0<x: if x<10: print('x positive single digit') x positive single digit if 0<x and x <10: print('x positive single digit') x positive single digit

41 ΕΠΑΝΑΛΗΨΕΙΣ, ITERATIONS, LOOPS 1. for loop for it in range(4): print(it) 0 1 2 3 for it in range(4): it = it +1 print(it) 1 2 3 4 for it in range(4): it *=2 print(it) 0 2 4 6 for it in range(4): it = it**2 print(it) 0 1 4 9 sum = 0 for it in range(4): sum = sum + it print (it," ",sum) 0 0 1 1 2 3

42 3 6 for it in range(4,9): print(it) 4 5 6 7 8 y = 9 for it in range(4,y): print(it) 4 5 6 7 8 myrange = [1,3,5,7,11,13,17,19] for i in myrange: print (i) 1 3 5 7 11 13 17 19 friends = ['Γιάννης', 'Νίκος', 'Θωμάς', 'Vicky'] for friend in friends: print ('Καλημέρα ', friend) Καλημέρα Γιάννης Καλημέρα Νίκος Καλημέρα Θωμάς Καλημέρα Vicky myrange = [1,3,5,7,11,13,17,19] count = 0 for it in myrange: count = count + 1

43 print ('Count= ',count) Count= 8 Total= 0 total = 0 for it in myrange: total = total + it print('total=',total) Total= 76 # For i = 34.7 To 43.8 Step 0.1 # s = s + i for x in range( 347, 438, 1): print (x/10) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36 32/for loops.py 34.7 34.6 34.5 34.4 43.4 43.5 43.6 43.7 # For i = 34.7 To 43.8 Step 0.1 # s = s + i for x in range( 347, 439, 1): print(x/10) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36 32/for loops.py 34.7 34.6 34.5 34.4 43.4 43.5

44 43.6 43.7 43.8 for i in range(256): print (i,chr(i)) Τυπώνει τους χαρακτήρες ASCII. Πχ print (65,chr(65)), τυπώνει A. Μέρος από τη λίστα των 256 χαρακτήρων που τυπώνει το πρόγραμμα είναι το εξής: 0 29 Χαρακτήρες ελέγχου και άλλοι χαρακτήρες 30 31 32 33! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * 43 + 44, 45 46. 47 / 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63? 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 125 } 126 ~ 127 128 129 130 131 ƒ 132 133 134 135 136 ˆ 137 138 Š 139 140 Œ 141 142 143 144 145 146 147 148 149 150 151 152 153 154 š 155 156 œ 157 158 159 Ÿ 160 161 162 163 164 165 166 167 168 169 170 ª 171 «172 173 174 175 ˉ 176 177 ± 178 ² 179 ³ 180 181 µ 182 183 184 185 ¹ 186 º 187» 188 ¼ 189 ½ 190 ¾ 191 192 À 193 Á 194  195 à 196 Ä 197 Å 198 Æ 199 Ç 200 È 201 É 202 Ê 203 Ë 204 Ì 205 Í 206 Î 207 Ï 208 Ð 209 Ñ 210 Ò 211 Ó 212 Ô 213 Õ 214 Ö 215 216 Ø 217 Ù 218 Ú 219 Û 220 Ü 221 Ý 222 Þ 223 ß 224 à 225 á 226 â 227 ã 228 ä 229 å 230 æ 231 ç 232 è 233 é 234 ê 235 ë 236 ì 237 í 238 î 239 ï 240 ð 241 ñ 242 ò 243 ó 244 ô 245 õ 246 ö 247 248 ø 249 ù 250 ú 251 û 252 ü 253 ý 254 þ 255 ÿ

45 None Η None είναι μια ειδική σταθερά που την αποθηκεύομε σε μια μεταβλητή για να σημειώσομε τη μεταβλητή ως «κενή». a = None print(a) None Ανακυκλώσεις για μέγιστο και ελάχιστο #maximum.py myrange = [3, 14, 21, 9, 73, 25] largest = None print('before: ', largest) for it in myrange: if largest is None or it > largest: largest = it print ('Εντός ανακύκλωσης: ', it, largest) print ('Εκτός ανακύκλωσης largest= ', largest) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/maximum.py Before: None Εντός ανακύκλωσης: 3 3 Εντός ανακύκλωσης: 14 14 Εντός ανακύκλωσης: 21 21 Εντός ανακύκλωσης: 9 21 Εντός ανακύκλωσης: 73 73 Εντός ανακύκλωσης: 25 73 Εκτός ανακύκλωσης largest= 73 Άσκηση Ο κώδικας για να βρούμε την ελάχιστη τιμή στη λίστα είναι παρόμοιος. Αναπτύξτε.

46 Μια function για την εύρεση της μέγιστης τιμής #maximum-function.py def maximum(myrange): largest = None for it in myrange: if largest is None or it > largest: largest = it print ('largest from function= ', largest) return largest def main(): # Ορισμός driver myrange = [3, 14, 21, 9, 73, 25] large = maximum(myrange) # Κλήση function print ('largest from driver= ', large) main() RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/maximumfunction.py largest from function= 73 largest from driver= 73 Μια μικρή τροποποίηση της εντολής return #maximum-function.py def maximum(myrange): largest = None for it in myrange: if largest is None or it > largest: largest = it print ('largest from function= ', largest) return largest, ' is the largest' def main(): # Ορισμός driver myrange = [3, 14, 21, 9, 73, 25] large = maximum(myrange) # Κλήση function print ('largest from driver= ', large) main() RESTART: C:\Users\User\AppData\Local\Programs\Python\Python36-32\maximumfunction.py largest from function= 73 largest from driver= (73, ' is the largest')

47 Άσκηση Ο κώδικας για μια function που θα δίνει την ελάχιστη τιμή στη λίστα είναι παρόμοιος. Αναπτύξτε. Ασκήσεις 1. Αναπτύξτε μια function που βρίσκει το άθροισμα των τιμών μιας λίστας. 2. Αναπτύξτε μια function που βρίσκει τη μέση τιμή των τιμών μιας λίστας. 3. Αναπτύξτε μια function που βρίσκει το άθροισμα των τετραγώνων των τιμών μιας λίστας. 4. Αναπτύξτε μια function που βρίσκει τη διακύμανση των τιμών μιας λίστας.

48 2. while loop #while-prog1.py n = 5 while n > 0: print(n) n = n - 1 print('ektos loop') RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/while-prog1.py 5 4 3 2 1 Ektos loop #while-prog2.py # # Βρίσκει την πρώτη δύναμη του 2 # που είναι μεγαλύτερη του 100 # n = 2 while n <= 100: n = 2 * n print(n) print('πρώτη δύναμη του 2 > 100 είναι ', n) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/while-prog2.py 4 8 16 32 64 128 Πρώτη δύναμη του 2 > 100 είναι 128

49 Ατέρμων ανακύκλωση # infinite_loop.py ατέρμων ανακύκλωση # j = 1 while True: print (j) j = j + 1 Αν κάνετε το λάθος και τρέξετε αυτό το πρόγραμμα, θα μάθετε πολύ γρήγορα πώς να τερματίζετε μια διαδικασία Python που τρέχει ή θα πατήσετε το πλήκτρο τερματισμού του υπολογιστή σας. Ωστόσο, υπάρχει τρόπος τερματισμού με χρήση του break. Παραδείγματος χάριν, # infinite_loop_break.py ανακύκλωση με διακοπή, break # j = 1 while True: print (j) j = j + 1 line = input(">") # μήνυμα για το χρήστη if line == "s": # αν ο χρήστης πληκτρολογήσει s, τότε break # το πρόγραμμα διακόπτεται print (line) print("s") RESTART: C:\Users\User\AppData\Local\Programs\Python\Python36-32\infinite_loop.py 1 > 2 > 3 > 4 > 5 > 6 >s s Το πρόγραμμα αυτό δίνει ένα υπόδειγμα για την ανάπτυξη χρήσιμων ανακυκλώσεων σε μεγαλύτερα προγράμματα.

50 Ατέρμων ανακύκλωση και break, password #while-prog3-break-infinite.py # # Λαμβάνει input από το χρήστη μέχρι # να τυπώσει τη λέξη done # while True: line = input('>') if line == 'done': break print(line) print('done') RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/while-prog2.py >hi hi >pass pass >done Done Ως εφαρμογή για την εισαγωγή password σε ένα πρόγραμμα: #while-prog3-break-infinite.py # # Λαμβάνει input από το χρήστη μέχρι # να τυπώσει τη λέξη done # while True: line = input('γράψε το password > ') if line == 'done': break print(line) print('done') RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/while-prog2.py Γράψε το password > tria tria Γράψε το password > pass pass Γράψε το password > hi hi Γράψε το password > done Done

51 Ασκήσεις 1. Γράψτε ένα πρόγραμμα που τυπώνει διαδοχικές δυνάμεις του 2 και τερματίζει μετά τη 2 10. 2. Αναπτύξτε πρόγραμμα που θα βρίσκει το γινόμενο Ν! για Ν=10. Αυξείστε σταδιακά το Ν και βρείτε ποια είναι η μεγαλύτερη τιμή του Ν για την οποία ο υπολογιστής σας επιτρέπει την εύρεση του Ν!. 3. Αναπτύξτε πρόγραμμα που θα βρίσκει το άθροισμα 1 + 1/2 + 1/3 + + 1/10. 4. Αναπτύξτε πρόγραμμα που θα βρίσκει το απαραίτητο Ν, ώστε το αρμονικό άθροισμα 1 + 1/2 + 1/3 + + 1/Ν να γίνει μεγαλύτερο ή ίσο δοθέντος αριθμού limit. 5. Αναπτύξτε πρόγραμμα που εισάγει αριθμούς από το πληκτρολόγιο έως ότου δοθεί ένας αριθμός μεγαλύτερος του 30. 6. Να αναπτυχθεί πρόγραμμα καταμέτρησης αριθμών (πχ ηλικιών ενηλίκων) μεταξύ 18 και 65. 7. Να αναπτυχθεί πρόγραμμα που εισάγει ακέραιους αριθμούς από το πληκτρολόγιο και βρίσκει το άθροισμα των αρτίων και των περιττών. Το πρόγραμμα να τερματίζει μόλις εισαχθεί ο χαρακτήρας q. 8. Να αναπτυχθεί πρόγραμμα που εισάγει Ν αριθμούς από το πληκτρολόγιο και υπολογίζει το μέσο και τη διακύμανση αυτών. 9. Να αναπτυχθεί πρόγραμμα που υπολογίζει για x=1,2,3,4,5,6,7,8,9,10 την τιμή της συνάρτησης 2 2 f( x) ( x 3x 8) [( x 3)( x 2x 3)]. Επίσης να τυπώνει κατάλληλο μήνυμα κάθε φορά που δεν είναι δυνατόν να υπολογιστεί μια τιμή για την f(x).

52 Τετραγωνική ρίζα Επαναλήψεις χρησιμοποιούντα σε προγράμματα για να υπολογίσουν αριθμητικά αποτελέσματα αρχίζοντας από μια προσεγγιστική τιμή και σταδιακά βελτιώνοντας το αποτέλεσμα. Παραδείγματος χάριν για να υπολογίσομε τετραγωνικές ρίζες αριθμών χρησιμοποιούμε τη μέθοδο του Newton, η οποία εργάζεται ως εξής. Θεωρούμε ένα μη αρνητικό αριθμό a και έστω x μια αρχική προσέγγιση του a. Τότε μια καλύτερη προσέγγιση δίνεται από τον τύπο / 2 Παραδείγματος χάριν, αν a=4 και x=3, τότε δοκιμάζομε Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:14:34) [MSC v.1900 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. a=4.0 x=3.0 y=(x+a/x)/2 2.1666666666666665 x=y y=(x+a/x)/2 print(y) 2.0064102564102564 x=y y=(x+a/x)/2 print(y) 2.0000102400262145 x=y y=(x+a/x)/2 print(y) 2.0000000000262146 Αν συνεχίσομε έτσι μετά από μερικές επαναλήψεις, η προσέγγιση θα είναι σχεδόν ακριβής. Οι παραπάνω επαναλήψεις μπορούν να γραφούν υπό τη μορφή του ακόλουθου προγράμματος.

53 #program-square-root-of-2.py from math import sqrt a=2 #The number x=2 #Initial estimation of the square root of number while True: print(x) y = (x + a/x) / 2 if y == x: #Αν συνθήκη αληθής, τότε τερματίζει break x = y print(x) print('intrinsic square root of ', a,' is ', sqrt(a)) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-squareroot-of-2.py 2 1.5 1.4166666666666665 1.4142156862745097 1.4142135623746899 1.414213562373095 1.414213562373095 Intrinsic square root of 2 is 1.4142135623730951 Το πρόγραμμα έδωσε λύση αλλά είναι κακά σχεδιασμένο, διότι ελέγχει την ισότητα των πραγματικών αριθμών ως εάν να ήταν ακέραιοι. Ο σωστός έλεγχος ισότητας πραγματικών πρέπει να γίνεται εντός προκαθορισμένης ακρίβειας: if abs(y-x) < eps: break όπου eps μπορεί να έχει την τιμή 0.0000001 ή eps = 0.5e10-14, η οποία προσδιορίζει πόσο κοντά είναι οι αριθμοί. Ασκήσεις 1. Τροποποιείστε το παραπάνω πρόγραμμα με την εισαγωγή του if. 2. Γενικεύσατε το πρόγραμμα ώστε να βρίσκει την τετραγωνική ρίζα οπουδήποτε θετικού αριθμού θα δίνει ο χρήστης με input. 3. Να γράψετε το πρόγραμμα αυτό υπό τη μορφή μιας function που θα ονομάσετε square_root, η οποία θα λαμβάνει το a ως παράμετρο και θα επιστρέφει την τετραγωνική ρίζα του a. Να γράψετε έναν driver που θα τρέχει την square_root.

54 ΛΥΣΗ 1 #program-square-root-of-2-eps.py from math import sqrt eps = 0.00000000000001 print(eps) a=2 #The number x=2 #Initial estimation of the square root of number while True: print(x) y = (x + a/x) / 2 if abs(y-x) < eps: break x = y print(x) print('intrinsic square root of ', a,' is ', sqrt(a)) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-squareroot-of-2_eps.py 1e-14 2 1.5 1.4166666666666665 1.4142156862745097 1.4142135623746899 1.414213562373095 1.414213562373095 Intrinsic square root of 2 is 1.4142135623730951 ΛΥΣΗ 2 #program-square-root-of-number_eps.py from math import sqrt eps = 0.00000000000001 print(eps) a=float(input('number:? ')) #The number x=a #Initial estimation of sqrt it=0 #Number of iterations while True: print(x) y = (x + a/x) / 2 it = it + 1

55 if abs(y-x) < eps: break x = y print(x) print('number of iterations =',it) print('intrinsic square root of ', a,' is ', sqrt(a)) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-squareroot-of-number_eps.py 1e-14 number:? 3 3.0 2.0 1.75 1.7321428571428572 1.7320508100147274 1.7320508075688772 1.7320508075688772 Intrinsic square root of 3.0 is 1.7320508075688772 RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-squareroot-of-number_eps.py 1e-14 number:? 18567.789 18567.789 9284.3945 4643.197196146192 2323.5980596741897 1165.7945119564515 590.8608330964777 311.1429058180837 185.40949300701544 142.7771260210372 136.41224543589593 136.2637554497746 136.2636745431685 136.26367454314448 136.26367454314448 Intrinsic square root of 18567.789 is 136.26367454314448 RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-squareroot-of-number_eps.py 1e-14 number:? 1879345.4567 1879345.4567 939673.22835 469837.6141744679

56 234920.80708191296 117464.40349626067 58740.20138632183 29386.097790654163 14725.025673429578 7426.327511757807 3839.6963827879986 2164.573980798136 1516.401387359304 1377.8735165767398 1370.9098980904698 1370.8922120330235 1370.8922119189385 1370.8922119189385 Number of iterations = 16 Intrinsic square root of 1879345.4567 is 1370.8922119189385 Φαίνεται ότι το πρόγραμμα δουλεύει καλά.

57 ΛΥΣΗ 3 #program-square-root-function.py from math import sqrt eps = 0.00000000000001 print(eps) def square_root(a): # Ορισμός Function x=a # Initial estimation of sqrt it=0 # Number of iters while True: print(x) y = (x + a/x) / 2 it = it + 1 if abs(y-x) < eps: break x = y return 'root and iters: ',x,it def main(): # Driver a = float(input('number:? ')) # Input number sqroot = square_root(a) print ('square root of ', a,' is ', sqroot) #print('number of iterations =',it) print('intrinsic square root of ', a,' is ', sqrt(a)) main() Προσέξτε ότι εντολή eps = 0.00000000000001 είναι εκτός driver, δηλαδή η eps έχει καθολική ισχύ, σε driver και function. Προσοχή επίσης στην εντολή return της function return 'root and iters: ',x,it και στις εντολές sqroot = square_root(a) print ('square root of ', a,' is ', sqroot) RESTART: C:/Users/User/AppData/Local/Programs/Python/Python36-32/program-square-root-ofnumber_function.py 1e-14 number:? 3 3.0 2.0 1.75 1.7321428571428572 1.7320508100147274 1.7320508075688772 square root of 3.0 is ('root and iters: ', 1.7320508075688772, 6)

58 Intrinsic square root of 3.0 is 1.7320508075688772 Ακόμη ένα παράδειγμα, 1e-14 number:? 10 10.0 5.5 3.659090909090909 3.196005081874647 3.16245562280389 3.162277665175675 3.162277660168379 square root of 10.0 is ('root and iters: ', 3.162277660168379, 7) Intrinsic square root of 10.0 is 3.1622776601683795 Τετραγωνίζομε τον εκτιμητή της ρίζας και βλέπομε ότι είναι ακριβής σε 14 δεκαδικά ψηφία: 3.1622776601683795**2 10.000000000000002

59 Γενίκευση του προγράμματος που βρίσκει την τετραγωνική ρίζα. Η μέθοδος NEWTON RAPHSON Θα αναπτύξομε ένα πρόγραμμα που βρίσκει τις ρίζες μιας εξίσωσης 0 δηλαδή βρίσκει τιμές της x που ικανοποιούν την εξίσωση. Η υποκείμενη ιδέα είναι ότι αν έχομε μια εκτίμηση της ρίζας, η κλίση της συνάρτησης f(x) μπορεί να χρησιμοποιηθεί για να βρει μια καλύτερη εκτίμηση. Αν δίνεται το σημείο x=a, αν f είναι η τιμή της συνάρτησης στο σημείο αυτό και αν k είναι η κλίση, τότε αποδεικνύεται ότι μια καλύτερη τιμή θα είναι στο σημείο b, όπου b = a f / k Επομένως, αρκεί να υπολογίσομε την κλίση της f(x), η οποία δίνεται από την παράγωγο f (x). Η μέθοδος αυτή καλείται μέθοδος των Newton-Raphson. Ως εφαρμογή της μεθόδου, να αναπτυχθεί πρόγραμμα προσέγγισης της τετραγωνικής ρίζας ενός μη αρνητικού αριθμού number με τη μέθοδο Newton-Raphson ως εξής: Αν app είναι μια προσέγγιση του number, τότε (number/app + app)/2 είναι καλύτερη προσέγγιση. Χρησιμοποιείστε ως κριτήριο τερματισμού των επαναλήψεων τη συνθήκη number 1 10 2 app 6 eps. Tο κριτήριο τερματισμού Μια ανακύκλωση της μορφής repeat-until είναι αυτό που ταιριάζει στο πρόβλημα. Προσέξτε ότι το κριτήριο τερματισμού μπορεί να γραφεί ως εξής: number 1 eps 1 eps 2 app ή 2 2 (1 eps) app number (1 eps) app ή καθώς το eps τείνει στο μηδέν, 2 number app, αυτό δηλαδή που θέλομε να δείξομε. Επειδή όμως στον υπολογιστή έχομε υπολογιστική ανακρίβεια, χρησιμοποιούμε αυτή την ανωτέρω ισότητα υπό προσεγγιστική μορφή, πράγμα που δίνει το κριτήριο τερματισμού. Na αναπτύξετε ένα πρόγραμμα που βρίσκει μια ρίζα της εξίσωσης.