Τελικό Επαναληπτικό Διαγώνισμα 2013-2014 από το Στέκι

Ξεκίνησε από Νίκος Αδαμόπουλος, 30 Απρ 2014, 02:14:00 ΠΜ

« προηγούμενο - επόμενο »

Νίκος Αδαμόπουλος

Επαναληπτικό Διαγώνισμα για την Ανάπτυξη Εφαρμογών (2013-2014).

-- από την Oμάδα Διαγωνισμάτων του Στεκιού

Edit: προστέθηκε το αρχείο των λύσεων.

evoy

Έχετε αναρτήσει ή θα αναρτήσετε ενδεικτικές λύσεις ;

Νίκος Αδαμόπουλος

Παράθεση από: evoy στις 02 Μαΐου 2014, 01:19:00 ΜΜ
Έχετε αναρτήσει ή θα αναρτήσετε ενδεικτικές λύσεις ;

Σε λίγες μέρες θα αναρτηθούν και οι λύσεις...

epsilonXi

καλημέρα

έναν μικρό προβληματισμό έχω... θα μού άρεσε περισσότερο να μην ήτανε συνάρτηση το υποπρόγραμμα ΤΥΧΑΙΟΣ(α,β), αλλά διαδικασία ΤΥΧΑΙΟΣ(α,β,γ), με το σκεπτικό ότι ενώ θα καλείται και θα ξανακαλείται με τις ίδιες παραμέτρους, τα αποτελέσματα που θα δίνει θα είναι αλλιώτικα κάθε φορά... το οποίο σημαίνει ότι το αποτέλεσμα είναι -εν μέρει- ασυνάρτητο των δεδομένων

Νίκος Αδαμόπουλος

Παράθεση από: epsilonXi στις 04 Μαΐου 2014, 10:50:52 ΠΜ
καλημέρα

έναν μικρό προβληματισμό έχω... θα μού άρεσε περισσότερο να μην ήτανε συνάρτηση το υποπρόγραμμα ΤΥΧΑΙΟΣ(α,β), αλλά διαδικασία ΤΥΧΑΙΟΣ(α,β,γ), με το σκεπτικό ότι ενώ θα καλείται και θα ξανακαλείται με τις ίδιες παραμέτρους, τα αποτελέσματα που θα δίνει θα είναι αλλιώτικα κάθε φορά... το οποίο σημαίνει ότι το αποτέλεσμα είναι -εν μέρει- ασυνάρτητο των δεδομένων

Συνάρτηση αντίστοιχη της ΤΥΧΑΙΟΣ υπάρχει στις γλώσσες προγραμματισμού. Η διαδικασία που προτείνεις τι διαφορετικό/παραπάνω θα έκανε από την αντίστοιχη συνάρτηση;

Πάντως νομίζω ότι είναι σαφές ότι δεν θα φτιάξουμε τη συνάρτηση ΤΥΧΑΙΟΣ αλλά θεωρούμε ότι υπάρχει έτοιμη.

epsilonXi

Παράθεση από: Νίκος Αδαμόπουλος στις 04 Μαΐου 2014, 02:14:06 ΜΜ
Συνάρτηση αντίστοιχη της ΤΥΧΑΙΟΣ υπάρχει στις γλώσσες προγραμματισμού. Η διαδικασία που προτείνεις τι διαφορετικό/παραπάνω θα έκανε από την αντίστοιχη συνάρτηση;

αντίστοιχη της ΤΥΧΑΙΟΣ υπάρχει σε όλες τις γλώσσες, οκ, αλλά πόσες γλώσσες προγραμματισμού είναι που να διαχωρίζουν σε θεωρητικό ή πρακτικό επίπεδο τα υποπρογράμματα σε διαδικασίες και συναρτήσεις; εγώ μόνο την pascal έχω υπ' όψην μου...

αφού στη ΓΛΩΣΣΑ καλώς ή κακώς επιβιώνει ένας τέτοιος διαχωρισμός, μού κολλάει στο κεφάλι μου πιο καλά ως διαδικασία, παρά ως συνάρτηση... δεν επιμένω

αλλά είναι και η λέξη «συνάρτηση» που περιπλέκει τα πράγματα -πάντα μέσα στο κεφάλι μου αναφέρομαι- και με κάνει να θέλω το αποτέλεσμα να εξάγεται σε απόλυτη συνάρτηση/εξάρτηση με/από τις εισόδους, οπότε δε θα μού άρεσε τη μία να βλέπω ότι f(0,1) = 0.5 και την άλλη να βλέπω ότι f(0,1) = 0.94 ... άσε που δε θα μού άρεσε κι από μαθηματικής απόψεως κάτι τέτοιο

