Τώρα είναι Πέμ 28 Μαρ 2024 06:21 pm

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]




Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 7 Δημοσιεύσεις ] 
Συγγραφέας Μήνυμα
ΔημοσίευσηΔημοσιεύτηκε: Δευτ 25 Φεβ 2008 12:42 am 
Χωρίς σύνδεση

Εγγραφή: Δευτ 22 Οκτ 2007 12:46 pm
Δημοσιεύσεις: 15
Μια εταιρεία κάνει διαγωνισμό για την πρόσληψη δεκαπέντε νέων στελεχών. Συνολικά προσήλθαν διακόσια άτομα τα οποία θα διαγωνισθούν σε ένα τεστ ικανοτήτων. Σε κάθε διαγωνιζόμενο δίνεται ένας κωδικός έτσι ώστε να αποφευχθούν λάθη από πιθανή συνωνυμία μεταξύ διαγωνιζομένων. Να δοθεί πρόγραμμα το οποίο:
Α. Να διαβάζει τον κωδικό, το όνομα και το βαθμό του κάθε υποψηφίου.
Β. Να υπολογίζει και να εμφανίζει το μέσο όρο των διαγωνιζομένων.
Γ. Να εμφανίζει τους κωδικούς, τα ονόματα και τους βαθμούς των διαγωνιζομένων που θα προσληφθούν ταξινομημένα σε αύξουσα σειρά ως προς τον κωδικό, θεωρείστε ότι δεν υπάρχουν ισοβαθμίες μεταξύ των υποψηφίων


Syntax: [ Download ] [ Hide ]
!*******************************************************************
! Program made by periptero                                        *
! periptero at gmail dot com                                       *
! Από το βιβλίο                                                    *
! ΕΠΑΝΑΛΗΨΗ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ *
! εκδόσεις ΕΝ ΔΥΝΑΜΕΙ Συγγραφείς Μαθιόπουλος-Ιορδανόπουλος         *
!*******************************************************************
ΠΡΟΓΡΑΜΜΑ  DIAGONISMOS
ΣΤΑΘΕΡΕΣ
  N=200
  M=15
ΜΕΤΑΒΛΗΤΕΣ
  ΑΚΕΡΑΙΕΣ: I,J
  ΧΑΡΑΚΤΗΡΕΣ: YPOCHFIOI[N], TEMP1
  ΑΚΕΡΑΙΕΣ: KODIKOS[N], TEMP
  ΠΡΑΓΜΑΤΙΚΕΣ: B[N], TEMP2,SUM, MO
ΑΡΧΗ
  SUM <-- 0
  ΓΙΑ I  ΑΠΟ  1  ΜΕΧΡΙ  N
    ΓΡΑΨΕ 'DOSE TON KODIKO TOU YPOCHFIOU '
    ΔΙΑΒΑΣΕ KODIKOS[I]
    ΓΡΑΨΕ 'DOSE TO ONOMA TOU YPOCHFIOU'
    ΔΙΑΒΑΣΕ YPOCHFIOI[I]
    ΓΡΑΨΕ 'DOSE TH BAUMOLOGIA TOU YPOCHFIOU '
    ΔΙΑΒΑΣΕ B[I]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ I  ΑΠΟ  1  ΜΕΧΡΙ  N
    SUM <-- SUM+B[I]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  MO <-- SUM/N
  ΓΡΑΨΕ ' O MESOS OROS TON YPOCHFION EINAI: ', MO
  ΓΙΑ I  ΑΠΟ  2  ΜΕΧΡΙ  N
    ΓΙΑ J  ΑΠΟ  N  ΜΕΧΡΙ  I  ΜΕ ΒΗΜΑ  -1
      ΑΝ B[J-1]<B[J]  ΤΟΤΕ
        TEMP <-- KODIKOS[J-1]
        KODIKOS[J-1] <-- KODIKOS[J]
        KODIKOS[J] <-- TEMP
        TEMP1 <-- YPOCHFIOI[J-1]
        YPOCHFIOI[J-1] <-- YPOCHFIOI[J]
        YPOCHFIOI[J] <-- TEMP1
        TEMP2 <-- B[J-1]
        B[J-1] <-- B[J]
        B[J] <-- TEMP2
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ I  ΑΠΟ  2  ΜΕΧΡΙ  M
    ΓΙΑ J  ΑΠΟ  M  ΜΕΧΡΙ  I  ΜΕ ΒΗΜΑ  -1
      ΑΝ KODIKOS[J-1]>KODIKOS[J]  ΤΟΤΕ
        TEMP <-- KODIKOS[J-1]
        KODIKOS[J-1] <-- KODIKOS[J]
        KODIKOS[J] <-- TEMP
        TEMP1 <-- YPOCHFIOI[J-1]
        YPOCHFIOI[J-1] <-- YPOCHFIOI[J]
        YPOCHFIOI[J] <-- TEMP1
        TEMP2 <-- B[J-1]
        B[J-1] <-- B[J]
        B[J] <-- TEMP2
      ΤΕΛΟΣ_ΑΝ
    ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
  ΓΙΑ I  ΑΠΟ  1  ΜΕΧΡΙ  M
    ΓΡΑΨΕ KODIKOS[I], YPOCHFIOI[I],B[I]
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
ΤΕΛΟΣ_ΠΡΟΓΡΑΜΜΑΤΟΣ


