ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ 1
2η Εργασία (Project)
Σκοπός της εργασίας είναι να φτιάξετε ένα πρόγραμμα που διαβάζει το
κείμενο με όνομα text.txt, το οποίο βρίσκεται στον ίδιο κατάλογο με το
πρόγραμμα σας, το κωδικοποιεί και τυπώνει το κωδικοποιημένο κείμενο
σε ένα νέο αρχείο με όνομαmathXXXX crypt text.txt, όπου XXXX
είναι ο ΑΜ σας.
Για την κωδικοποίηση να χρησιμοποιήσετε τη συναρτήση
subscrypto() που παρουσιάστηκε στο μάθημα (Μπορείτε να την κατε-
βάσετε από την ιστοσελίδα του μαθήματος). Ως κλειδί της κωδικοποίησης
θα πρέπει χρησιμοποιήσετε μια μετατόπιση της αγγλικής αλφαβήτου κα-
τά ένα φυσικό αριθμό από 0 έως 25. ΄Ετσι μια μετατόπιση κατά 3 της
αγγλικής αλφαβήτου είναι: ‘defghijklmnopqrstuvwxyzabc’.
Υπενθύμιση: Η κωδικοποίηση με την παραπάνω μέθοδο γίνεται με την
αντικατάσταση κάθε γράμματος της αλφαβήτου με ένα γράμμα από το
κλειδί. Η επιλογή γίνεται με βάση τον αριθμό της θέσης κάθε γράμματος
στην αλφάβητο. ΄Ετσι όποτε συναντάμε το γράμμα ‘a’ σε ένα κείμενο το
αντικαθιστούμε με το πρώτο γράμμα από το κλειδί, το γράμμα ‘b’ με το
δεύτερο γράμμα από το κλειδί κ.ο.κ.
Παραδείγματος χάριν έστω ότι το αρχείο text.txt είναι το ακόλουθο:
Do not worry about your difficulties in Mathematics
I can assure you mine are still greater
Τότε η εκτέλεση του προγράμματος που έγραψε ο φοιτητής με ΑΜ
3111, για να κωδικοποιήσει το παραπάνω κείμενο τυπώνει στην οθόνη τα
ακόλουθα, όπου με έντονα γράμματα (bold) είναι η είσοδος που πληκτρο-
λόγησε ο χρήστης.
Welcome to the cipher program of math3111.
Enter the integer to rotate the alphabet (0-25):3
Crypted text written in math3111 crypted text.txt
1
2
Το αρχείο math3111 crypted text.txt που θα δημιουργηθεί από
την παραπάνω εκτέλεση θα είναι:
Crypted text by math3111:
gr qrw zruub derxw brxu gliilfxowlhv lq pdwkhpdwlfv
l fdq dvvxuh brx plqh duh vwloo juhdwhu
End of crypted text.
Για την υλοποίηση του προγράμματος σας θα χρειαστείτε να φτιάξετε
τις ακόλουθες συναρτήσεις
1. Τη συνάρτηση readfile(): Παίρνει ως όρισμα ένα string, με όνομα
filename, το οποίο είναι το όνομα του αρχείου που θα διαβάσει, και
επιστρέφει μια λίστα με όνομα lines, που κάθε στοιχείο της θα είναι
μια γραμμή του αρχείου filename.
def readfile(filename):
# Python code
return lines
2. Τη συνάρτηση writefile(): Παίρνει ως όρισματα, ένα string με όνομα
new filename, και μια λίστα με όνομα new lines και δημιουργεί το αρ-
χείο με όνομα το new filename και σε κάθε γραμμή του αρχείου γράφει
κάθε στοιχείο της λίστας new lines. Υπενθύμιση: Για να γράψουμε
το στοιχείο [k] της λίστας ως μια γραμμή και το [k + 1] ως μια νέα
γραμμή σε ένα αρχείο, πρέπει ως τελευταίο χαρακτήρα στο [k] να είναι
το ”\n”.
def writefile(new_filename, new_lines):
# Python code
3. Τη συνάρτηση rotate(): Παίρνει ως όρισμα έναν φυσικό αριθμό από
το 0 έως το 25 και επιστρέφει τα γράμματα της αγγλικής αλφαβήτου
μετατοπισμένα κατά αυτό τον αριθμό δηλαδή το rotate(0) επιστρέφει
την αλφάβητο ‘abcdefghijklmnopqrstuvwxyz’, χωρίς μετατόπιση. Ε-
νώ το rotate(3) επιστρέφει ‘defghijklmnopqrstuvwxyzabc’, δηλαδή τα
3 πρώτα γράμματα έχουν πάει με την ίδια σειρά που είχαν στο τέλος.
def rotate(num):
# Python code
# key is the rotated alphabet the function returns
return key
Χρήσιμες εντολές που μπορεί να σας βοηθήσουν είναι οι ακόλουθες
όπου lst είναι μια λίστα:
3
• lst.append(obj): προσθέτει το αντικέιμενο obj στο τέλος της
λίστας
• len(lst): μήκος λίστας
• [ ]: κενή λίστα
Παράδοση
Θα πρέπει να υποβάλετε το πρόγραμμα σας mathXXXX.py, όπου XXXX
ο αριθμός μητρώου σας, στο ηλεκτρονικό σύστημα που βρίσκεται στη σε-
λίδα http://euler.math.uoc.gr/ moodle/moodle1314/course/view.php?id=7.
Για να μπορέσετε να υποβάλετε ηλεκτρονικά την εργασία σας πρέπει να
εγγραφείτε πρώτα στο ηλεκτρονικό σύστημα που βρίσκεται στην παρα-
πάνω διεύθυνση και στη συνέχεια και στο μάθημα που βρίσκεται στην πα-
ραπάνω σελίδα. Η εξέταση της άσκησης θα γίνει με ηλεκτρονικό τρόπο,
δηλαδή ο υπολογιστής θα τρέξει το πρόγραμμα που έχεται υποβάλει για
διάφορες περιπτώσεις και θα ελέγξει το αποτέλεσμα. Προγράμματα
που δεν έχουν τη μορφή mathXXXX.py δεν θα βαθμολο-
γηθούν.
οποιος μπορει να με βοηθησει να την υλοποιησω του ειμαι ευγνωμων.......
οποιος μπορε να με βοηθησει να την υλοποιησω ...του ευγνωμων
Project2.pdf
Project2.pdf