odysseas

Παράθεση από: epsilonXi στις 04 Μαΐου 2014, 07:24:42 ΜΜ
αλλά είναι και η λέξη «συνάρτηση» που περιπλέκει τα πράγματα -πάντα μέσα στο κεφάλι μου αναφέρομαι- και με κάνει να θέλω το αποτέλεσμα να εξάγεται σε απόλυτη συνάρτηση/εξάρτηση με/από τις εισόδους, οπότε δε θα μού άρεσε τη μία να βλέπω ότι f(0,1) = 0.5 και την άλλη να βλέπω ότι f(0,1) = 0.94 ... άσε που δε θα μού άρεσε κι από μαθηματικής απόψεως κάτι τέτοιο

Απ' όσο γνωρίζω, οι συναρτήσεις που παράγουν τυχαίους αριθμούς είναι μαθηματικές συναρτήσεις όπως όλες οι άλλες. Έχουν απλά μια "κρυφή" παράμετρο, το λεγόμενο seed που οδηγεί στον εκάστοτε τυχαίο αριθμό. Συνήθως το seed είναι η ώρα στο ρολόι του υπολογιστή. Όταν καλέσεις μια τέτοια συνάρτηση με το ίδιο seed, τότε παίρνεις τον ίδιο ψευδο-τυχαίο αριθμό.

Στα πλαίσια του ΑΕΠΠ δεν έχω δει και πολλές ασκήσεις να κάνουν χρήση μιας τέτοιας συνάρτησης και, από αυτή την άποψη, η χρήση της εδώ θα μπορούσε να συζητηθεί. Είναι βέβαιο όμως πως οι ασκήσεις που "ανοίγουν" αν δεχτεί κανείς να κάνει χρήση της ΤΥΧΑΙΟΣ είναι πολλές και ενδιαφέρουσες. Στην συγκεκριμένη άσκηση, θεωρώ προσωπικά ότι δεν θα είχε ιδιαίτερο ενδιαφέρον αν ζητούνταν από το χρήστη η ζαριά του.

itt

Παράθεση από: epsilonXi στις 04 Μαΐου 2014, 07:24:42 ΜΜ
αντίστοιχη της ΤΥΧΑΙΟΣ υπάρχει σε όλες τις γλώσσες, οκ, αλλά πόσες γλώσσες προγραμματισμού είναι που να διαχωρίζουν σε θεωρητικό ή πρακτικό επίπεδο τα υποπρογράμματα σε διαδικασίες και συναρτήσεις; εγώ μόνο την pascal έχω υπ' όψην μου...

Η Fortran έρχεται κατευθείαν στο κεφάλι.

Παράθεση από: epsilonXi στις 04 Μαΐου 2014, 07:24:42 ΜΜ
αφού στη ΓΛΩΣΣΑ καλώς ή κακώς επιβιώνει ένας τέτοιος διαχωρισμός, μού κολλάει στο κεφάλι μου πιο καλά ως διαδικασία, παρά ως συνάρτηση... δεν επιμένω

Γενικά ο διαχωρισμός ( συνήθως) είναι ότι διαδικασία (procedure, subroutine) ονομάζεις μια συνάρτηση που παίρνει κάποιο όρισμα και το μεταβάλλει, σε αντιδιαστολή με την συνάρτηση (function) που απλώς υπολογίζει κάτι με βάση τα ορίσματα που της δίνεις. Οπότε κολλάει καλύτερα ως συνάρτηση παρά ως διαδικασία, αλλά είναι περισσότερο θέμα convention.

Παράθεση από: epsilonXi στις 04 Μαΐου 2014, 07:24:42 ΜΜ
αλλά είναι και η λέξη «συνάρτηση» που περιπλέκει τα πράγματα -πάντα μέσα στο κεφάλι μου αναφέρομαι- και με κάνει να θέλω το αποτέλεσμα να εξάγεται σε απόλυτη συνάρτηση/εξάρτηση με/από τις εισόδους, οπότε δε θα μού άρεσε τη μία να βλέπω ότι f(0,1) = 0.5 και την άλλη να βλέπω ότι f(0,1) = 0.94 ... άσε που δε θα μού άρεσε κι από μαθηματικής απόψεως κάτι τέτοιο

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