Τελευταία επεξεργασία από periptero και Τρί 03 Ιουν 2008 04:41 pm, έχει επεξεργασθεί 1 φορά/ες συνολικά

Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Δευτ 26 Μάιος 2008 10:57 am 
Χωρίς σύνδεση

Εγγραφή: Πέμ 01 Μάιος 2003 10:25 pm
Δημοσιεύσεις: 38
Τοποθεσία: Καλλιθέα Αττικής
Να κάνω πιο ενδιαφέρον το πρόγραμμα:
Θα ήθελα να δω την λύση χωρίς να μετακινούνται τα ονόματα αλλά να υπάρχει πίνακας δεικτών όπου το κάθε Χ όνομα δείχνει το επόμενο Χ (ταξινομημένο).

Σε κάθε εισαγωγή θα γίνεται μια γρήγορη ανίχνευση και θα παρεμβάλεται το στοιχείο (Κωδικός, όνομα και βαθμός) ανανενώνοντας τον δείκτη ΕΠΟΜΕΝΟ του προηγούμενου στοιχείου αντιγράφοντας πρώτα αυτόν τον δείκτη στο καινούργιο στοιχείο.

Ο πίνακας με τα στοιχεία ουδέποτε θα ταξινομηθεί αυτούσιος. Όλες οι αναφορές σ΄αυτόν θα γίνονται έμμεσα από τον πίνακα ΕΠΟΜΕΝΟ.
Για κάθε εισαγωγή στοιχείου θα απαιτηθεί μια σάρωση των στοιχείων. Δεν θα απαιτηθεί ξεχωριστό στάδιο ταξινόμησης, όπως στην λύση του periptero, η οποία είναι η πλέον χρονοβόρα (bubble sort).

