ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Eισαγωγή στον προγραμματισμό Δομές ελέγχου (Παραδείγματα Ελέγχου Ροής) Διδάσκων: Ν. Μαμουλής
Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς.
ΜΥΥ105: Εισαγωγή στον Προγραμματισμό Έλεγχος Ροής - Παραδείγματα Χειμερινό Εξάμηνο 2014
Δίσεκτο έτος Ένα έτος είναι δίσεκτο αν διαιρείται ακριβώς με το 400 ή διαιρείται ακριβώς με το 4 και δεν διαιρείται ακριβώς με το 100. Υπολογίστε αν ένα δοθέν έτος είναι δίσεκτο. year = int(input('Enter a year: ')) if year%400 == 0: print(year, 'is a leap year') elif year%4 == 0 and year%100 != 0: else: print(year, 'is a common year')
ln(2) – συγκλίνον άθροισμα Ο φυσικός λογάριθμος του 2 μπορεί να υπολογιστεί με την εξίσωση: ln(2) = 1/1 – 1/2 + 1/3 – 1/4 =… from math import log print('computes ln(2) up to a given accuracy’) error = float(input('allowed error = ')) sum=0 previous=1000 #a very large integer sign=-1 i=1 while abs(sum-previous)>error: previous=sum sign=sign*(-1) sum=sum+sign/float(i) i=i+1 print('%f %f %10.8f’ % (sum, log(2), abs(sum-log(2)))) log(): φυσικός λογάριθμος log(x,base)= log(x)/log(base)
Προπαίδεια του 7 Τύπωσε στοιχισμένα την προπαίδεια του 7. print ('Προπαίδεια του 7') for i in range (1,11): print('%2d x 7 = %2d'%(i,i*7)) 1 x 7 = 7 2 x 7 = 14 3 x 7 = 21 4 x 7 = 28 5 x 7 = 35 6 x 7 = 42 7 x 7 = 49 8 x 7 = 56 9 x 7 = 63 10 x 7 = 70
Πίνακας προπαίδειας Τύπωσε στοιχισμένα τις προπαίδειες του 1 εώς του 10. print ('Πίνακας Προπαίδειας') for i in range (1,11): for j in range (1,11): print('%2dx%d=%2d'%(i,j,i*j),end=' ') print() Τυπώνει ένα κενό στο τέλος αντί να αλλάξει γραμμή 1x1= 1 1x2= 2 1x3= 3 1x4= 4 1x5= 5 1x6= 6 1x7= 7 1x8= 8 1x9= 9 1x10=10 2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 2x6=12 2x7=14 2x8=16 2x9=18 2x10=20 3x1= 3 3x2= 6 3x3= 9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27 3x10=30 4x1= 4 4x2= 8 4x3=12 4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36 4x10=40 5x1= 5 5x2=10 5x3=15 5x4=20 5x5=25 5x6=30 5x7=35 5x8=40 5x9=45 5x10=50 6x1= 6 6x2=12 6x3=18 6x4=24 6x5=30 6x6=36 6x7=42 6x8=48 6x9=54 6x10=60 7x1= 7 7x2=14 7x3=21 7x4=28 7x5=35 7x6=42 7x7=49 7x8=56 7x9=63 7x10=70 8x1= 8 8x2=16 8x3=24 8x4=32 8x5=40 8x6=48 8x7=56 8x8=64 8x9=72 8x10=80 9x1= 9 9x2=18 9x3=27 9x4=36 9x5=45 9x6=54 9x7=63 9x8=72 9x9=81 9x10=90 10x1=10 10x2=20 10x3=30 10x4=40 10x5=50 10x6=60 10x7=70 10x8=80 10x9=90 10x10=100
Τρίγωνο από αστεράκια Τυπώστε ένα ορθογώνιο τρίγωνο με βάση και ύψος x αστεράκια. x = int(input('Input triangle\'s height: ')) for i in range (1,x+1): for j in range (1,i+1): print('*',end='') print() * ** *** **** ***** x = 5 x = int(input('Input triangle\'s height: ')) for i in range (1,x+1): print(i*'*')
Δέντρο από αστεράκια Τυπώστε ένα δέντρο από αστεράκια με ύψος x. * x = int(input('Input tree\'s height: ')) for i in range (1,x+1): for j in range (1,x-i+1): print(' ',end='') for j in range (1,2*i): print('*',end='') print() * *** ***** ******* ********* x = 5 x = int(input('Input tree\'s height: ')) for i in range (1,x+1): print(" "*(x-i),end='') print("*"*(2*i-1))
Ύψωση σε δύναμη: xy x = int(input('Input base: ')) y = int(input('Input power: ')) value = 1 for i in range(0, y): value *= x print('%d to the power of %d = %d' % (x, y, value)) x = int(input('Input base: ')) y = int(input('Input power: ')) from math import pow print('%d to the power of %d = %d' % (x, y, pow(x,y)))
Παραγοντικό: x! x! = 1*2*3*…*x x = int(input('Input a number: ')) f = 1 for i in range(1,x+1): f *= i print('%d! = %d' % (x,f)) x = int(input('Input a number: ')) from math import factorial print('%d! = %d' % (x, factorial(x)))
Υπολογισμός αθροίσματος ψηφίων ακέραιου αριθμού x = 4579, dsum = 4+5+7+9 = 25 n = int(input('Input a number: ')) dsum = 0 while n>0: dsum += n%10 n//=10 print('The sum of the number\'s digits is', dsum) n = int(input('Input a number: ')) dsum = 0 s = str(n) for i in s: dsum+=int(i) print('The sum of the number\'s digits is', dsum)
Υπολογισμός μέσης τιμής a = [4,5,7,9], μ = (4+5+7+9)/4 s = input('Input a set of numbers separated by commas: ') a = [eval(x) for x in s.split(",")] print('The mean of your numbers is',sum(a)/len(a))
Υπολογισμός τυπικής απόκλισης a = [4,5,7,9], μ = (4+5+7+9)/4, from math import sqrt s = input('Input a set of numbers separated by commas: ') a = [eval(x) for x in s.split(",")] print('The mean of your numbers is',sum(a)/len(a)) sumdiff = 0.0 for num in a: sumdiff += (num-sum(a)/len(a))**2 stdev = sqrt(sumdiff/len(a)) print('The standard deviation is',stdev)
Άσκηση: άθροισμα ζυγών Δίνεται μια λίστα αριθμών. Βρές το άθροισμα των ζυγών στη λίστα. s = input('Input a set of numbers separated by commas: ') a = [int(x) for x in s.split(",")] esum = 0 for x in a: if x%2 ==0: esum = esum + x print("The sum is: ", esum) s = input('Input a set of numbers separated by commas: ') a = [int(x) for x in s.split(",")] print("The sum is: ", sum([x for x in a if x%2==0]))
Άσκηση Δίνονται δύο λίστες αριθμών. Υπολόγισε μια νέα λίστα που περιέχει το γινόμενο όλων των ζευγών από τις 2 λίστες Π.χ. L1 = [3,4,5], L2 = [1,2], L3 = [3,6,4,8,5,10]. s1 = input('Input a set of numbers separated by commas: ') L1 = [int(x) for x in s1.split(",")] s2 = input('Input a set of numbers separated by commas: ') L2 = [int(x) for x in s2.split(",")] L3 = [] for x in L1: for y in L2: L3.append(x*y) print(L3)
Ορισμός και χρήση πινάκων Μπορούμε να χρησιμοποιήσουμε λίστες ως πίνακες Μπορούμε να χρησιμοποιήσουμε και πλειάδες Ποια η διαφορά; μονοδιάστατος πίνακας: A = [4 5 6 7] προσπέλαση του Αi με A[i] >>> A = [4,5,6,7] >>> A[2] 6 >>> B = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> B[2][1] 8 δισδιάστατος πίνακας: προσπέλαση του Bij με B[i][j]
Ορισμός και χρήση πινάκων Η αρχικοποίηση ενός πίνακα συγκεκριμένων διαστάσεων μπορεί να γίνει με την εντολή for. >>> A = [0 for i in range(10)] >>> A [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] >>> M=[[0 for i in range(3)] for i in range(3)] >>> M [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
Πρόσθεση πινάκων Πρόσθεση δύο πικάνων διαστάσεων N x M. N=M=2 A = [[0.0 for j in range(M)] for i in range(N)] B = [[0.0 for j in range(M)] for i in range(N)] C = [[0.0 for j in range(M)] for i in range(N)] for i in range(N): for j in range(M): A[i][j] = float(input('A[%d][%d]: ' % (i, j))) B[i][j] = float(input('B[%d][%d]: ' % (i, j))) C[i][j] = A[i][j] + B[i][j] print('C[%d][%d]:%7.2f ' % (i, j, C[i][j]), end = '') print('')
Πολλαπλασιασμός πινάκων N x N A = [[0.0 for j in range(N)] for i in range(N)] B = [[0.0 for j in range(N)] for i in range(N)] C = [[0.0 for j in range(N)] for i in range(N)] for i in range(N): for j in range(N): A[i][j] = float(input('A[%d][%d]: ' % (i, j))) B[i][j] = float(input('B[%d][%d]: ' % (i, j))) for k in range(N): C[i][j] += A[i][k]*B[k][j] print('C[%d][%d]:%7.2f ' % (i, j, C[i][j]), end = '') print('')
Εύρεση ελάχιστου σε πίνακα N=M=2 A = [[0.0 for j in range(N)] for i in range(N)] for i in range(N): for j in range(M): A[i][j] = float(input('A[%d][%d]: ' % (i, j))) minelem = A[0][0] if minelem > A[i][j]: minelem = A[i][j] print('The minimum element is ',minelem) Ερώτηση: Τι θα επιστρέψει το min(A); Ερώτηση: πως θα βρούμε το ελάχιστό ΚΑΙ τη θέση του;
Υπολογισμός ανάστροφου πίνακα N=2 M=3 A = [[0.0 for j in range(M)] for i in range(N)] invA = [[0.0 for j in range(N)] for i in range(M)] for i in range(N): for j in range(M): A[i][j] = float(input('A[%d][%d]: ' % (i, j))) invA[j][i] = A[i][j] for i in range(M): for j in range(N): print('invA[%d][%d]:%7.2f ' % (i, j, invA[i][j]), end = '') print('')
Άσκηση Όρισε ένα άνω τριγωνικό πίνακα, με τα στοιχεία από τη διαγώνιο και πάνω =1. M=[[0 for i in range(3)] for j in range(3)] for i in range(3): for j in range(3): if i<=j: M[i][j]=1 for row in M: print(row)
Τέλος Ενότητας
Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Ιωαννίνων» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.
Σημειώματα
Σημείωμα Ιστορικού Εκδόσεων Έργου Το παρόν έργο αποτελεί την έκδοση 1.0. Έχουν προηγηθεί οι κάτωθι εκδόσεις: Έκδοση 1.0 διαθέσιμη εδώ. http://ecourse.uoi.gr/course/view.php?id=1179 .
Σημείωμα Αναφοράς Copyright Πανεπιστήμιο Ιωαννίνων, Διδάσκων: Ν. Μαμουλής. «Εισαγωγή στον Προγραμματισμό. Δομές ελέγχου (Παραδείγματα Ελέγχου Ροής)». Έκδοση: 1.0. Ιωάννινα 2014. Διαθέσιμο από τη δικτυακή διεύθυνση: http://ecourse.uoi.gr/course/view.php?id=1179 .
Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού - Παρόμοια Διανομή, Διεθνής Έκδοση 4.0 [1] ή μεταγενέστερη. [1] https://creativecommons.org/licenses/by-sa/4.0/