COACH

ΔΗΜΗΤΡΗΣ ΘΩΜΟΥ

magic_technology

Αναρτήστε σας παρακαλώ τις λύσεις όσο πιο σύντομα μπορείτε, ευχαριστώ!!!

kostasprotopapas

Καθηγητής Πληροφορικής, απόφοιτος Τμήματος Πληροφορικής και Τηλεπικοινωνιών ΕΚΠΑ

Νίκος Αδαμόπουλος

Σε 1-2 μέρες θα ανεβάσουμε το αρχείο των λύσεων.
Παρόλα αυτά αν έχεις να προτείνεις κάποιες λύσεις, ανέβασέ τες για σχολιασμό.

kostasprotopapas

Καθηγητής Πληροφορικής, απόφοιτος Τμήματος Πληροφορικής και Τηλεπικοινωνιών ΕΚΠΑ

manpap

#13
Πολύ ωραία θέματα παιδιά, μπράβο σε όλους σας.

Μια ενδεικτική λύση για το 4ο θέμα (την έγραψα πολύ γρήγορα, θα χει κάποια λαθάκια. αλλά καλύπτει τη βασική ιδέα :-)
Αλγόριθμος θεμα4
Δεδομένα //Σ//
ΜΑΧ<- (-1)
Αρχή_επανάληψης
   Διάβασε γ,σ
! Καλεσε Υπολ_Λεξη(Σ,γ,σ,Λεξη,Ν) ! στον Λεξη[15] φερνει το αντιγραφο
   π<-0
   στοπ<-ψευδης
  Όσο σ+π<=15 και όχι στοπ επανάλαβε
    Αν Σ[γ,σ+π]≠'#' τότε
     Λέξη[π+1]<-Σ[γ,σ+π]
     π<-Π+1
    αλλιώς
     στοπ<-Αληθής
    Τέλος_αν
  τελος_Επαναληψης
  Ν<-π

! μεγαλυτερη λεξη
  Αν Ν>μαχ τότε
   μαχ<-χ
   θγ<-γ
   θσ<-σ
  Τελος_Αν

! εισαγωγή λέξης και ελεγχος
  π<-1
  λάθος<-ψευδής
  Αρχή_επανάληψης
    Διάβασε χ
    Αν Λέξη[π]=' ' τότε
     Λέξη[π]<-χ
    αλλιώς_αν Λέξη[π]<>χ τότε
     λαθος<- Αληθής
    Τέλος_αν
    π<-Π+1
  Μέχρις_ότου λαθος ή π>Ν
  Αν όχι λάθος τότε
    Για π από 1 μέχρι Ν
      Σ[γ,σ+π-1]<-Λέξη[π]
    τέλος_επανάληψης
  αλλιώς
   Γράψε 'λαθος λεξη'
  τελος_αν

! Κενά<-ΕλεγχοςΚενων(Σ)
κενά<-0
Για ι από 1 μέχρι 15
  Για ξ από 1 μέχρι 15
   Αν Σ[ι,ξ]=' ' τότε
     κενά<-κενά+1
   Τέλος_αν
  Τέλος_επανάληψης
τέλος_επανάληψης
Αν κενά<>0 τότε Γράψε Κενά
Μέχρις_ότου Κενά=0
Γράψε μαχ, θγ,θσ
Τέλος θεμα4
Συντηρώ το μυαλό μου ακοίμητο, λαγαρό, ανήλεο. Το αμολώ να παλεύει ακατάλυτα. Άλλο αργαστήρι να κάνω το σκοτάδι φως δεν έχω.
Ν. Καζαντζάκης

patsimo

#14
Γεια σε όλους και Χριστός Ανέστη
Καλή δύναμη και επιτυχία στα παιδιά. Ως γνωστό, να μην αγχώνονται ότι ΟΛΑ τα θέματα Πανελλαδικών θα είναι επιπέδου του Διαγωνίσματος του Στεκιού. Αυτό είναι ό,τι πρέπει για εξάσκηση (και φυσικά αξίζουν πολλά συγχαρητήρια στους αξιόλογους συναδέλφους που εργάστηκαν να βγάλουν τόσο ωραία θέματα).
Ακολουθεί μια λύση για το θέμα Δ που νομίζω δουλεύει. Σίγουρα θα έχει και άλλες, πιθανώς καλύτερες. Μπορείτε να ελέγξετε στη Γλώσσα βάζοντας μικρότερες τιμές για τον πίνακα π.χ. 5Χ5 πίνακα (προσοχή να αλλάξει ανάλογα ο έλεγχος εκεί που έχει το 16, "ΑΝ στ + i = 16 ΤΟΤΕ"...).
ΥΓ: Εννοείται η λύση μπορεί να 'χει και λάθη (αν και έγινε έλεγχος).
Να 'στε καλά,
Πάρης