Το επόμενο στάδιο είναι να φτιάξουμε μια γρήγορη αναζήτηση. Ετοιμάζουμε έναν πίνακα ΤΑΧΥΣ διαβάζοντας μια φορά την λίστα των ΕΠΟΜΕΝΟ...η οποία για κάθε επόμενο πάει μπροστά ή πίσω (να γιατι η προσπέλαση αυτή λέγεται ΤΥΧΑΙΑ ΠΡΟΣΠΕΛΑΣΗ και οι μνήμες RAM φτιάχτηκαν γι' αυτόν το σκοπό, RANDOM ACCESS MEMORY)...αλλά με την ανάγνωση προκαλούμε την παραγωγή της σωστής σειράς και την τοποθετούμε σε έναν πίνακα.

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

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

Αν ΠΕΡΙΕΧΟΜΕΝΟ ο πίνακας των στοιχείων, τότε θα έχουμε την τιμή ΕΠΟΜ όπου θα δείχνει το πρώτο στοιχείο του ΕΠΟΜΕΝΟ όπου σ΄αυτό θα φαίνεται το επόμενο στοιχείο. .
Ο πίνακας ΤΑΧΥΣ θα έχει στο στοιχείο 1 την τιμή της ΕΠΟΜ...και στο 2 την τιμή της ΕΠΟΜΕΝΟ(ΕΠΟΜ) και στην 3 την τιμή ΕΠΟΜΕΝΟ(ΕΠΟΜΕΝΟ(ΕΠΟΜ))....
Στον πίνακα ΕΠΟΜΕΝΟ θα υπάρχει ένα στοιχείο με τιμή 0 που θα σημαίνει δεν υπάρχει επόμενο (είναι δηλαδή το τελευταίο στοιχείο). Ο πίνακας ΤΑΧΥΣ δεν θα έχει πουθενά τιμή 0 (αν οι δείκτες του ΠΕΡΙΕΧΟΜΕΝΟ ξεκινούν από 1). Μεταξύ τους οι ΠΕΡΙΕΧΟΜΕΝΟ και ΕΠΟΜΕΝΟ έχουν αντιστοιχία ένα προς ένα...το ΠΕΡΙΕΧΟΜΕΝΟ(5) έχει επόμενο το ΠΕΡΙΕΧΟΜΕΝΟ(ΕΠΟΜΕΝΟ(5)) αλλά δεν σημαίνει ότι είναι το πέμπτο ταξινομημένο στοιχείο αλλά το πέμπτο που εισήχθηκε ως περιεχόμενο!


Έχω γράψει όλα όσα χρειάζεται κανείς για να φτιάξει το πρόγραμμα...ας δούμε λοιπόν την λύση σε ΓΛΩΣΣΑ!
Βρείτε την!

Μπορούμε να έχουμε έτοιμο τον πίνακα ΤΑΧΥΣ πριν την εισαγωγή του επόμενoυ στοιχείου....Μια ακόμα βελτίωση θα είναι η γνώση της θέσης στον ΤΑΧΥΣ και η απευθείας παρεμβολή με μετακίνηση μονο αυτών των δεικτών που χρειάζονται μια θέση παραπάνω. Μια ανώτερη ακόμα τεχνική είναι ο πίνακας ΤΑΧΥΣ να είναι σελιδοποιημένος όπου κάθε μετακίνηση να δημιουργεί πρώτα μετατοπίσεις σελίδων (άρα όχι στοιχείων αλλά δεικτών σε σελίδες)...και μετά να γίνεται μια μετακίνηση από μια σελίδα σε άλλη...και αυτές οι δυο σελίδες να έχουν η μία άνω και η άλλη κάτω κενό χώρο, πάλι μέσω ενός δείκτη, για το σκοπό αυτό υπήρχε από παλιά σύστημα σελιδοποίησης της μνήμης όπου ο αριθμός σελίδας αναφέρεται ως SEGMENT, http://en.wikipedia.org/wiki/Segmentation_(memory), όταν δεν αντιστοιχούσε σε ένα SEGMENT φυσική διεύθυνση, ούτε από την εικονική, τότε έβγαινε ένα EXCEPTION ή μπλέ οθόνη στα Windows....Τα segments είναι ακόμα χαρακτηριστικά της οικογένειας μικροεπεξεργαστών της Intel x86, σε αντίθεση με την οικογένεια της Motorola 68xxx που χρησιμοποιούσε flat model στην μνήμη...εννιαία ή επίπεδη...όλες οι διευθύνσεις να είναι μια συνέχεια...ενώ στα Segment το κάθε segment μπορούσε κανείς να το αναδιατάξει λογικά και είχε και το μειονέκτημα οι δείκτες να είναι περιορισμένοι εντός segment ενώ στο flat model οι δείκτες είναι μεγάλοι...και τους προβάλουν ως 32bit μοντέλο προγρμματισμού...και εννοούν το μέγεθος των δεικτών και η σχέση τους με την μνήμη.

Στην πληροφορική κερδίζει αυτός που έχει γενική εικόνα του υπολογιστή, από τους καταχωρητές, τον χειρισμό της μνήμης μέχρι και το πώς δουλεύουν τα interrupts, οι διακοπές! Και αυτό γιατί όλη αυτή η βασική γνώση αναπαράγεται μέσα στα προγράμματα...όπως έδειξα με τον πίνακα ΤΑΧΥΣ!

Δείτε τι σχέση υπάρχει μεταξύ εφαρμογής και μνήμης με μια εικόνα: http://en.wikipedia.org/wiki/Image:VirtualMem01.png

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


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Πέμ 29 Μάιος 2008 12:46 am 
Χωρίς σύνδεση

Εγγραφή: Πέμ 29 Μάιος 2008 12:43 am
Δημοσιεύσεις: 3
Periptero,

exw mia erwthsh.

To thema einai diko sou? Esy to skeftikes h mhpws einai apo kapoio biblio?


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Πέμ 29 Μάιος 2008 01:18 pm 
Χωρίς σύνδεση

Εγγραφή: Πέμ 29 Μάιος 2008 12:43 am
Δημοσιεύσεις: 3
Ευχαριστούμε για την προτίμηση. Το θέμα βρίσκεται εδώ και δύο χρόνια στο βιβλίο μας που απευθύνεται σε συναδέλφους καθηγητές και μαθητές αποτελώντας ιδανικό εργαλείο για επανάληψη. Κυκλοφορεί από τις εκδόσεις ΕΝ ΔΥΝΑΜΕΙ με τίτλο "ΕΠΑΝΑΛΗΨΗ ΣΤΗΝ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ". Περιέχει διαγωνίσματα ανά θεματική ενότητα και εφ' όλης της ύλης, όλα τα παλιά θέματα των Πανελληνίων Εξετάσεων και 115 ασκήσεις επιπέδου Πανελληνίων. Όλα με τις λύσεις τους.

Συγγραφείς: Κλεάνθης Ιορδανόπουλος - Κωνσταντίνος Μαθιόπουλος
Καθηγητές Πληροφορικής ΠΕ19

Σελίδες 133-134


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Πέμ 29 Μάιος 2008 01:50 pm 
Χωρίς σύνδεση

Εγγραφή: Δευτ 22 Οκτ 2007 12:46 pm
Δημοσιεύσεις: 15
Eipa ego pouthena oti einai diko mou?
kai sto kato kato oloi apo kapoio vivlio ta pairnoume...
Kai eseis apo kapou ta eidate kai ta empneysthkate ta themata sas:)
Den mporo na katalavo to pneyma ths erothshs sas?


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Παρ 30 Μάιος 2008 12:48 am 
Χωρίς σύνδεση