ΠΡΟΓΡΑΜΜΑ ΣΤΑΥΡΟΛΕΞΟ
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: γρ, στ, γρ_μεγ, στ_μεγ, i, j, μήκος, μήκος_μεγ, πλ_συμπλ, κενά
  ΧΑΡΑΚΤΗΡΕΣ: λέξη[15], Σ[15, 15]
  ΛΟΓΙΚΕΣ: τέλος, τέλος_λέξης, αναντιστοιχία
ΑΡΧΗ
  κενά <- 0
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 15
    ΓΙΑ j ΑΠΟ 1 ΜΕΧΡΙ 15
      ΑΝ Σ[i, j] = " " ΤΟΤΕ
        κενά <- κενά + 1
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  τέλος <- ΨΕΥΔΗΣ
  μήκος_μεγ <- 0
  ΟΣΟ (ΟΧΙ τέλος) ΕΠΑΝΑΛΑΒΕ
    ΔΙΑΒΑΣΕ γρ, στ
    τέλος_λέξης <- ΨΕΥΔΗΣ
    αναντιστοιχία <- ΨΕΥΔΗΣ
    i <- 0
    πλ_συμπλ <- 0                  ! αριθμός σωστά συμπληρωμένων (ήδη) γραμμάτων
    ΟΣΟ (ΟΧΙ αναντιστοιχία) ΚΑΙ (ΟΧΙ τέλος_λέξης) ΕΠΑΝΑΛΑΒΕ
      ΑΝ στ + i = 16 ΤΟΤΕ
        τέλος_λέξης <- ΑΛΗΘΗΣ
      ΑΛΛΙΩΣ_ΑΝ Σ[γρ, στ + i] = "#" ΤΟΤΕ
        τέλος_λέξης <- ΑΛΗΘΗΣ
      ΑΛΛΙΩΣ
        ΔΙΑΒΑΣΕ λέξη[i + 1]           ! όχι τέλος λέξης - διάβασε επόμενο γράμμα
        ΑΝ Σ[γρ, στ + i] <> " " ΤΟΤΕ
          ΑΝ λέξη[i + 1] <> Σ[γρ, στ + i] ΤΟΤΕ
            αναντιστοιχία <- ΑΛΗΘΗΣ
          ΑΛΛΙΩΣ                                     !υπάρχει σωστό συμπληρωμένο
            πλ_συμπλ <- πλ_συμπλ + 1
          ΤΕΛΟΣ_ΑΝ
        ΤΕΛΟΣ_ΑΝ
        i <- i + 1
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
    ΑΝ τέλος_λέξης ΤΟΤΕ
      μήκος <- i                    !βγαίνοντας από ΟΣΟ το i είναι = μήκος λέξης
      ΓΙΑ j ΑΠΟ 0 ΜΕΧΡΙ μήκος - 1
        Σ[γρ, στ + j] <- λέξη[j + 1]
      ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
      κενά <- κενά - (μήκος - πλ_συμπλ)       ! μείωσε σωστά τα κενά σταυρόλεξου
      ΓΡΑΨΕ 'Κενά που απομένουν: ', κενά
      ΑΝ κενά = 0 ΤΟΤΕ
        τέλος <- ΑΛΗΘΗΣ
      ΤΕΛΟΣ_ΑΝ
      ΑΝ μήκος > μήκος_μεγ ΤΟΤΕ
        μήκος_μεγ <- μήκος
        γρ_μεγ <- γρ
        στ_μεγ <- στ
      ΤΕΛΟΣ_ΑΝ
    ΑΛΛΙΩΣ                                                        !αναντιστοιχία
      ΓΡΑΨΕ 'Αναντιστοιχία λέξης!'
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΡΑΨΕ 'Μήκος μεγαλύτερης λέξης οριζοντίως ', μήκος_μεγ, ' με πρώτο γράμμα στη γραμμή: ', γρ_μεγ, ' , στήλη: ', στ_μεγ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