Εγγραφή: Πέμ 29 Μάιος 2008 12:43 am
Δημοσιεύσεις: 3
Με το
!***********************************
! Program made by periptero *
! periptero at gmail dot com *
!***********************************

αφήνετε να εννοηθεί ότι είναι δικό σας έργο. Θα έπρεπε να κάνετε τουλάχιστον μια αναφορά στην πηγή έμπνευσής σας. Όσον αφορά σε εμάς, το βιβλίο αυτό είναι αποτέλεσμα προσωπικής δουλειάς, εμπνευσμένη από την καθημερινότητά μας.


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
ΔημοσίευσηΔημοσιεύτηκε: Παρ 30 Μάιος 2008 09:38 am 
Χωρίς σύνδεση

Εγγραφή: Πέμ 01 Μάιος 2003 10:25 pm
Δημοσιεύσεις: 38
Τοποθεσία: Καλλιθέα Αττικής
kmath,
καλά άνθρωπε...τι προσπαθείς να δείξεις;
1) Περί της μεγάλης εμπνεύσεώς σου και τα χρόνια πείρας σου;
2) Περί της ασχολίας σου να εκδόσεις ένα βιβλίο που μαθαίνει τα παιδιά προγραμματισμό...
3) Περί της ανάρτησης ενός προγράμματος όπου κάποιος το διάβασε και το έγραψε πιθανόν χωρίς να δει τη λύση (είδε ας πούμε την εκφώνηση) και το μοιράστηκε με άλλους...

kmath ως δημιουργός θα έπρεπε να γνώριζες ότι το βιβλίο σου έχει αξία όταν το διαβάζεις όλο, όταν δηλαδή ακολουθείς την εκπαιδευτική μέθοδο. Εδώ η αξία του βιβλίου σου δεν φάνηκε, και δεν προσδιορίστηκε....με την επισήμανσή σου

Το φόρουμ δεν είναι βιβλίο είναι επικοινωνία και στην επικοινωνία δεν μπορείς να επιβάλεις copyright. Εγώ μπήκα στο κόπο να ασχοληθώ με το ζήτημα αυτού του προγράμματος γιατί το θεώρησα "πατάτα", γιατί εξαίρεσα την όποια εκπαιδευτική σκοπιμότητα. Η ασχολία με τον προγραμματισμό δεν γίνεται για "εκπαιδευτικούς λόγους". Η εκπαίδευση είναι απαραίτητη και όχι στόχος για τον προγραμματισμό.

Bugman
http://www.filosofia.gr

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


Κορυφή
 Προφίλ  
Απάντηση με παράθεση  
Τελευταίες δημοσιεύσεις:  Ταξινόμηση ανά  
Δημιουργία νέου θέματος Απαντήστε στο θέμα  [ 7 Δημοσιεύσεις ] 

Όλοι οι χρόνοι είναι UTC + 2 ώρες [ DST ]


Μέλη σε σύνδεση

Μέλη σε αυτή την Δ. Συζήτηση : Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης


Δεν μπορείτε να δημοσιεύετε νέα θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να απαντάτε σε θέματα σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να διαγράφετε τις δημοσιεύσεις σας σε αυτή τη Δ. Συζήτηση
Δεν μπορείτε να επισυνάπτετε αρχεία σε αυτή τη Δ. Συζήτηση

Αναζήτηση για:
Μετάβαση σε:  
cron
Προβολές: