Τρίτη 24 Ιανουαρίου 2012

ΠΙΘΑΝΟΤΗΤΕΣ ΣΤΑΤΙΣΤΙΚΗ (ΘΕΩΡΙΑ)


                     Η ΕΝΝΟΙΑ ΤΗΣ ΠΙΘΑΝΟΤΗΤΑΣ 



ΑΝ ΡΙΞΟΥΜΕ ΕΝΑ ΖΑΡΙ 1 ΦΟΡΑ ΤΟΤΕ ΤΑ ΔΥΝΑΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΕΙΝΑΙ 1,2,3,4,5,6.Η ΡΙΨΗ ΤΟΥ ΖΑΡΙΟΥ ΟΝΟΜΑΖΕΤΑΙ ΠΕΙΡΑΜΑ ΤΥΧΗΣ ΚΑΙ ΤΟ ΣΥΝΟΛΟ Ω={1,2,3,4,5,6}
ΟΝΟΜΑΖΕΤΑΙ ΔΕΙΓΜΑΤΙΚΟΣ ΧΩΡΟΣ.
ΑΠΟ ΑΥΤΑ ΤΑ ΕΞΙ ΔΥΝΑΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΜΑΣ ΕΝΔΙΑΦΕΡΟΥΝ ΜΟΝΟ ΤΑ ΜΕΡΙΚΑ ΤΑ ΟΠΟΙΑ ΟΝΟΜΑΖΟΝΤΑΙ <ΕΥΝΟΙΚΑ>
ΔΗΛΑΔΗ Η ΠΙΘΑΝΟΤΗΤΑ ΝΑ ΣΥΜΒΕΙ ΤΟ ΓΕΓΟΝΟΣ Α ΕΙΝΑΙ 
Ρ(Α)=Ν(Α)/Ν(Ω) ΠΟΛΛΕΣ ΕΙΝΑΙ ΟΙ ΦΟΡΕΣ ΠΟΥ ΤΟ Γ ΟΝΟΜΑΖΕΤΑΙ ΚΑΙ ΕΝΔΕΧΟΜΕΝΟ
Η ΠΙΘΑΝΟΤΗΤΑ ΝΑ ΦΕΡΟΥΜΕ 6 ΟΤΑΝ ΡΙΞΟΥΜΕ ΕΝΑ ΖΑΡΙ ΕΙΝΑΙ 1/6

ΕΝΩΣΗ ΣΥΝΟΛΩΝ :ΑΝ Α ΚΑΙ Β ΔΥΟ ΣΥΝΟΛΑ ΤΟΤΕ ΤΟ ΣΥΝΟΛΟ Γ=ΑUB ΟΝΟΜΑΖΕΤΑΙ ΕΝΩΣΗ ΤΩΝ Α,Β ΚΑΙ ΣΥΜΒΑΙΝΕΙ ΟΤΑΝ ΣΥΜΒΑΙΝΕΙ ΤΟΥΛΑΧΙΣΤΟΝ ΕΝΑ ΑΠΟ ΤΑ Α,Β 

ΤΟΜΗ ΣΥΝΟΛΩΝ :ΑΝ Α,Β ΔΥΟ ΣΥΝΟΛΑ ΤΟΤΕ ΤΟ ΣΥΝΟΛΟ Γ=Α(τομη)Β ΑΠΟΤΕΛΕΙ ΤΗΝ ΤΟΜΗ ΤΩΝ Α,Β ΚΑΙ ΣΥΜΒΑΙΝΕΙ ΜΟΝΟ ΟΤΑΝ ΣΥΜΒΑΙΝΟΥΝ ΤΑΥΤΟΧΡΟΝΑ ΤΑ ΑΚ ΚΑΙ Β.


ΤΑ ΕΝΔΕΧΟΜΕΝΑ Α,Β ΟΝΟΜΑΖΟΝΤΑΙ ΑΣΥΜΒΙΒΑΣΤΑ ΟΤΑΝ Η ΤΟΜΗ ΤΟΥΣ ΕΙΝΑΙ ΤΟ ΚΕΝΟ ΣΥΝΟΛΟ ΔΗΛΑΔΗ ΟΤΑΝ ΔΕΝ ΕΙΝΑΙ ΔΥΝΑΤΟΝ ΝΑ ΣΥΜΒΑΙΝΟΥΝ ΤΑΥΤΟΧΡΟΝΑ.


ΟΡΙΣΜΟΣ:ΕΣΤΩ Α ΕΝΑ ΥΠΟΣΥΝΟΛΟ ΕΝΟΣ ΔΕΙΓΜΑΤΙΚΟΥ ΧΩΡΟΥ Ω.ΤΟ ΣΥΝΟΛΟ Α ΤΟ ΟΠΟΙΟ ΠΕΡΙΕΧΕΙ ΤΑ ΣΤΟΙΧΕΙΑ ΤΟΥ Ω ΤΑ ΟΠΟΙΑ ΔΕΝ ΕΙΝΑΙ ΣΥΜΠΛΗΡΩΜΑ ΤΟΥ Α ΟΝΟΜΑΖΕΤΑΙ ΣΥΜΠΛΗΡΩΜΑ ΤΟΥ ΣΥΝΟΛΟΥ Α ΚΑΙ ΣΥΧΝΑ ΣΥΜΒΟΛΙΖΕΤΑΙ Ά


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΕΝΑ ΑΡΚΕΤΑ ΒΑΣΙΚΟ ΑΞΙΩΜΑ:


ΑΝ Α,Β ΔΥΟ ΑΣΥΜΒΙΒΑΣΤΑ ΕΝΔΕΧΟΜΕΝΑ ΤΟΤΕ 
P(AUB)=Ρ(Α)+Ρ(Β)
TO ΠΑΡΑΠΑΝΩ ΑΞΙΩΜΑ ΙΣΧΥΕΙ ΚΑΙ ΓΙΑ ΠΑΡΑΠΑΝΩ ΑΠΟ ΔΥΟ ΓΕΓΟΝΟΤΑ ΤΑ ΟΠΟΙΑ ΕΙΝΑΙ ΜΕΤΑΞΥ ΤΟΥΣ ΑΣΥΜΒΙΒΑΣΤΑ


ΑΚΟΜΑ ΜΙΑ ΣΧΕΣΗ ΤΗΝ ΟΠΟΙΑ ΜΠΟΡΟΥΜΕ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΣΟΥΜΕ ΧΩΡΙΣ ΑΠΟΔΕΙΞΗ ΕΙΝΑΙ Η ΑΚΟΛΟΥΘΗ:
Ρ(Ω)=1
Ρ(Α)+Ρ(Ά)=1
Ρ(Α)=1-Ρ(Ά)
ΓΕΝΙΚΑ ΙΣΧΥΕΙ ΟΤΙ ΟΤΑΝ ΔΥΟ ΕΝΔΕΧΟΜΕΝΑ ΑΝΗΚΟΥΝ ΣΤΟΝ ΙΔΙΟ ΔΕΙΓΜΑΤΙΚΟ ΧΩΡΟ ΤΟΤΕ:
Ρ(ΑUB)=Ρ(Α)+Ρ(Β)-2Ρ(ΑΒ)


ΚΑΙ ΓΙΑ ΤΡΙΑ ΓΕΓΟΝΟΤΑ ΙΣΧΥΕΙ ΟΤΙ 
Ρ(AUBUΓ)=Ρ(Α)+Ρ(Β)+Ρ(Γ)-(Ρ(ΑΒ)+Ρ(ΑΓ)+Ρ(ΒΓ))+Ρ(ΑΒΓ)


ΑΝΕΞΑΡΤΗΤΑ ΟΝΟΜΑΖΟΝΤΑΙ ΔΥΟ ΕΝΔΕΧΟΜΕΝΑ Α,Β ΜΟΝΟ ΟΤΑΝ ΜΕΤΑΞΥ ΤΟΥΣ ΙΣΧΥΕΙ ΟΤΙ Ρ(ΑΒ)=Ρ(Α)Ρ(Β)


ΣΥΝΕΧΕΙΣ ΚΑΤΑΝΟΜΕΣ


1.ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ                  

ΑΣ ΔΟΥΜΕ ΤΗ ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΕΝΟΣ ΠΑΡΑΔΕΙΓΜΑΤΟΣ:ΜΕ ΕΝΑ ΧΩΝΙ ΡΙΧΝΟΥΜΕ ΠΟΛΛΑ ΣΩΜΑΤΙΔΙΑ ΜΕΣΑ ΣΕ ΕΝΑ ΑΥΛΑΚΙ ΑΒ.Η ΠΙΘΑΝΟΤΗΤΑ dP ΝΣ ΒΡΙΣΚΕΤΑΙ ΕΝΑ ΣΩΜΑΤΙΔΙΟ ΣΕ ΕΝΑ ΔΙΑΣΤΗΜΑ dx ΕΞΑΡΤΑΤΑΙ ΑΠΟ ΤΗ ΘΕΣΗ χ ΕΤΣΙ Η ΠΙΘΑΝΟΤΗΤΑ ΑΝΑ ΜΟΝΑΔΑ ΜΗΚΟΥΣ ΕΙΝΑΙ ΙΣΗ ΜΕ dP/dx=f(x)

Η ΠΙΘΑΝΟΤΗΤΑ ΤΟ ΣΩΜΑΤΙΔΙΟ ΝΑ ΒΡΙΣΚΕΤΑΙ ΤΟ ΣΩΜΑΤΙΔΙΟ ΑΝΑΜΕΣΑ ΣΤΙΣ ΘΕΣΕΙΣ χ=α ΚΑΙ χ=β ΒΡΙΣΚΕΤΑΙ ΜΕ ΟΛΟΚΛΗΡΩΣΗ:
Ρ(α<χ<β)=S(α-β)[f(x)dx]
Η ΘΕΣΗ χ ΜΠΟΡΕΙ ΝΑ ΠΑΡΕΙ ΟΠΟΙΑΔΗΠΟΤΕ ΤΙΜΗ ΠΑΝΩ ΣΤΟΝ ΑΞΟΝΑ χ.ΚΑΙ ΘΑ ΛΕΜΕ ΟΤΙ ΕΙΝΑΙ ΣΥΝΕΧΗΣ ΜΕΤΑΒΛΗΤΗ.ΕΤΣΙ ΙΣΧΥΕΙ ΟΤΙ:
Ρ(α<χ<β)=Ρ(α<=χ<β)=Ρ(α<χ<=β)=Ρ(α<=χ<=β)=S(α-β)[f(x)dx]

  • Η ΜΑΘΗΜΑΤΙΚΗ ΕΚΦΡΑΣΗ Ρ(Χ=χ) ΕΚΦΡΑΖΕΙ ΤΗΝ ΠΙΘΑΝΟΤΗΤΑ Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ Χ ΝΑ ΠΑΡΕΙ ΤΗΝ ΤΙΜΗ χ
  • Η ΜΑΘΗΜΑΤΙΚΗ ΕΚΦΡΑΣΗ Ρ(α<χ<β) ΕΚΦΡΑΖΕΙ ΤΗΝ ΠΙΘΑΝΟΤΗΤΑ Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ Χ ΝΑ ΠΑΙΡΝΕΙ ΤΙΜΕΣ ΜΕΓΑΛΥΤΕΡΕΣ ΑΠΟ ΤΟ α ΚΑΙ ΜΙΚΡΟΤΕΡΕΣ ΑΠΟ ΤΟ β
ΕΠΕΙΔΗ Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ χ ΠΑΙΡΝΕΙ ΤΙΜΕΣ ΠΑΝΩ ΣΤΟΝ ΑΞΙΝΑ χ ΙΣΧΥΕΙ ΟΤΙ:S(α-β)[f(x)dx]=1 ΑΥΤΗ Η ΣΧΕΣΗ ΑΠΟΤΕΛΕΙ ΤΙΣ ΠΕΡΙΣΣΟΤΕΡΕΣ ΦΟΡΕΣ ΤΗ ΔΙΕΞΟΔΟ ΣΤΙΣ ΑΣΚΗΕΙΣ ΠΟΥ ΛΥΝΟΥΜΕ.
ΑΚΟΜΑ ΕΙΝΑΙ ΠΡΟΦΑΝΕΣ ΟΤΙ Η ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΕΙΝΑΙ ΘΕΤΙΚΗ ΔΗΛΑΔΗ ΙΣΧΥΕΙ ΟΤΙ f(χ)>=0.

2.ΣΥΝΑΡΤΗΣΗ ΚΑΤΑΝΟΜΗΣ ΤΥΧΑΙΑΣ ΣΥΝΕΧΟΥΣ ΜΕΤΑΒΛΗΤΗΣ

  ΕΣΤΩ ΜΙΑ ΤΥΧΑΙ ΜΕΤΑΒΛΗΤΗ Χ ΜΕ ΣΥΝΑΡΤΗΣΗ ΠΙΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ f(χ).Η ΠΙΘΑΝΟΤΗΤΑ ΩΣΤΕ ΚΑΠΟΙΑ ΩΣΤΕ Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ Χ ΝΑ ΕΙΝΑΙ ΜΙΚΡΟΤΕΡΗ Ή ΙΣΗ ΚΑΠΟΙΑΣ ΣΤΑΘΕΡΗΣ ΤΙΜΗΣ α ΕΙΝΑΙ :
Ρ(χ<=α)=S(-ΑΠΕΙΡΟ-α)[f(x)dx]=F(α).ΓΙΑ ΤΗΝ ΣΥΝΑΡΤΗΣΗ ΚΑΤΑΝΟΜΗΣ ΕΧΟΥΜΕ ΤΙΣ ΑΚΟΛΟΥΘΕΣ ΙΔΙΟΤΗΤΕΣ:
  • Η F(x) ΕΙΝΑΙ ΠΑΝΤΟΥ ΣΥΝΕΧΗΣ ΓΙΑ ΣΥΝΕΧΗ ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ χ 
  • Η ΠΑΡΑΓΩΓΗΣΗ ΤΗΣ F(x) ΜΑΣ ΔΙΝΕΙ ΤΗ ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ f(x): F΄(χ)=f(χ)
  • 0<=F(X)<=1
  • Η ΑΝΤΟΙΣΤΟΙΧΗ ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΔΕΝ ΕΙΝΑΙ ΥΠΟΧΡΕΩΤΙΚΑ ΣΥΝΕΧΗΣ.

3.ΠΑΡΑΜΕΤΡΟΙ ΣΥΝΕΧΟΥΣ ΚΑΤΑΝΟΜΗΣ



ΟΙ ΠΑΡΑΜΕΤΡΟΙ ΜΙΑΣ ΚΑΤΑΝΟΜΗΣ ΕΙΝΑΙ ΣΤΑΘΕΡΕΣ ΠΟΣΟΤΗΤΕΣ ΠΟΥ ΕΚΦΡΑΖΟΥΝ ΔΙΑΦΟΡΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΤΗΣ ΚΑΤΑΝΟΜΗΣ ΑΥΤΗΣ.



ΟΡΙΖΕΤΑΙ Η ΜΕΣΗ ΤΙΜΗ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ g(x) ΑΠΟ ΤΗΝ ΠΑΡΑΚΑΤΩ ΣΧΕΣΗ:
Ε[g(x)]=S(-ΑΠΕΙΡΟ-+ΑΠΕΙΡΟ)[g(x)f(x)dx] OΠΟΥ f(x) ΕΙΝΑΙ Η ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΤΗΣ ΤΙΜΗΣ χ.

ΟΡΙΖΕΤΑΙ Η ΔΙΑΣΠΟΡΑ ΑΠΟ ΤΗΝ ΠΑΡΑΚΑΤΩ ΣΧΕΣΗ:
Ε[(χ-μ)^2]=S(-ΑΠΕΙΡΟ-+ΑΠΕΙΡΟ)[(χ-μ)^2f(x)dx] OΠΟΥ f(x) ΕΙΝΑΙ Η ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΤΗΣ ΤΙΜΗΣ χ.

ΚΑΙ ΓΙΑ ΤΗΝ ΤΥΠΙΚΗ ΑΠΟΚΛΗΣΗ ΕΧΩ :σ=Τ_Ρ(var(x))

4.ΟΜΟΙΟΜΟΡΦΗ ΚΑΤΑΝΟΜΗ

ΣΤΗΝ ΟΜΟΙΟΜΟΡΦΗ ΚΑΤΑΝΟΜΗ Η ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ ΕΙΝΑΙ ΣΤΑΘΕΡΗ ΣΕ ΕΝΑ ΔΙΑΣΤΗΜΑ α<=χ<=β ΚΑΙ ΜΗΔΕΝΙΚΗ ΕΞΩ ΑΠΟ ΑΥΤΟ ΤΟ ΔΙΑΣΤΗΜΑ.

Η ΤΙΜΗ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ f ΣΤΟ ΔΙΑΣΤΗΜΑ (α,β) ΥΠΟΛΟΓΙΖΕΤΑΙ ΑΠΟ ΤΗ ΣΧΕΣΗ c=1/(β-α)
Η ΟΜΟΙΟΜΑΡΦΗ ΚΑΤΑΝΟΜΗ ΣΕ ΔΙΑΣΤΗΜΑ α<=χ<=β ΣΥΜΒΟΛΙΖΕΤΑΙ ΜΕ U(α,β).
ΚΑΙ ΟΤΑΝ ΘΕΛΟΥΜΕ ΝΑ ΓΡΑΨΟΥΜΕ ΟΤΙ Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ Χ ΑΚΟΛΟΥΘΕΙ ΟΜΟΙΟΜΟΡΦΗ ΚΑΤΑΝΟΜΗ ΣΕ ΔΙΑΣΤΗΜΑ α<=χ<=β  ΤΟΤΕ ΓΡΑΦΟΥΜΕ ΟΤΙ Χ~U(α,β).


5.ΕΚΘΕΤΙΚΗ ΚΑΤΑΝΟΜΗ
Η ΕΚΘΕΤΙΚΗ ΚΑΤΑΝΟΜΗ ΕΧΕΙ ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ: 
  • f(x)=0 ΑΝ χ<0
  • f(x)=a*e^(-a*x)
ΟΠΟΥ α ΔΟΣΜΕΝΗ ΘΕΤΙΚΗ ΣΤΑΘΕΡΑ.ΚΑΙ ΤΑΥΤΟΧΡΟΝΑ ΙΣΧΥΕΙ ΟΤΙ :

S(-ΑΠΕΙΡΟ-+ΑΠΕΙΡΟ)[f(x)dx]=1

6.ΚΑΝΟΝΙΚΗ ΚΑΤΑΝΟΜΗ
Η ΚΑΝΟΝΙΚΗ ΚΑΤΑΝΟΜΗ ΕΙΝΑΙ ΟΠΟΩΣ ΟΛΟΙ ΓΝΩΡΙΖΟΥΜΕ ΜΙΑ ΑΠΟ ΤΙΣ ΣΠΟΥΔΑΙΟΤΕΡΕΣ ΚΑΤΑΝΟΜΕΣ Η ΟΠΟΙΑ ΕΧΕΙ ΣΥΝΑΡΤΗΣΗ ΠΥΚΝΟΤΗΤΑΣ ΠΙΘΑΝΟΤΗΤΑΣ :
f(x)=[1/(σ*Τ_Ρ(2π)]*e^[-(χ-μ)^2/2*σ^2]
ΟΠΟΥ μ ΕΙΝΑΙ Η ΜΕΣΗ ΤΙΜΗ ΚΑΙ σ Η ΤΥΠΙΚΗ ΑΠΟΚΛΙΣΗ ΤΗΣ ΚΑΤΑΝΟΜΗΣ ΑΥΤΗΣ.ΣΥΧΝΑ ΓΡΑΦΟΥΜΕ ΟΤΙ Χ~Ν(μ,σ^2) ΤΟ ΟΠΟΙΟ ΔΙΑΒΑΖΕΤΑΙ :Η ΤΥΧΑΙΑ ΜΕΤΑΒΛΗΤΗ Χ ΑΚΟΛΟΥΘΕΙ ΚΑΝΙΝΙΚΗ ΚΑΤΑΝΟΜΗ ΜΕ ΜΕΣΗ ΤΙΜΗ ΙΣΗ ΜΕ μ ΚΑΙ ΔΙΑΣΠΟΡΑ ΙΣΗ ΜΕ σ^2.

ΑΝ c  ΘΕΤΙΚΗ ΚΑΙ ΣΤΑΘΕΡΗ ΤΙΜΗ ΤΟΤΕ ΛΟΓΩ ΣΥΜΑΤΡΙΑΣ ΙΣΧΥΕΙ ΟΤΙ:
S(-ΑΠΕΙΡΟ--c)[f(x)dx]=S(C-AΑΠΕΙΡΟ)[f(x)dx]

ΑKOMA ΙΣΧΥΕΙ ΟΤΙ Ρ(Χ<-C)=Ρ(Χ>C.

ΣΤΑΤΙΣΤΙΚΗ

Ι.    ΟΡΙΣΜΟΙ
1.Στατιστική: είναι ο κλάδος των εφαρμοσμένων μαθηματικών, ο οποίος βασίζεται σε ένα σύνολο αρχών και μεθοδολογιών για:
               Τον σχεδιασμό της διαδικασίας συλλογής δεδομένων (data).
               Τη συνοπτική και αποτελεσματική παρουσίαση των δεδομένων.
     Την ανάλυση και εξαγωγή συμπερασμάτων από τα δεδομένα.
            Η στατιστική είναι μια ατελής επαγωγή. Από τις ιδιότητες του μέρους εξάγει συμπεράσματα για το όλον.

2.Πληθυσμός (Population - Sample Space): είναι ένα σύνολο, τα στοιχεία του οποίου εξετάζονται ως προς ένα ή περισσότερα χαρακτηριστικά τους.

3.Μεταβλητή (Variable): ενός πληθυσμού είναι το χαρακτηριστικό ως προς το οποίο εξετάζεται ο πληθυσμός. Μεταβλητές είναι δύο ειδών, ποιοτικές ή ποσοτικές. Οι ποσοτικές μεταβλητές διακρίνονται σε διακριτές και συνεχείς.

4.Συχνότητα (Frequency): μιάς τιμής χι  της μεταβλητής Χ μεγέθους νXΝ είναι ο φυσικός αριθμός νιXΝ,  νιν, που δείχνει το πλήθος εμφάνισης της τιμής χι .
Ισχύει προφανώς: ν12+ . . . +νμ

**********ME S(α-β) ΣΥΜΒΟΛΙΖΩ ΤΟ ΟΛΟΚΛΗΡΩΜΑ ΑΠΟ ΤΟ Α ΣΤΟ Β !!!!!!!!!

Κυριακή 22 Ιανουαρίου 2012

ΕΡΓΑΣΙΑ ΜΗΧΑΝΟΥΡΓΕΙΟΥ


  1.       Αρχικά, εφοδιαζόμαστε με ένα μεταλλικό παραλληλεπίπεδο διαστάσεων περίπου 80Χ16Χ16 mm και ένα μεταλλικό κύλινδρο διαμέτρου 10mm και μήκους 150mm.
  2.      Πρώτα αρχίζουμε να λιμάρουμε τις έδρες του παρ/δου, ώστε να γίνουν λείες και να απελευθερωθούν από τη σκουριά, καθώς και τις γωνίες, για να μην είναι κοφτερές.
  3.     Πάλι με τη λίμα "τρώμε" τις ακμές και τις γωνίες της μικρής έδρας που δε θα κοπεί.
  4.     Έπειτα, χρησιμοποιούμε την κιμωλία, το παχύμετρο και το σημαδευτήρι για να ασπρίζουμε το μέταλλο και να σημειώσουμε το κομμάτι που θα κοπεί.
  5.       Η κοπή γίνεται με το σιδηροπρίονο. Σε αυτό το σημείο, προσέχουμε η κοπή να γίνει λιγότερο από το επιθυμητό, αφού είναι εύκολο μετά να τελειοποιηθεί με τη λίμα.
  6.   Πάλι με την κιμωλία, το παχύμετρο και το σημαδευτήρι, βρίσκουμε το κέντρο της τρύπας που μας ενδιαφέρει. Το σημείο αυτό το χτυπάμε με την "μπότα", για να οδηγήσουμε το τρυπάνι.
  7.       Με το τρυπάνι ανοίγουμε κατάλληλη τρύπα, η οποία προσέχουμε να είναι στο επιθυμητό σημείο.
  8.       Στην τρύπα που ανοίξαμε, δημιουργούμε σπείρωμα με τη βοήθεια του κολαούζου. Το κολαούζο το περιστρέφουμε δεξιά - αριστερά, ώστε να φεύγουν τα κομματάκια του μετάλλου.
  9.       Όσον αφορά το κυλινδρικό τμήμα, με μια λίμα και τον τόρνο καμπυλώνουμε την μία άκρη.
  10.       Επίσης με τον τόρνο, ελλατώνουμε όσο χρειαζόμαστε την άλλη άκρη.
  11.       Σε αυτή την άκρη δημιουργούμε σπείρωμα με το βιδολόγο, ακολουθώντας διαδικασία όμοια με αυτή του κολαούζου και λαδώνουμε όταν χρειάζεται.
  12.       Τέλος, ενώνουμε τα δύο κομμάτια, φτιάχνοντας το σφυράκι.

Σάββατο 21 Ιανουαρίου 2012

ΑΝΑΛΥΣΗ 1 ΚΑΙ ΕΦΑΡΜΟΓΕΣ( ΘΕΩΡΙΑ)

       
  Η γεωµετρική παράσταση των αριθμών


 Θεωρούµε δύο διαφορετικά σηµεία O και E, το E δεξιά του O, πάνω σε µια ευθεία XX . Μπορούµε να θεωρήσουµε τους πραγµατικούς αριθµούς σαν τα σηµεία αυτής της ευθείας. Η διαισθητική εικόνα που έχουµε στο µυαλό µας είναι να αντιστοιχίσουµε σε κάθε σηµείο M της XX την απόσταση του M από το O, αν το M βρίσκεται δεξιά από το O και πάρουµε το OE για µονάδα.   

 Η µελέτη των πραγµατικών αριθµών αρχίζει συνήθως µε το σύνολο N των φυσικών αριθµών 1, 2, 3, 4, . . . Το άθροισµα και το γινόµενο δύο φυσικών είναι πάντοτε ένας φυσικός αριθµός. Αν στους φυσικούς επισυνάψουµε το 0 και τους αντίθετούς τους, παίρνουµε το σύνολο Z των ακεραίων αριθµών 0, ±1, διαφορά δύο ακεραίων είναι πάντοτε ένας ακέραιος αριθµός. Αν στους ακεραίους επισυνάψουµε και όλα τα κλάσµατα m/n, όπου m, n ακέραιοι και n = 0,τότε παίρνουµε το σύνολο Q των ρητών αριθµών. Εκτός του αθροίσµατος, του γινοµένου και της διαφοράς τώρα και το πηλίκο  δύο ρητών q/r, όπου r = 0, είναι πάντοτε ρητός αριθµός.Απλές γεωµετρικές κατασκευές στο επίπεδο δίνουν τη γεωµετρική παράσταση των ρητών αριθµών.


Η γεωμετρική αναπαράσταση του R.
Γνωρίζουμε ότι οι αριθμοί αναπαρίστανται από σημεία ευθείας ως εξής. Θεωρούμε αυθαίρετη
ευθεία γραμμή και ξεχωρίζουμε αυθαίρετο σημείο της Ο, το οποίο αναπαριστά τον αριθμό 0, και
δεύτερο αυθαίρετο σημείο Ι, το οποίο αναπαριστά τον αριθμό 1. Η απόσταση του Ι από το Ο
παίζει τον ρόλο της μονάδας μέτρησης αποστάσεων πάνω στην ευθεία. Τώρα, κάθε άλλος αριθμός x
αναπαρίσταται από το αντίστοιχο σημείο Χ της ευθείας το οποίο βρίσκεται στην ίδια μεριά του Ο
στην οποία βρίσκεται και το Ι, αν x > 0, και στην αντίθετη μεριά του Ο, αν x < 0, και του οποίου
η απόσταση από το Ο είναι ίση με jxj. Επομένως, κάθε σημείο της ευθείας αναπαριστά ακριβώς
έναν αριθμό και κάθε αριθμός αναπαρίσταται από ακριβώς ένα σημείο της ευθείας. Άρα τα σημεία
της ευθείας είναι σε αμφιμονοσήμαντη αντιστοιχία με τους αριθμούς.





Κάθε ευθεία που χρησιμοποιούμε για να αναπαραστήσουμε τους αριθμούς την ονομάζουμε πραγ-
ματική ευθεία και στο εξής δε θα κάνουμε διάκριση ανάμεσα στο οποιοδήποτε σημείο Χ μιας πραγ-
ματικής ευθείας και στον αριθμό x που αναπαρίσταται από το σημείο αυτό. Θα λέμε το σημείο x
καθώς και ο αριθμός x. Επίσης, θα λέμε ρητά σημεία και ακέραια σημεία της πραγματικής ευθείας.



Σηµείωση 1.1. Χωρίς αυτό να αποτελεί αυστηρό µαθηµατικό ορισµό της έννοιας, µπορούµε να πούµε ότι
µια συλλογή καθορισµένων αντικειµένων ϑεωρούµενη αυτή καθαυτή ως νέο αντικείµενο καλείται σύνολο.
Τα αντικείµενα που απαρτίζουν ένα σύνολο καλούνται στοιχεία του συνόλου.
Σηµείωση 1.2. Αν το στοιχείο a ανήκει στο σύνολο E, τότε γράφουµε a 2 E, ενώ αν δεν ανήκει γράφουµε
a =2 E.
Ορισµός 1.3. Ας είναι A και B δυο σύνολα.
1. Αν κάθε στοιχείο του A είναι και στοιχείο του B, τότε το A καλείται υποσύνολο του B, το B καλείται
υπερσύνολο του A και συµβολίζουµε A µ B ή ισοδύναµα B ¶ A.
2. Αν κάθε στοιχείο του A είναι και στοιχείο του B και ταυτόχρονα κάθε στοιχείο του B είναι και στοιχείο
του A, τότε τα σύνολα A και B καλούνται ίσα και συµβολίζουµε A = B. Στην αντίθετη περίπτωση
γράφουµε A =6 B.
3. Αν A µ B και ταυτόχρονα A =6 B, τότε το A καλείται γνήσιο υποσύνολο του B, το B γνήσιο υπερσύνολο
του A και συµβολίζουµε A ½ B ή ισοδύναµα B ¾ A.
Σηµείωση 1.4. 1. ∆εχόµαστε ότι υπάρχει ένα σύνολο που δεν περιέχει κανένα στοιχείο. Το σύνολο αυτό
καλείται κενό και συµβολίζεται µε ;. ∆εχόµαστε επίσης ότι το κενό σύνολο είναι υποσύνολο κάθε
συνόλου.
2. Αν ένα σύνολο αποτελείται από ένα και µόνο στοιχείο a, τότε αυτό το σύνολο καλείται µονοσύνολο και
συµβολίζεται ως fag.
Ορισµός 1.5. Ας είναι A και B δυο σύνολα.
1. Τοµή των A και B καλείται το σύνολο που αποτελείται από τα κοινά στοιχεία των δύο συνόλων και
συµβολίζεται ως A \ B.
2. ΄Ενωση των A και B καλείται το σύνολο που αποτελείται από τα στοιχεία και των δυο συνόλων και
συµβολίζεται ως A [ B.
3. ∆ιαφορά του B από το A, µε αυτή τη σειρά, καλείται το σύνολο που αποτελείται από εκείνα τα στοιχεία
του B τα οποία δεν ανήκουν στο A και συµβολίζεται ως BnA.
Σηµείωση 1.6. 1. Η τοµή δυο συνόλων που δεν έχουν κοινά στοιχεία είναι το κενό σύνολο.
2. Η ένωση δυο συνόλων, από τα οποία τουλάχιστον το ένα είναι µη κενό, είναι επίσης µη κενό σύνολο.
3. Αν A µ B, τότε AnB = ;


Είναι φανερό από τον κανόνα αντιστοίχισης αριθμών και σημείων ότι η απόσταση κάθε σημείου
x της πραγματικής ευθείας από το σημείο 0 είναι ίση με jxj. Επίσης, γενικότερα, γνωρίζουμε ότι η
απόσταση οποιωνδήποτε σημείων x; y της πραγματικής ευθείας είναι ίση με jx  yj.
Τέλος, γνωρίζουμε τη σχέση των ανισοτήτων ανάμεσα σε αριθμούς με τη διάταξη των αντίστοιχων
σημείων της πραγματικής ευθείας: είναι x < y αν και μόνο αν τα σημεία x; y έχουν την ίδια διάταξη
με τα σημεία 0; 1, αντιστοίχως. Δηλαδή, αν η ευθεία είναι οριζόντια και το σημείο 1 είναι δεξιά του
σημείου 0, τότε: είναι x < y αν και μόνο αν το σημείο y είναι δεξιά του σημείου x. Αν η ευθεία
είναι κατακόρυφη και το σημείο 1 είναι πάνω από το σημείο 0, τότε: είναι x < y αν και μόνο αν
το σημείο y είναι πάνω από το σημείο x.
Εμείς θα ακολουθούμε τη συνήθη πρακτική: για τη γεωμετρική αναπαράσταση των αριθμών
θα χρησιμοποιούμε οριζόντια ευθεία με το σημείο 1 δεξιά του σημείου 0. Εναλλακτικά, όταν χρεια-
ζόμαστε και δεύτερη ευθεία – για παράδειγμα, όταν σχεδιάζουμε γραφήματα συναρτήσεων – θα
χρησιμοποιούμε και κατακόρυφη ευθεία με το σημείο 1 πάνω από το σημείο 0.


Η Αρχιμήδεια Ιδιότητα.


Αν έχουμε δυο ευθύγραμμα τμήματα με μήκη 1 και b, τότε, αν πάρουμε έναν αρκετά μεγάλο
αριθμό αντιγράφων του πρώτου και τα κολλήσουμε το ένα μετά το άλλο πάνω στην ίδια ευθεία, το
ευθ. τμήμα που θα προκύψει θα έχει μήκος μεγαλύτερο από το μήκος του δεύτερου ευθ. τμήματος.
Το πόσο μεγάλο αριθμό αντιγράφων χρειαζόμαστε εξαρτάται, φυσικά, από το μέγεθος του δεύτερου
ευθ. τμήματος σε σχέση με τη μονάδα μέτρησης αποστάσεων. Η μαθηματική έκφραση αυτής της
εμπειρικά προφανούς ιδιότητας είναι: για κάθε b > 0 υπάρχει φυσικός n ώστε να είναι n 1 > b.
Είναι φανερό ότι αυτό ισχύει και για b 0 και, επομένως:










 


 

±2, . . . Το άθροισµα, το γινόµενο και (κατά αντίθεση προς τους φυσικούς) η
 
ΣΥΝΟΛΑ ΣΥΝΑΡΤΗΣΕΙΣ


(ΑUB)=ΕΙΝΑΙ Η ΕΝΩΣΗ ΤΟΥ ΣΥΝΟΛΥ Α ΜΕ ΤΟ ΣΥΝΟΛΟ Β
ΑΝ Α ΚΑΙ Β ΔΥΟ ΥΠΟΣΥΝΟΛΑ ΤΟΥ ΣΥΝΟΛΟΥ Χ ΤΟΤΕ ΓΙΑ ΚΑΘΕ χeΑ ΤΟΤΕ χeΧ


(Α-Β)=ΤΟ χ ΑΝΗΚΕΙ ΣΤΟ Α ΑΛΛΑ ΔΕΝ ΑΝΗΚΕΙ ΣΤΟ Β
ΑxΒ=ΚΑΡΤΕΣΙΑΝΟ ΓΙΝΟΜΕΝΟ


ΠΑΡΑΔΕΙΓΜΑ
Α={α,β,γ) ΚΑΙ Β={δ,ε,ζ} ΤΟΤΕ
ΑχΒ={(α,δ),(α,ε),(α,ζ),(β,δ),( β,ε),(β,ζ),(γ,δ),(γ,ε),(γ,ζ)}                              


ΟΝΟΜΑΖΟΥΜΕ ΣΧΕΣΗ ΤΟΥ Α ΣΤΟ Β ΕΝΑ ΥΠΟΣΥΝΟΛΟ f ΤΟΥ ΚΑΡΤΕΣΙΑΝΟΥ ΓΙΝΟΜΕΝΟΥ ΑχΒ


ΟΝΟΜΑΖΟΥΜΕ ΣΥΝΑΡΤΗΣΗ ΤΟΥ ΣΥΝΟΛΟΥ Α ΣΤΟ ΣΥΝΟΛΟ Β ΜΙΑ ΣΧΕΣΗ FcAxB ΜΕ ΤΗΝ ΑΚΟΛΟΥΘΗ ΙΔΙΟΤΗΤΑ:
ΓΙΑ ΚΑΘΕ αeΑ ΥΠΑΡΧΕΙ ΑΚΡΙΒΩΣ ΕΝΑ beΒ ΜΕ (α,β)ef.
ΣΥΝΗΘΩΣ ΓΡΑΦΟΥΜΕ y=f(x).ΕΙΝΑΙ ΓΝΩΣΤΟ ΟΤΙ ΤΟ χ ΟΝΟΜΑΖΕΤΑΙ ΑΝΕΞΑΡΤΗΤΗ ΜΕΤΑΒΛΗΤΗ ΕΝΩ ΤΟ y ΟΝΟΜΑΖΕΤΑΙ ΕΞΑΡΤΗΜΕΝΗ ΜΕΤΑΒΛΗΤΗ.


ΕΣΤΩ ΔΥΟ ΣΥΝΟΛΑ Χ,Ψ ΚΑΙ ΜΙΑ ΣΥΝΑΡΤΗΣΗ F:Χ-->Ψ ΜΕ ΤΗΝ ΠΑΡΑΚΑΤΩ  ΙΔΙΟΤΗΤΑ
ΓΙΑ ΚΑΘΕ χeΧ ΥΠΑΡΧΕΙ ΑΚΡΙΒΩΣ ΕΝΑ ψeΨ ΩΣΤΕ :(χ,ψ)eF
ΣΥΝΙΘΩΣ ΓΡΑΦΟΥΜΕ ΟΤΙ y=F(x)


ΟΠΩΣ ΕΙΝΑΙ ΓΝΩΣΤΟ ΤΟ ΣΥΝΟΛΟ R ΤΩΝ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ΕΙΝΑΙ ΕΦΟΔΙΑΣΜΕΝΟ ΜΕ ΔΥΟ ΠΡΑΞΕΙΣ ΤΗΝ ΠΡΟΣΘΕΣΗ ΚΑΙ ΤΟΝ ΠΟΛΛΑΠΛΑΣΙΑΣΜΟ ΠΟΥ ΕΧΟΥΝ ΤΙΣ ΠΑΡΑΚΑΤΩ ΙΔΙΟΤΗΤΕΣ
  • χ+ψ=ψ+χ
  • ΥΠΑΡΧΕΙ ΣΤΟΙΧΕΙΟ 0 ΤΕΟΙΟ ΩΣΤΕ χ+0=0+χ ΚΑΙ ΛΕΓΕΤΑΙ ΟΥΔΕΤΕΡΟ ΣΤΟΙΧΕΙΟ ΩΣ ΠΡΟΣ ΤΗΝ ΠΡΟΣΘΕΣΗ
  • ΓΙΑ ΚΑΘΕ ΣΤΟΙΧΕΙΟ ΧeΡ ΥΠΑΡΧΕΙ ΤΟ -χeR ΓΙΑ ΤΟ ΟΠΟΙΟ ΙΣΧΥΕΙ ΟΤΙ χ+(-χ)=0
  • χ*ψ=ψ*χ
  • ΥΠΑΡΧΕΙ ΤΟ ΣΤΟΙΧΕΙΟ 1 ΓΙΑ ΤΟ ΟΠΟΙΟ ΙΣΧΥΕΙ ΟΤΙ χ*1=1*χ ΚΑΙ 1<>0
  • ΓΙΑ ΚΑΘΕ χeR<>0 ΥΠΑΡΧΕΙ ΤΟ χ^(-1) ΤΕΤΟΙΟ ΩΣΤΕ ΝΑ ΙΣΧΥΕΙ ΟΤΙ χ*χ^(-1)=1
  • (χ+ψ)+ζ=χ+(ψ+ζ)  χ*(ψ*ζ)=(χ*ψ)*ζ  ΓΙΑ ΚΑΘΕ χ,ψ,ζ eR.
  • ΤΟ ΣΥΝΟΛΟ R ΤΩΝ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ΕΧΕΙ ΠΛΗΡΗ ΔΙΑΤΑΞΗ ΑΦΟΥ:
(χ1,ψ1)>=(χ2,ψ2) ΑΝ χ1>χ2 και ψ1>ψ2 με χ1,χ2,ψ1,ψ2eR
                                                                                                                                            ΑΚΟΛΟΥΘΙΕΣ


ΑΝ ΣΤΟΥΣ ΑΚΕΡΑΙΟΥΣ 1,2,3,......ν,ν+1 ΑΝΤΙΣΤΟΙΧΙΣΟΥΜΕ ΤΟΥΣ ΠΡΑΓΜΑΤΙΚΟΥΣ ΑΡΙΘΜΟΥΣ α1,α2,α3,...αν,αν+1 ΤΟΤΕ ΟΡΙΖΕΤΑΙ ΜΙΑ ΣΥΝΑΡΤΗΣΗ α:Ν*-->R ΠΟΥ ΟΝΟΜΑΖΕΤΑΙ ΑΚΟΛΟΥΘΙΑ ΠΡΑΓΜΑΤΙΚΩΝ ΑΡΙΘΜΩΝ ΚΑΙ ΣΥΜΒΟΛΙΖΕΤΑΙ ΜΕ αν ΜΕ ω=1,2,3......Ο αν ΟΝΟΜΑΖΕΤΑΙ ΝΙΟΣΤΟΣ ΟΡΟΣ ΤΗΣ ΑΚΟΛΟΥΘΙΑΣ.


                        ΜΟΝΟΤΟΝΕΣ ΑΚΟΛΟΥΘΙΕΣ
  • ΓΝΗΣΙΩΣ ΑΥΞΟΥΣΑ ΛΕΓΕΤΑΙ ΜΙΑ ΑΚΟΛΟΥΘΙΑ ΟΤΑΝ ν ΑΝΗΚΕΙ Ν* ΚΑΙ Αν+1>Αν
  • ΓΝΗΣΙΩΣ ΦΘΙΝΟΥΣΑ ΛΕΓΕΤΑΙ ΜΙΑ ΑΚΟΛΟΥΘΙΑ ΟΤΑΝ ν ΑΝΗΚΕΙ Ν* ΚΑΙ Αν+1<Αν
  • ΑΥΞΟΥΣΑ ΛΕΓΕΤΑΙ ΜΙΑ ΑΚΟΛΟΥΘΙΑ ΟΤΑΝ ν ΑΝΗΚΕΙ Ν* ΚΑΙ Αν+1>=Αν
  •  ΦΘΙΝΟΥΣΑ ΛΕΓΕΤΑΙ ΜΙΑ ΑΚΟΛΟΥΘΙΑ ΟΤΑΝ ν ΑΝΗΚΕΙ Ν* ΚΑΙ Αν+1<=Αν
Η ΜΕΛΕΤΗ ΤΗΣ ΜΟΝΟΤΟΝΙΑΣ ΜΙΑ ΑΚΟΛΟΥΘΙΑΣ ΓΙΝΕΤΑΙ ΜΕ ΕΝΑΝ ΑΠΟ ΤΟΥΣ ΠΑΡΑΚΑΤΩ ΤΡΟΠΟΥΣ
  • ΒΡΙΣΚΟΥΜΕ ΤΟ ΠΡΟΣΗΜΟ ΤΗΣ ΔΙΑΦΟΡΑΣ Αν+1-Αν
  • ΑΝ ΟΙ ΟΡΙ ΤΗΣ ΑΚΟΛΟΥΘΙΑΣ ΕΧΟΥΝ ΣΤΑΘΕΡΟ ΠΡΟΣΗΜΟ ΤΟΤΕ ΒΡΗΣΚΟΥΜΕ ΤΟ ΠΗΛΙΚΟ Αν+1/Αν ΚΑΙ ΤΟ ΣΥΓΚΡΙΝΟΥΜΕ ΜΕ ΤΟ 1 
  • ΑΝ Η ΑΚΟΛΟΥΘΙΑ ΟΡΙΖΕΤΑΙ ΕΠΑΓΩΓΙΚΑ ΤΟΤΕ  ΑΠΟΔΕΙΚΝΙΟΥΜΕ ΤΗΝ ΑΝΙΣΟΤΗΤΑ Αν+1>Αν ή Αν+1<Αν

                   ΦΡΑΓΜΕΝΕΣ ΑΚΟΛΟΥΘΙΕΣ
ΜΙΑ ΑΚΟΛΟΥΘΙΑ ΛΕΓΕΤΑΙ :
  • ΑΝΩ ΦΡΑΓΜΕΝΗ ΟΤΑΝ ΥΠΑΡΧΕΙ ΠΡΑΓΜΑΤΙΚΟΣ ΑΡΙΘΜΟΣ Μ ΤΕΤΟΙΟΣ ΩΣΤΕ ΓΙΑ ΚΑΘΕ Ν ΑΝΗΚΕΙ Ν*ΝΑ ΙΣΧΥΕΙ ΟΤΙ Αν<=Μ
  • ΚΑΤΩ ΦΡΑΓΜΕΝΗ ΟΤΑΝ ΥΠΑΡΧΕΙ ΠΡΑΓΜΑΤΙΚΟΣ ΑΡΙΘΜΟΣ Μ ΤΕΤΟΙΟΣ ΩΣΤΕ ΓΙΑ ΚΑΘΕ Ν ΑΝΗΚΕΙ Ν*ΝΑ ΙΣΧΥΕΙ ΟΤΙ Αν>=Μ
  • ΦΡΑΓΜΕΝΗ ΟΤΑΝ ΕΙΝΑΙ ΣΥΓΧΡΟΝΩΣ ΑΝΩ ΚΑΙ ΚΑΤΩ ΦΡΑΓΜΕΝΗ
ΜΙΑ ΑΚΟΛΟΥΘΙΑ Αν ΕΙΝΑΙ ΦΡΑΓΜΕΝΗ ΜΟΝΟ ΟΤΑΝ ΥΠΑΡΧΕΙ ΣΤΑΘΕΡΟΣ ΑΡΙΘΜΟΣ Θ>Ο  ΩΣΤΕ ΝΑ ΙΣΧΥΕΙ ΟΤΙ |Αν|<=Θ


                      ΟΡΙΟ ΑΚΟΛΟΥΘΙΑΣ


ΜΙΑ ΑΚΟΛΟΥΘΙΑ Αν ΛΕΜΕ ΟΤΙ ΕΧΕΙ ΟΡΙΟ  L ΑΝΗΚΕΙ R ΚΑΙ ΓΡΑΦΟΥΜΕ :
limAv=L ή Av-->L  ΟΤΑΝ ΓΙΑ ΚΑΘΕ ε>0 ΥΠΑΡΧΕΙ ΦΥΣΙΚΟΣ ΑΡΙΘΜΟΣ κ ΩΣΤΕ ΓΙΑ ΚΑΘΕ ν>κ ΝΑ ΙΣΧΥΕΙ ΟΤΙ |Αν-L||<ε
ΤΟ ΟΡΙΟ ΚΑΘΕ ΑΚΟΛΟΥΘΙΑΣ ΕΙΝΑΙ ΜΟΝΑΔΙΚΟ.
ΑΡΚΕΤΕΣ ΕΙΝΑΙ ΟΙ ΠΕΡΙΠΤΩΣΕΙΣ ΠΟΥ ΤΟ ΟΡΙΟ ΤΗΣ ΑΚΟΛΟΥΘΙΑΣ ΕΙΝΑΙ ΤΟ ΑΠΕΙΡΟ.

Παρασκευή 20 Ιανουαρίου 2012

ΥΠΟΛΟΓΙΣΤΕΣ 1 ΘΕΩΡΙΑ ΚΑΙ ΑΣΚΗΣΕΙΣ


ΘΕΩΡΙΑ


ΣΕ ΚΑΘΕ ΠΡΟΓΡΑΜΜΑ ΣΕ ΓΛΩΣΣΑ C ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΗ Η ΧΡΗΣΗ ΤΗΣ ΕΝΤΟΛΗΣ :
#include<stdio.h>
ΜΕΤΑ ΑΠΟ ΤΗΝ ΠΑΡΑΠΑΝΩ ΕΝΤΟΛΗ ΣΕ ΚΑΘΕ ΠΡΟΓΡΑΜΜΑ ΕΙΝΑΙ ΣΚΟΠΙΜΟ ΝΑ ΔΗΛΩΝΟΥΜΕ ΤΙΣ ΠΑΡΑΚΑΤΩ ΕΝΤΟΛΕΣ ΓΙΑ ΝΑ ΕΙΜΑΣΤΕ ΣΙΓΟΥΡΟΙ ΟΤΙ ΘΑ ΤΡΕΞΕΙ ΧΩΡΙΣ ΠΡΟΒΛΗΜΜΑΤΑ
#include<math.h>
#include<stdlib.h>
ΑΠΟ ΑΥΤΑ ΓΙΝΕΤΑΙ ΚΑΤΑΝΟΗΤΟ ΟΤΙ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΠΑΝΤΑ ΞΕΚΙΝΑΕΙ ΜΕ ΤΟΝ ΕΞΗΣ ΤΡΟΠΟ :
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
ΚΑΤΟΠΙΝ ΓΙΝΕΤΑΙ ΠΑΝΤΑ Η ΔΗΛΩΣΗ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ main ΜΕ ΤΟΝ ΑΚΟΛΟΥΘΟ ΤΡΟΠΟ :
int main (void)
ΚΑΙ ΣΤΗ ΣΥΝΝΕΧΕΙΑ ΧΡΗΣΗΜΟΠΟΙΕΙΤΑΙ Η ΑΓΚΗΛΗ :{
ΟΠΟΤΕ ΤΟ ΠΡΟΓΡΑΜΜΑ ΜΑΣ ΠΑΙΡΝΕΙ ΤΗΝ ΑΚΟΛΟΥΘΗ ΜΟΡΦΗ:


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
ΘΑ ΛΕΓΑΜΕ ΟΤΙ Ο ΤΡΟΠΟΣ ΜΕ ΤΟΝ ΟΠΟΙΟ ΞΕΚΙΝΑΕΙ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΕΙΝΑΙ ΠΑΝΤΑ Ο ΙΔΙΟΣ ΚΑΙ ΔΕΝ ΑΛΛΑΖΕΙ ΠΑΡΑ ΣΕ ΕΛΑΧΙΣΤΕΣ ΠΕΡΙΠΤΩΣΕΙΣ ΟΙ ΟΠΟΙΕΣ ΘΑ ΑΝΑΦΑΙΡΘΟΥΝ ΠΙΟ ΚΑΤΩ
ΣΤΗ ΣΥΝΝΕΧΕΙΑ ΘΑ ΠΡΕΠΕΙ ΝΑ ΓΙΕΙ Η ΔΗΛΩΣΗ ΤΩΝ ΜΕΤΑΒΛΗΤΩΝ ΠΟΥ ΠΡΟΚΕΙΤΑΙ ΝΑ ΧΡΗΣΗΜΟΠΟΙΗΣΟΥΜΕ.ΟΙ ΜΕΤΑΒΛΗΤΕΣ ΑΥΤΕΣ ΜΠΟΡΕΙ ΝΑ ΕΙΝΑΙ ΠΟΛΛΩΝ ΕΙΔΩΝ.ΕΜΕΙΣ ΕΔΩ ΘΑ ΚΑΝΟΥΜΕ ΧΡΗΣΗ ΤΩΝ ΠΙΟ ΑΠΛΩΝ ΟΙ ΟΠΟΙΕΣ ΕΙΝΑΙ ΟΙ: 1)double (οι οποίες χρησιμοποιούνται για δεκαδικούς αριθμούς μεγάλης ακρίβειας) 2)float (οι οποίες χρησιμοποιούνται για δεκαδικούς αριθμούς μικρης ακρίβειας) 3)char (οι οποίες χρησιμοποιούνται για χαρακτήρες όπως είναι διάφορες λέξεις) 4) int(οι οποίες χρησιμοποιούνται για ακεραιους αριθμούς)


ΔΙΑΦΟΡΕΣ ΕΝΤΟΛΕΣ ΠΟΥ ΧΡΗΣΗΜΟΠΟΙΟΥΝΤΑΙ ΚΑΤΑ ΤΗ ΔΗΜΙΟΥΡΓΕΙΑ ΠΡΟΓΡΑΜΜΑΤΟΣ :
printf("dose enan ari8mo ......");
scanf("%fl", &a);
ΜΕΣΑ ΣΤΑ ΕΙΣΑΓΩΓΙΚΑ ΑΝΑΓΝΩΡΙΖΟΝΑΤΙ ΜΟΝΟ ΛΑΤΙΝΙΚΟΙ ΧΑΡΑΚΤΗΡΕΣ ΚΑΙ ΠΟΤΕ ΕΛΛΗΝΙΚΟΙ ΣΤΗΝ ΕΝΤΟΛΗ scanf διπλα στο % παει το lf ΑΝ Η ΜΕΤΑΒΛΗΤΗ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΗΣΑΜΕ ΕΙΝΑΙ ΤΥΠΟΥ double ,f ΑΝ Η ΜΕΤΑΒΛΗΤΗ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΗΣΑΜΕ ΕΙΝΑΙ ΤΥΠΟΥ float ,c  ΑΝ Η ΜΕΤΑΒΛΗΤΗ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΗΣΑΜΕ ΕΙΝΑΙ ΤΥΠΟΥ char,d ΑΝ Η ΜΕΤΑΒΛΗΤΗ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΗΗΣΑΜΕ ΕΙΝΑΙ ΤΥΠΟΥ int


ΕΝΑ ΑΠΛΟ ΠΡΟΓΡΑΜΜΑ ΣΤΗ ΓΛΩΣΣΑ C ΕΙΝΑΙ ΤΟ ΑΚΟΛΟΥΘΟ ΤΟ ΟΠΟΙΟ ΥΠΟΛΟΓΙΖΕΙ ΤΟ ΑΘΡΟΙΣΜΑ 2 ΑΡΙΘΜΩΝ


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
double a,b,sum;
printf("\n Dose ton enan ari8mo");
scanf("%lf", &a);
printf("\n Dose ton allo ari8mo");
scanf("%f", &b);
sum=a+b;
printf("\n To a8roisma ton 2 ari8mon einai to sum=%lf",sum);
system("pause");
return 0:
}
ΣΤΟ ΤΕΛΟΣ ΚΑΘΕ ΕΝΤΟΛΗΣ ΕΙΝΑΙ ΑΠΑΡΑΙΤΗΤΟ ΤΟ ΕΛΛΗΝΙΚΟ ΕΡΩΤΗΜΑΤΙΚΟ (;)


ΤΩΡΑ ΘΑ ΔΟΥΜΕ ΜΕΡΙΚΕΣ ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ ΣΤΗ ΓΛΩΣΣΑ C
1)H ΕΝΤΟΛΗ if
if (λογική παράσταση)
{
εντολές....
}
2)Η ΕΝΤΟΛΗ if-else
if(λογικη παράσταση);
{
εντολές....
}
else
{
εντολές....
}
3)
Η ΕΝΤΟΛΗ if-else if


if(λογικη παράσταση);
{
εντολές....
}
else if(λογικη παράσταση);
{
εντολές....
}




else if(λογικη παράσταση);
{
εντολές....
}
.
.
.
.
.
.
else
{
εντολές....
}






4) switch-case


switch(παράσταση)
{
case 1:
εντολές....
break;
case 2:
εντολές....
break;
.
.
.
.
default:
εντολές....
break;
}


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΜΕΡΙΚΕΣ ΑΠΛΕΣ ΕΦΑΡΜΟΓΕΣ ΤΩΝ ΠΑΡΑΠΑΝΩ ΕΝΤΟΛΩΝ ΣΕ ΞΕΧΩΡΙΣΤΑ ΠΡΟΓΡΑΜΜΑΤΑ:


ΠΑΡΑΔΕΙΓΜΑ 1


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a;
    printf("\n Dose enan ari8mo");
    scanf("%lf" ,&a);
    if(a==0)
    {
    printf("\n O ari8moas a einai 0");
}
system("pause");
return 0;
}






ΠΑΡΑΔΕΙΓΑΜΑ 2


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a;
    printf("\n Dose enan ari8mo");
    scanf("%lf" ,&a);
    if(a==0)
    {
    printf("\n O ari8moas a einai 0");
}
else
{
     printf("\n O ari8mos a den einai 0");
}
system("pause");
return 0;
}

ΠΑΡΑΔΕΙΓΜΑ 3

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a;
    printf("\n Dose enan ari8mo");
    scanf("%lf" ,&a);
    if(a==0)
    {
    printf("\n O ari8moas a einai 0");
}
else if (a==5)
{
     printf("\n O ari8mos a einai 5");
}
else 
{
     printf("\n O ari8mos a den einai 0 oyte 5");
     }
system("pause");
return 0;
}

ΠΑΡΑΔΕΙΓΜΑ 4


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a,b,s,p,d;
    int x;
    printf("\n Dose enan ari8mo");
    scanf("%lf" ,&a);
printf("\n Dose allon ari8mo");
    scanf("%lf" ,&b);
    printf ("\n Dose ena metrhth");
    scanf("%d", &x);
    switch(x)
    {
             case 1:
                  s=a+b;
                  printf("\n To a8roisma einai %lf", s);
                  break;
             case 2:
                       p=a*b;
                       printf("\n To ginomeno einai %lf", p);
                  break;
                  default:
                          d=a-b;
                  printf("\n H diafora einai %lf", d);      
                      break;
    }
system("pause");
return 0;
}

ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΝ ΒΡΟΧΟ while


while(λογική παράσταση)
{
εντολές....
}


ΜΕΣΑ ΣΤΟΝ ΒΡΟΧΟ while  ΠΡΕΠΕΙ ΝΑ ΗΠΑΡΧΕΙ ΕΝΤΟΛΗ Η ΟΠΟΙΑ ΝΑ ΜΕΤΑΒΑΛΕΙ ΤΗΝ ΤΙΜΗ ΤΗΣ ΛΟΓΙΚΗΣ ΠΑΡΑΣΤΑΣΗΣ.


ΠΑΡΑΔΕΙΓΜΑ


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a;
    printf("\n Dose enan ari8mo");
    scanf("%lf" ,&a);
    while(a>0)
    {
              printf("\n o ari8mos a einai 8etikos");
    a=a-1;
    }
        system("pause");
        return 0;
        }    


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΝ ΒΡΟΧΟ do-while


do
{
εντολές....
}
while(λογική παράσταση);

ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΥΣ ΔΕΙΚΤΕΣ.

ΓΙΑ ΝΑ ΚΑΤΑΛΑΒΟΥΜΕ ΤΗΝ ΦΙΛΟΣΟΦΙΑ ΤΩΝ ΔΕΙΚΤΩΝ ,ΑΡΚΕΙ ΝΑ ΦΑΝΤΑΣΤΟΥΜΕ ΚΟΥΤΙΑ ΔΙΑΦΟΡΩΝ ΜΕΓΕΘΩΝ ΤΟ ΕΝΑ ΠΑΝΩ ΣΤΟ ΑΛΛΟ ΤΑ ΟΠΟΙΑ ΠΕΡΙΕΧΟΥΝ ΠΑΠΟΥΤΣΙΑ.ΚΑΠΟΙΑ ΚΟΥΤΙΑ ΕΙΝΑΙ ΑΔΕΙΑ ΚΑΙ ΟΛΑ ΕΧΟΥΝ ΕΝΑ ΕΝΔΕΙΚΤΙΚΟ ΟΝΟΜΑ (ΣΤΗΝ ΠΕΡΙΠΤΩΣΗ ΜΑΣ ΑΣ ΘΕΩΡΙΣΟΥΜΕ ΟΤΙ ΕΧΟΥΝ ΕΝΑ ΑΥΞΠΝΤΑ ΑΡΙΘΜΟ.ΓΙΑ ΝΑ ΑΝΟΙΞΟΥΜΕ ΤΟ ΚΟΥΤΙ ΠΟΥ ΠΕΡΙΕΧΕΙ ΤΙΣ ΜΠΟΤΕΣ ΥΠΑΡΧΟΥΝ ΔΥΟ ΔΥΝΑΤΟΙ ΤΡΟΠΟΙ.
  1. Ο ΕΝΑΣ ΕΙΝΑΙ ΝΑ ΘΥΜΟΜΑΣΤΕ ΤΟ ΟΝΟΜΑ ΤΟΥ ΚΟΥΤΙΟΥ (πχ ΜΠΟΤΕΣ 1)  
  2. ΝΑ ΘΥΜΟΜΑΣΤΕ ΤΟΝ ΑΥΞΟΝΤΑ ΑΡΙΘΜΟ ΑΥΤΟΥ ΤΟΥ ΚΟΥΤΙΟΥ(πχ 6)
ΑΡΚΕΙ ΤΩΡΑ ΓΙΑ ΝΑ ΠΑΡΟΥΜΕ ΤΙΣ ΜΠΟΤΕΣ ΜΕ ΤΟΝ ΔΕΥΤΕΡΟ ΤΡΟΠΟ ΝΑ ΘΕΩΡΙΣΟΥΜΕ ΜΙΑ ΝΕΑ ΜΕΤΑΒΛΗΤΗ (ΚΟΥΤΙ) ΜΕΣΑ ΣΤΗΝ ΟΠΟΙΑ ΘΑ ΚΑΤΑΧΩΡΙΣΟΥΜΕ ΤΟΝ ΑΡΙΘΜΟ 6 Ο ΟΠΟΙΟΣ ΕΙΝΑΙ Ο ΑΥΞΟΝ ΑΡΙΘΜΟΣ ΤΟΥ ΚΟΥΤΙΟΥ.
ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΠΩΣ ΔΗΛΩΝΟΥΜΕ ΕΝΑ ΔΕΙΚΤΗ 

ΕΝΑΣ ΔΕΙΚΤΗΣ ΔΗΛΩΝΕΤΑΙ ΜΕ ΤΟΝ ΙΔΙΟ ΤΡΟΠΟ ΜΕ ΤΟΝ ΟΠΟΙΟ ΔΗΛΩΝΕΤΑΙ ΜΙΑ ΑΛΛΗ ΜΕΤΑΒΛΗΤΗ ΜΕ ΤΗ ΜΟΝΗ ΔΙΑΦΟΡΑ ΟΤΙ ΠΡΙΝ ΑΠΟ ΤΟ ΟΝΟΜΑ ΤΗΣ ΠΡΕΠΕΙ ΝΑ ΥΠΑΡΧΕΙ Ο ΤΕΛΕΣΤΗΣ *
ΓΙΑ ΠΑΡΑΔΕΙΓΜΑ ΕΧΟΥΜΕ ΤΗΝ ΠΑΡΑΚΑΤΩ ΠΡΟΤΑΣΗ
int a,*b;
ΤΟ a ΔΗΛΩΝΕΤΑΙ ΣΑΝ ΜΕΤΑΒΛΗΤΗ ΤΥΠΟΥ int ΕΝΩ ΤΟ b ΔΗΛΩΝΕΤΑΙ ΣΑΝ ΔΕΙΚΤΗΣ
ΤΟ ΓΕΓΟΝΟΣ ΟΤΙ Η b ΔΗΛΩΘΗΚΕ ΩΣ int ΣΗΜΑΙΝΕΙ ΟΤΙ ΘΑ ΠΑΡΕΙ ΤΗ ΔΙΕΥΘΥΝΣΗ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ ΤΥΠΟΥ int.

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

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
int a,*b;
b=&a;
printf("%d",b);
system("pause");
return 0;
}

ΤΟ ΠΑΡΑΠΑΝΩ ΠΡΟΓΡΑΜΜΑ ΘΑ ΕΜΦΑΝΗΣΕΙ ΤΗΝ ΔΙΕΥΘΗΝΣΗ ΣΤΗΝ ΟΠΟΙΑ ΒΡΙΣΚΕΤΑΙ ΤΟ a

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
int a,*b;
b=&a;
scanf("%d",b);

system("pause");
return 0;
}


Η ΕΝΤΟΛΗ scanf ΘΑ ΠΕΡΙΜΕΝΕΙ ΝΑ ΠΑΤΗΘΕΙ ΕΝΑΣ ΑΡΙΘΜΟΣ ΚΑΙ ΘΑ ΤΟΝ ΚΑΤΑΧΩΡΙΣΕΙ ΣΤΗ ΘΕΣΗ ΜΝΗΜΗΣ ΜΕ ΔΙΕΥΘΥΝΣΗ ΤΗΝ ΤΙΜΗ ΤΗΣ ΠΑΡΑΜΕΤΡΟΥ ΤΗΣ.ΔΗΛΑΔΗ ΣΤΗΝ ΜΕΤΑΒΛΗΤΗ a.


ΣΤΟ ΠΑΡΑΠΑΝΩ ΠΑΡΑΔΕΙΓΜΑ ΕΙΤΕ ΧΡΗΣΗΜΟΠΟΙΟΥΣΑΜΕ ΤΗΝ ΕΝΤΟΛΗ scanf("%d",b); ΕΙΤΕ ΤΗΝ scanf("%d",&a); ΘΑ ΗΤΑΝ ΤΟ ΙΔΙΟ ΠΡΑΓΜΑ.


Ο ΤΕΛΕΣΤΗΣ ΑΝΑΦΟΡΑΣ * ΜΑΣ ΔΙΝΕΙ ΤΗ ΔΙΝΑΤΟΤΗΤΑ ΝΑ ΕΧΟΥΜΕ ΠΡΟΣΒΑΣΗ ΣΤΗ ΘΕΣΗ ΜΝΗΜΗΣ ΣΤΗΝ ΟΠΟΙΑ ΔΕΙΧΝΕΙ ΕΝΑΣ ΔΕΙΚΤΗΣ


Ο ΤΕΛΕΣΤΗΣ ΑΝΑΦΟΡΑΣ * ΕΦΑΡΜΟΖΕΤΑΙ ΜΟΝΟ ΣΕ ΜΕΤΑΒΛΗΤΕΣ ΔΕΙΚΤΩΝ  ΚΑΙ ΑΠΟΔΙΔΕΙ ΤΗ ΜΕΤΑΒΛΗΤΗ ΣΤΗΝ ΟΠΟΙΑ ΔΕΙΧΝΕΙ Ο ΔΕΙΚΤΗΣ.


Ο ΤΕΛΕΣΤΗΣ & ΑΠΟΔΙΔΕΙ ΤΗ ΔΙΕΥΘΥΝΣΗ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ.(ΔΗΛΑΔΗ ΤΗ ΘΕΣΗ ΣΤΗΝ ΟΠΟΙΑ ΒΡΙΣΚΕΤΑΙ.)


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

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int a,b,*c;
    c=&a;
    a=25;
    printf("\n To a einai %d",a);
    printf("\n To *c einai %d",*c);
    *c=44;
    printf("\n To a einai %d",a);
    printf("\n To *c einai %d",*c);
    system("pause");
    return 0;
}

ΤΑ ΑΠΟΤΕΛΕΣΜΑΤΑ ΠΟΥ ΘΑ ΕΜΦΑΝΗΣΘΟΥΝ ΘΑ ΕΙΝΑΙ ΤΑ ΑΚΟΛΟΥΘΑ.
  • To a einai 25
  • To *c einai 25
  • To a einai 44
  • To *c einai 44 
Η ΠΡΟΤΑΣΗ *c=44 ΑΠΟΤΕΛΕΙ ΑΝΑΦΟΡΑ ΣΤΗ ΜΕΤΑΒΛΗΤΗ a
ΔΗΛΑΔΗ ΤΟ 44 ΔΕΝ ΚΑΤΑΧΩΡΙΖΕΤΑΙ ΣΤΗ ΜΕΤΑΒΛΗΤΗ c ΑΛΛΑ ΣΕ ΑΥΤΗΝ ΠΟΥ ΔΕΙΧΝΕΙ ΔΗΛΑΔΗ ΣΤΗΝ a.
ΜΕ ΛΙΓΑ ΛΟΓΙΑ ΟΙ ΕΚΦΡΑΣΕΙΣ 
  • *c=44;  
  • a=44;
ΕΙΝΑΙ ΙΣΟΔΘΝΑΜΕΣ  

ΠΑΡΑΚΑΤΩ ΑΚΟΛΟΥΘΕΙ ΕΝΑ ΣΧΗΜΑΤΙΚΟ ΔΙΑΓΡΑΜΜΑ ΤΟ ΟΠΟΙΟ ΜΠΟΡΕΙ ΝΑ ΣΥΜΒΑΛΛΕΙ ΣΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΩΝ ΔΕΙΚΤΩΝ
  1. inta,b,c,*q,*n(ΔΗΛΩΝΟΥΜΕ ΠΕΝΤΕ ΜΕΤΑΒΛΗΤΕΣ ΕΚ ΤΩΝ ΟΠΟΙΩΝ ΟΙ ΔΥΟ ΕΙΝΑΙ ΔΕΙΚΤΕΣ)
  2. a=42;(ΚΑΤΑΧΩΡΟΥΜΕ ΣΤΟ a ΤΗΝ ΤΙΜΗ 42)
  3. q=&a;(ΚΑΤΑΧΩΡΟΥΜΕ ΣΤΟ ΔΕΙΚΤΗ q ΤΗΝ ΔΙΕΥΘΥΝΣΗ ΤΗΣ a)
  4. b=a;(ΚΑΤΑΧΩΡΟΥΜΕ ΣΤΟ b ΤΗΝ ΤΙΜΗ ΤΗΣ a)
  5. c=*q;(ΚΑΤΑΧΩΡΟΥΜΕ ΣΤΗ c ΤΟ ΠΕΡΙΕΧΟΜΕΝΟ ΤΗΣ ΘΕΣΗΣ ΜΝΗΜΗΣ ΣΤΗΝ ΟΠΟΙΑ ΔΕΙΧΝΕΙ Ο q ΔΗΛΑΔΗ ΤΗΝ a)
  6. q=n;(ΚΑΤΑΧΩΡΟΥΜΕ ΣΤΟΝ ΔΕΙΚΤΗ q ΤΟ ΠΕΡΙΕΧΟΜΕΝΟ ΤΟΥ n)  

ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΥΣ ΔΕΙΚΤΕΣ ΤΥΠΟΥ void.



ΕΝΑΣ ΔΕΙΚΤΗΣ ΜΠΟΡΕΙ ΝΑ ΕΙΝΑΙ ΤΥΠΟΥ void.ΑΥΤΟ ΣΗΜΑΙΝΕΙ ΟΤΙ Ο ΔΕΙΚΤΗΣ ΔΕΝ ΔΕΙΧΝΕΙ ΣΕ ΔΕΔΟΜΕΝΑ ΣΥΓΚΕΚΡΙΜΕΝΟΥ ΤΥΠΟΥ ΑΡΑ ΔΕΝ ΜΠΟΡΟΥΜΕ ΝΑ ΕΦΑΡΜΟΣΟΥΜΕ ΑΡΙΘΜΙΤΙΚΟΥΣ ΤΕΛΕΣΤΕΣ ΣΕ ΑΥΤΟΝ.ΜΠΟΡΟΥΜΕ ΟΜΩΣ ΝΑ ΤΟΥ ΑΝΑΘΕΣΟΥΜΕ ΜΙΑ ΤΙΜΗ ΟΠΩΣ ΑΚΡΙΒΩΣ ΚΑΝΑΜΕ ΚΑΙ ΜΕ ΤΟΥΣ ΥΠΟΛΟΙΠΟΥΣ.

ΠΑΡΑΔΕΙΓΜΑ:

int a;

void *d;

d=&a;



ΟΠΩΣ ΒΕΒΑΙΑ ΓΙΝΕΤΑΙ ΚΑΤΑΝΟΗΤΟ ΑΠΟ ΤΑ ΑΝΩΤΕΡΩ, ΟΙ ΔΕΙΚΤΕΣ ΜΠΟΡΟΥΝ ΝΑ ΜΕΤΑΒΙΒΑΣΤΟΥΝ ΚΑΙ ΩΣ ΟΡΙΣΜΑΤΑ ΣΕ ΣΥΝΑΡΤΗΣΕΙΣ.ΦΥΣΙΚΑ ΟΙ ΑΝΤΙΣΤΟΙΧΕΣ ΤΥΠΙΚΕΣ ΠΑΡΑΜΕΤΡΟΙ ΠΡΕΠΕΙ ΝΑ ΕΙΝΑΙ ΟΡΙΣΜΑΤΑ ΤΟΥ ΙΔΙΟΥ ΤΥΠΟΥ.ΑΣ ΓΙΝΟΥΝ ΟΜΩΣ ΟΛΑ ΠΙΟ ΚΑΤΑΝΟΗΤΑ ΜΕ ΤΟ ΠΑΡΑΔΕΙΓΜΑ ΠΟΥ ΑΚΟΛΟΥΘΕΙ.




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
void swap(int *a,int *b);
int main (void)
{
    int x,y;
    printf("\n Dose 2 ari8mous");
    scanf("%d%d",&x,&y);
    printf("\n Oi sri8moi me th seira pou do8hkan einai oi x=%d,y=%d",x,y);
    swap(&x,&y);
    printf("\n H allgh ton wri8mon einai h akolou8h x=%d kai y=%d",x,y);
    system("pause");
}
void swap(int *a,int*b)
{
int c;
c=*a;
*a=*b;
*b=c;
}


ΒΕΒΑΙΑ ΟΠΩΣ ΓΙΝΕΤΑΙ ΚΑΤΑΝΟΗΤΟ, ΥΠΑΡΧΟΥΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣΠΟΥ ΕΠΙΣΤΡΕΦΟΥΝ ΔΕΙΚΤΗ ΟΥΣΙΑΣΤΙΚΑ ΜΠΟΡΕΙ ΝΑ ΕΠΙΣΤΡΕΨΕΙ ΤΗ ΔΙΕΥΘΗΝΣΗ ΜΙΑΣ ΘΕΣΗΣ ΜΝΗΜΗΣ.ΣΤΗ ΣΥΝΑΡΤΗΣΗ ΠΡΕΠΕΙ ΝΑ ΦΑΙΝΕΤΑΙ ΟΤΙ Η ΣΥΝΑΡΤΗΣΗ ΕΠΙΣΤΡΕΦΕΙ ΔΕΙΚΤΗ ΚΑΘΩΣ ΕΠΙΣΕΙΣ ΚΑΙ Ο ΤΥΠΟΣ ΤΟΥ ΔΕΙΚΤΗ ΠΟΥ ΕΠΙΣΤΡΕΦΕΤΑΙ.ΟΙ ΕΠΟΜΕΝΕΣ ΠΡΟΤΑΣΕΙΣ ΔΗΛΩΝΟΥΝ ΣΥΝΑΡΤΗΣΕΙΣ ΠΟΥ ΕΠΙΣΤΡΕΦΟΥΝ ΔΕΙΚΤΕΣ.
char *func1()-->ΕΠΙΣΡΕΦΕΙ ΕΝΑ ΔΕΙΚΤΗ ΣΕ char.
int *func2()--> ΕΠΙΣΤΡΕΦΕΙ ΕΝΑ ΔΕΙΚΤΗ ΣΕ int.


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΥΣ ΠΙΝΑΚΕΣ 
ΟΙ ΠΙΝΑΚΕΣ ΜΠΟΡΟΥΝ ΝΑ ΕΙΝΑΙ ΜΙΑΣ ΔΙΑΣΤΑΣΗΣ,ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ ΤΡΩΝ ΔΙΑΣΤΑΣΕΝ ΕΩΣ Ν-ΔΙΑΣΤΑΣΕΩΝ.ΑΡΧΙΚΑ ΘΑ ΑΣΧΟΛΗΘΟΥΜΕ ΜΕ ΤΟΥΣ ΠΙΝΑΚΕΣ ΜΙΑΣ ΔΙΑΣΤΑΣΗΣ,ΓΝΩΣΤΟΥΣ ΚΑΙ ΩΣ ΜΟΝΟΔΙΑΣΤΑΤΟΥΣ ΠΙΝΑΚΕΣ.
ΓΙΑ ΤΗΝ ΚΑΤΑΝΟΗΣΗ ΤΟΥΣ,ΑΡΚΕΙ ΝΑ ΤΟΥΣ ΦΑΝΤΑΣΤΟΥΜΕ ΣΑΝ ΚΟΥΤΙΑ ΤΟ ΕΝΑ ΠΑΝΩ ΣΤΟ ΑΛΛΟ ΜΕ ΑΥΞΟΝΤΑ ΑΡΙΘΜΟ ΤΟ ΚΑΘΕ ΕΝΑ ΞΕΚΙΝΟΝΤΑΣ ΑΠΟ ΤΟ  ΜΗΔΕΝ.

Ο ΤΡΟΠΟΣ ΔΗΛΩΣΗΣ ΕΝΟΣ ΠΙΝΑΚΑ ΕΙΝΑΙ ΠΑΡΑ ΠΟΛΥ ΑΠΛΟΣ ΚΑΙ ΔΙΝΕΤΑΙ ΜΕ ΤΟΝ ΠΑΡΑΚΑΤΩ ΤΡΟΠΟ.
τυπος_δεδομενων ονομα_πινακα[μεγεθος] πχ

a[10] ΔΗΛΩΝΕΙ ΕΝΑ ΠΙΝΑΚΑ ΜΕ ΟΝΟΜΑ a ΚΑΙ 10 ΘΕΣΕΙΣ ΜΝΗΜΗΣ.
ΟΜΩΣ ΣΤΗΝ ΠΡΩΤΗ ΘΕΣΗ ΜΝΗΜΗΣ ΑΝΤΙΣΤΟΙΧΕΙ Ο ΑΡΙΘΜΟΣ ΜΗΔΕΝ.ΔΗΛΑΔΗ Ο ΠΑΡΑΠΑΝΩ ΠΙΝΑΚΑΣ ΕΧΕΙ 10 ΘΕΣΕΙΣ ΜΝΗΜΗΣ,ΑΠΟ ΤΗΝ a[0] ΜΕΧΡΙ ΚΑΙ ΤΗΝ  a[9].

ΑΣ ΔΟΥΜΕ ΕΝΑ ΑΠΛΟ ΠΑΡΑΔΕΙΓΜΑ.
a[7]=89
ΣΗΜΑΙΝΕΙ ΟΤΙ ΘΑ ΚΑΤΑΧΩΡΙΣΕΙ ΤΟΝ ΑΡΙΘΜΟ 89 ΣΤΗΝ ΟΓΔΟΗ ΘΕΣΗ ΜΝΗΜΗΣ.(ΑΦΟΥ a[0] ΕΙΝΑΙ Η ΠΡΩΤΗ ΘΕΣΗ ΜΝΗΜΗΣ ΚΑΙ a[7] Η ΟΓΔΟΗ ΘΕΣΗ ΜΝΗΜΗΣ.

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

i=35;
a[i]=34;
i=8;
a[i]=79;

ΣΤΗ ΘΕΣΗ a[35] ΘΑ ΚΑΤΑΧΩΡΙΘΕΙ Ο ΑΡΙΘΜΟΣ 34 ΕΝΩ ΣΤΗ ΘΕΣΗ a[8] ΘΑ ΚΑΤΑΧΩΡΙΘΕΙ Ο ΑΡΙΘΜΟΣ 79.

ΑΝ ΕΙΧΑΜΕ ΤΟ ΠΑΡΑΚΑΤΩ ΤΜΗΜΑ ΠΡΟΓΡΑΜΜΑΤΟΣ 
for(i=0;i<=9;i++)
a[i]=45 
ΤΟΤΕ ΟΛΕΣ ΟΙ ΘΕΣΕΙΣ ΤΟΥ ΠΙΝΑΚΑ a ΘΑ ΓΕΜΙΖΑΝ ΜΕ ΤΟ ΝΟΥΜΕΡΟ 45.


ΑΚΟΛΟΥΘΕΙ ΠΡΟΓΡΑΜΜΑ ΤΟ ΟΠΟΙΟ ΓΕΜΙΖΕΙ ΤΙΣ ΘΕΣΕΙΣ ΕΝΟΣ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ 10 ΘΕΣΕΩΝ ΜΕ ΤΥΧΑΙΟΥΣ ΑΡΙΘΜΟΥΣ.




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int i,a[10];
    for (i=1;i<10;i++)
    {
        a[i]=rand();
        printf("\n %d",a[i]);
        }
        system("pause");
        return 0;
        }
ΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΓΕΜΙΖΕΙ ΤΙΣ ΘΕΣΕΙΣ ΕΝΟΣ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ ΜΕ ΤΥΧΑΙΟΥΣ ΑΡΙΘΜΟΥΣ ΜΟΝΟ ΑΝ ΑΥΤΟΙ ΕΙΝΑΙ ΜΕΓΑΛΥΤΕΡΟΙ ΤΟΥ 1000




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int i,a[10];
    for (i=1;i<10;i++)
    {
        a[i]=rand();
        if(a[i]>1000)
        {
        printf("\n %d",a[i]);
        }
        }
        system("pause");
        return 0;
        }


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΟΥΣ ΠΙΝΑΚΕΣ ΣΕ ΜΙΑ ΔΙΑΣΤΑΣΗ ΚΑΙ ΤΟΥΣ ΔΕΙΚΤΕΣ.


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


ΤΙΣ ΘΕΣΕΙΣ ΜΝΗΜΗΣ ΕΝΟΣ ΠΙΝΑΚΑ ΜΠΟΡΟΥΜΕ ΝΑ ΤΙΣ ΠΡΟΣΠΕΛΑΣΟΥΜΕ ΜΕ ΔΥΟ ΔΙΑΦΟΡΕΤΙΚΟΥΣ ΤΡΟΠΟΥΣ.ΕΙΤΕ ΧΡΗΣΙΜΟΠΟΙΟΝΤΑΣ ΤΟΝ ΑΡΙΘΜΟ ΑΝΑΦΟΡΑΣ ΤΟΥΣ ΕΙΤΕ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΤΩΝ ΔΕΙΚΤΩΝ.ΕΤΣΙ ΟΙ ΠΑΡΑΚΑΤΩ ΠΡΟΤΑΣΕΙΣ ΕΙΝΑΙ ΙΣΟΔΥΝΑΜΕΣ.(ΜΙΛΟΝΤΑΣ ΠΑΝΤΑ ΓΙΑ ΕΝΑ ΠΙΝΑΚΑ a[5])



  • a[0]=5<==>*a=5
  • a[1]=7<==>*(a+1)=7
  • a[2]=9<==>*(a+2)=9
ΠΡΟΣΟΧΗΗ ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΔΕΝ ΕΛΕΓΧΕΙ ΑΝ ΕΧΕΙ ΞΕΠΕΡΑΣΤΕΙ ΤΟ ΟΡΙΟ ΕΝΟΣ ΠΙΝΑΚΑ ΚΑΙ ΑΥΤΟ ΕΧΕΙ ΠΟΛΛΕΣ ΦΟΡΕΣ ΚΑΚΕΣ ΣΥΝΕΠΕΙΕΣ ΓΙΑ ΤΗΝ ΕΚΤΕΛΕΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΜΑΣ.ΔΗΛΑΔΗ ΑΝ ΕΧΟΥΜΕ ΕΝΑ ΠΙΝΑΚΑ ΜΕ ΜΕ 34 ΘΕΣΕΙΣ ΑΠΟ ΤΟ a[0] ΜΕΧΡΙ ΤΟ a[33] ΚΑΙ ΚΑΛΕΣΟΥΜΕ ΤΟ a[98] Η ΓΛΩΣΣΑ C ΔΕΝ ΘΑ ΕΜΦΑΝΙΣΕΙ ΚΑΜΙΑ ΕΝΔΕΙΞΗ ΛΑΘΟΥΣ ΚΑΙ Η ΕΚΤΕΛΕΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΙΝΑΙ ΑΒΕΒΑΙΗ.
ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΠΩΣ ΜΠΟΡΟΥΜΕ ΝΑ ΜΕΤΑΒΙΒΑΣΟΥΜΕ ΕΝΑ ΠΙΝΑΚΑ ΩΣ ΠΑΡΑΜΕΤΡΟ ΜΙΑΣ ΣΥΝΑΡΤΗΣΗΣΣΤΗΝ ΠΕΡΙΠΤΩΣΗ ΠΟΥ Η ΠΑΡΑΜΕΤΡΟΣ ΕΙΝΑΙ ΠΙΝΑΚΑΣ,ΤΟΤΕ ΜΕΤΑΒΙΒΑΖΟΥΜΕ ΣΤΗ ΣΥΝΑΡΤΗΣΗ ΤΗ ΔΙΕΥΘΗΝΣΗ ΤΗΣ ΠΡΩΤΗΣ ΘΕΣΗΣ ΜΝΗΜΗΣ ΤΟΥ ΠΙΝΑΚΑ.ΑΡΑ Η ΤΥΠΙΚΗ ΠΑΡΑΜΕΤΡΟΣ ΤΗΣ ΣΥΝΑΡΤΗΣΗΣ ΘΑ ΕΙΝΑΙ ΕΝΑΣ ΔΕΙΚΤΗΣ ΤΟΥ ΙΔΙΟΥ ΤΥΠΟΥ,ΟΠΩΣ ΤΟΥ ΠΙΝΑΚΑ.


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΤΗ ΧΡΗΣΗ ΤΗΣ printf ΤΗΣ scanf ΣΤΟΥΣ ΠΙΝΑΚΕΣ.


ΚΑΙ ΟΙ ΔΥΟ ΣΥΝΑΡΤΗΣΕΙΣ ΧΡΗΣΙΜΟΠΟΙΟΥΝ ΤΗΝ ΕΙΔΙΚΗ ΑΚΟΛΟΥΘΙΑ %s ΤΟΣΟ ΓΙΑ ΤΗΝ ΕΜΦΑΝΗΣΗ ΟΣΟ ΚΑΙ ΓΙΑ ΤΗΝ ΑΝΑΓΝΩΣΗ ΤΩΝ ΣΥΜΒΟΛΟΣΕΙΡΩΝ.


ΤΟ ΠΑΡΑΚΑΤΩ ΠΑΡΑΔΕΙΓΜΑ ΕΜΦΑΝΙΖΕΙ ΤΑ ΠΕΡΙΕΧΟΜΕΝΑ ΤΟΥ ΠΙΝΑΚΑ lex ΚΑΩΣ ΕΠΙΣΕΙΣ ΚΑΙ ΤΗ ΣΥΜΒΟΛΟΣΕΙΡΑ ΤΕΛΟΣ.



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    char lex[10]="MARIA";
    printf("\n O pinakas periexei ta %s",lex);
    printf("\n %s", "TELOS");
    system("pause");
    return 0;
}



ΣΤΟ ΠΑΡΑΠΑΝΩ ΠΡΟΓΡΑΜΜΑ ΠΑΡΑΤΗΡΟΥΜΕ ΟΤΙ ΕΝΩ Η ΛΕΞΗ ΜΑΡΙΑ ΑΠΟΤΕΛΕΙΤΑΙ ΑΠΟ 5 ΓΡΑΜΜΑΤΑ ΕΜΕΙΣ ΔΗΛΩΣΑΜΕ ΠΙΝΑΚΑ 10 ΘΕΣΕΩΝ.Ο ΠΙΝΑΚΑΣ ΜΠΟΡΕΙ ΝΑ ΔΗΛΩΘΕΙ ΑΠΟ 6 ΜΕΧΡΙ Ν ΘΕΣΕΙΣ.ΑΥΤΟ ΓΙΝΕΤΑΙ ΓΙΑΤΙ ΠΡΕΠΕΙ ΝΑ ΔΕΣΜΕΥΣΟΥΜΕ ΤΟΥΛΑΧΙΣΤΟΝ 5 ΘΕΣΕΙΣ ΜΝΗΜΗΣ ΚΑΙ ΜΙΑ ΑΚΟΜΑ ΘΕΣΗ ΣΤΗΝ ΟΠΟΙΑ ΤΟΠΟΘΕΤΕΙΤΑΙ Ο ΧΑΡΑΚΤΗΡΑΣ /0.


ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΚΑΙ ΕΝΑ ΠΑΡΑΔΕΙΓΜΑ ΤΟ ΟΠΟΙΟ ΧΡΗΣΙΜΟΠΟΙΕΙ ΤΗΝ ΕΝΤΟΛΗ scanf.



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
char lex[10];
printf("\n Dose mia lexh ");
scanf("%s",lex);
printf("\n Edoses th lexh %s",lex);
system("pause");
return 0;
}

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


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



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
char lex[10];
printf("\n Dose mia lexh ");
scanf("%s",lex);
printf("\n Edoses th lexh %s",lex);
system("pause");
return 0;
}




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int i;
    double a[10];
    for (i=1;i<10;i++)
    {
    a[i]=rand();
    printf("\n %d",a);
}
    system("pause");
    return 0;
}
        




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a[5];
    int i;
    for (i=1;i<=5;i++)
    {
        printf("\n Dose thn timh");
        scanf("%lf", &a[i]);
        printf("\n Edoses thn timh %lf", a[i]);
        }
        system("pause");
        return 0;
        }
        




#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
double a[5],sum;
int i;
sum=0;
for (i=1;i<=5;i++)
{
printf("\n Dose thn timh");
scanf("%lf", &a[i]);
sum=sum+a[i];
printf("\n Edoses to noumero %lf ",a[i]);
}
printf("\n To synoliko athroisma einai to %lf",sum);
system("pause");
return 0;
}




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



#include <stdio.h> 
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int i;
    double a[4],max,min,sum;
    for(i=0;i<=3;i++)
    {
                     printf("\n Give value");
                     scanf("%lf",&a[i]);
    }
max=a[0];
min=a[0];
sum=0;
 for(i=0;i<=3;i++)
    {
        if(a[i]>max) 
        {
        max=a[i];
                     }
        if(a[i]<min)
        {
           min=a[i];
           }
           sum=sum+a[i];
           }                       
printf("\n max=%lf min=%lf sum=%lf", max,min,sum);
system("pause");
return 0;
}


ΑΣ ΔΟΥΜΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΕΝΤΟΠΙΜΟ ΣΤΟΙΧΕΙΟΥ ΣΕ ΜΟΝΟΔΙΣΤΑΤΟ ΠΙΝΑΚΑ.



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    int i,pos,s;
    double a[5],num;
    for (i=1;i<=5;i++)
    {
        printf("\n Give value");
        scanf("%lf",&a[i]);
        }
        s=0;
        printf("\n Give a random number");
        scanf("%lf",&num);
        for(i=1;i<=5;i++)
        {
           if(a[i]==num)
           {
             pos=i;
             printf("\n The position is pos=%d",pos);
             s=s+1;
             }
             }
             if(s==0)
             {
                printf("\n You did not gave a similar number");
                }
             system("pause");
             return 0;
             }


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



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a[2][2][2];
    int i,j,k;
    for (i=0;i<2;i++)
     for (j=0;j<2;j++)
      for(k=0;k<2;k++)
       {
         a[i][j][k]=rand();
         printf("\n oi times einai oi %lf",a[i][j][k]);
         }
         system("pause");
         return 0;
}
ΑΚΟΛΟΥΘΟΥΝ 2 ΑΠΛΑ ΠΡΟΓΡΑΜΜΑΤΑ ΣΕ ΠΙΝΑΚΕΣ.

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a[2][2],sum;
    int i,j;
    sum=0;
    for (i=0;i<2;i++)
     {
     for(j=0;j<2;j++)
      {
        printf("\n Dose thn timh ");
        scanf("%lf",&a[i][j]);
      sum=sum+a[i][j];
      }
      }
      printf("\n To athroisma einai sum=%lf",sum);
      system("pause");
      return 0;
      }
      
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a[2][2],min,max,ar;
    int i,s,j,pos,dos;
    s=0;
    for(i=0;i<2;i++)
     for(j=0;j<2;j++)
      {
        printf("\n Give value");
        scanf("%lf", &a[i][j]);
        }
        min=a[0][0];
        max=a[0][0];
        for(i=0;i<2;i++)
          for(j=0;j<2;j++)
            {
              if(a[i][j]>max)
              {
                max=a[i][j];
              }             
            }
            for(i=0;i<2;i++)
          for(j=0;j<2;j++)
            {
              if(a[i][j]<min)
              {
                min=a[i][j];
              }        
              }
            printf("\n max=%lf,min=%lf",max,min);
        printf("\n Give a random number");
        scanf("%lf",&ar);
        for(i=0;i<2;i++)
        {
          for(j=0;j<2;j++)
          {
              if(a[i][j]==ar)
              {
              s=s+1;
              pos=i;
              dos=j;
              printf("\n The given number was found pos=%d dos=%d");
              }
              }
              }
                 if(s==0)
                 {
                         printf("\n The number was not found");
                 }
                 system("pause");
                 return 0;
                 }



ΕΥΡΣΗ ΑΘΡΟΙΣΜΑΤΟΣ ΜΙΑΣ ΣΕΙΡΑΣ ΕΝΟΣ ΠΙΝΑΚΑ

#include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
double a[3][2],sum1;
int i,j;
for(i=1;i<=3;i++)
 for(j=1;j<=2;j++)
 {
   printf("\n Give value");
   scanf("%lf",&a[i][j]);
 }
for(i=1;i<=3;i++)
 {
  sum1=0;
 for(j=1;j<=2;j++)
 {
   sum1=sum1+a[i][j];
}
   printf("\n sum1=%lf",sum1);
 }
system("pause");
return 0;





ΜΕΓΙΣΤΟΣ ΓΡΑΜΜΗΣ




  #include<stdio.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
double a[3][2],max;
int i,j;
for(i=1;i<=3;i++)
 for(j=1;j<=2;j++)
 {
   printf("\n Give value");
   scanf("%lf",&a[i][j]);
 }
for(i=1;i<=3;i++)
 {
  max=a[1][j];
 for(j=1;j<=2;j++)
 {
  if (a[i][j]>max)
  max=a[i][j];
}
   printf("\n max=%lf",max);
 }
system("pause");
return 0;
}
                                                        ΑΣΚΗΣΕΙΣ
ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ ΓΙΝΟΜΕΝΟΥ 2 ΑΡΙΘΜΩΝ ΣΕ ΓΛΩΣΣΑ C.


#include<stdio.h>
#include<math.h>
int main(void)
{
    double x,c,a;
    printf("dose ton ena ari8mo");
    scanf("%lf", &x);
    printf("dose ton allo ari8mo");
    scanf("%lf", &c);
    a=x*c;
    printf("to ginomeno einai a=%lf", a);
    system("pause");
    return 0;
}


ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤOΥ ΕΜΒΑΔΟΥ ΤΟΥ ΚΥΚΛΟΥ ΣΕ ΓΛΩΣΣΑ C.

#include<stdio.h>
#include<math.h>
int main (void)
{
    const double p=3.14;
    double x,z;
    printf("/nDose thn aktina tou kiklou/n")
    scanf("%lf", &x)
    z=x*p;
    printf("to embadon tou kiklkou einai z=%lf", z);
    system("pause");
    return 0;
}

ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΗΝ ΜΕΤΑΤΡΟΠΗ ΤΩΝ ΒΑΘΜΩΝ ΚΣΛΣΙΟΥ ΣΕ ΒΑΘΜΟΥΣ ΦΑΡΕΝΑΙΤ ΣΕ ΓΛΩΣΣΑ C.

#include<stdio.h>
#include<math.h>
int main (void)
{
    double c,f;
    printf("/n dose tous va8mous kelsiou");
    scanf("%lf," &c);
    f=c+273;
    printf("/n oi ba8maoi se Farenaigt einai %lf" ,f);
    system("pause");
    return 0;
}

ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤOΥ ΜΕΓΙΣΤΟΥ ΜΕΤΑΞΙ 3 ΑΡΙΘΜΩΝ  ΣΕ ΓΛΩΣΣΑ C.

#include<stdio.h>
#include<math.h>
int main (void)
{
    double a,b,c,max;
    printf("/Dose ton ari8mo a=");
    scanf("%lf" ,&a);
    printf("Dose ton ari8mo b=");
    scanf("%lf", &b);
    printf("dose ton ari8mo c=");
    scanf("%lf", &c);
    if(a>b)
    {
         max=a;
         }
           else
           {
                     max=b;
                     }
                     if(c>max)
                     {
                     max=c;
                     }
                     else
                     {
                     printf("isoi ari8moi");
                     }
               printf("%lf", max);
           system("pause");
           return 0;
           }
           
ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΕΝΕΛΛΑΓΗ ΤΩΝ ΜΕΤΑΒΛΗΤΩΝ  ΣΕ ΓΛΩΣΣΑ C.

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main (void)
{
    double a,b,pros;
    printf("/n Dose ton proto arit8mo");
    scanf("%lf", &a);
    printf("/n Dose ton deftero ari8mo");
    scanf("%lf", &b);
    if (a>b)
    {
            printf("/n oi ari8moi einai oi %lf kai %lf", a,b);
            }
            else
            {
                if(b>a)
                {
                       pros=a;
                       a=b;
                       b=pros;
                       printf("oi ari8moi einai oi %lf kai %lf", a,b);
                       }
                       else
                       {
                           printf("/n oi ari8moi einai isoi");
                           }                           
                           }
                           system("pause");
                           return 0;
                           }
ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΩΝ ΡΙΖΩΝ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ ΕΞΙΣΩΣΗΣ ΣΕ ΓΛΩΣΣΑ C.
                   
 #include<stdio.h>
#include<math.h>
int main (void)
{
    double a,b,c,r,r1,r2,d,s1,s2,s3;
    printf("dose thn timh a");
    scanf("%lf", &a);
    printf("dose thn timh b");
    scanf("%lf", &b);
    printf("dose thn timh c");
    scanf("%lf", &c);
    d=b*b-4*a*c;
    if(d==0)
    {
            r=-b/(2*a);
            printf("h diplh riza eina r=%lf", r);
            }
            else
            {
                if(d<0)
                {
                       s1=-b/(2*a);
                       s2=sqrt(-d)/(2*a);
                       s3=-sqrt(-d)/(2*a);
                printf("%lf+%lfi kai %lf+%lfi", s1,s2,s1,s3);
                }
                else
                 {
                r1=-b+sqrt(d)/(2*a);
                r2=-b-sqrt(d)/(2*a);                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                  printf(" r1=%lf,r2=%lf", r1,r2);
                  }
}
system("pause");
return 0;
}
ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ Ν!  ΣΕ ΓΛΩΣΣΑ C.        

#include <stdio.h>
#include <math.h>
//Dilosi synartiseon: 
//Edo i exodos einai typou int
int factorial(int n_int); 
//Edo den yparhei exodos alla mia metabliti kaleitai me anafora (i 
//n_factorial   
void calculate_factorial(int m_int,  int *n_factorial);

int main(void)
{
int n, m, k;
printf("\nGive me non-negative value of N = ");
scanf("%d", &n);
//O enas tropos:
k = factorial(n);
printf("\n%d!=%d",n,k); 
//O allos tropos:
calculate_factorial(n,&m);
printf("\n%d!=%d\n",n,m); 
system("pause");
return 0;
}
int factorial(int n_int) 
{
int i, fact; //i, fact einai topikes metablites 
if (n_int == 0)
return 1;
else {
fact = 1;
for (i=1; i<=n_int; ++i)
fact *= i;
return fact;
}
}

void calculate_factorial(int m_int, int *n_factorial)
{
int i, fact; 
if (m_int == 0)
*n_factorial = 1;
else
{
fact = 1;
for (i=1; i<=m_int; ++i)
fact *= i;
*n_factorial = fact;
}
}


ΕΔΩ ΥΠΑΡΧΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ ΓΙΑ ΤΟΝ ΥΠΟΛΟΓΙΣΜΟ ΤΟΥ ΑΘΡΟΙΣΜΑΤΟΣ  2 ΑΡΙΘΜΩΝ ΜΕ ΤΗ ΒΟΗΘΕΙΑ ΣΥΝΑΡΤΗΣΗΣ ΣΕ ΓΛΩΣΣΑ C.


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double sum(double x, double y);
int main (void)
{
double x,y,temp;
printf("\n Dose thn timh tou x");
scanf("%lf" ,&x);
printf("Dose thn timh tou y");
scanf("%lf", &y);
temp=sum(x,y);
printf("\n To athroisama ton x kai y ypologismena apo synarthsh tou programmatos einai to sum=%lf", temp);
system("pause");
}
double sum(double x, double y)
{
double a;
a=x+y;
return a;
}
ΑΣ ΔΟΥΜΕ ΤΩΡΑ ΕΝΑ ΕΝΔΙΑΦΕΡΟΝ ΠΡΟΓΡΑΜΜΑ ΜΕ ΣΥΝΑΡΤΗΣΕΙΣ ΚΑΙ ΤΗΝ ΕΝΤΟΛΗ switch-case



#include<stdio.h>
#include<math.h>
#include<stdlib.h>
double athroisma(double a,double b);
double ginomeno (double a,double b);
double piliko (double a,double b);
double mo (double a,double b);
int main (void)
{
double x,y;
int k,i,l;
printf("\n Give i");
scanf("%d", &l);
for (i=1;i<=l;i++)
 {
printf("\n Give first number");
scanf("%lf", &x);
printf("\n Give second number");
scanf("%lf", &y);
printf("\n Give the number");
scanf("%d", &k);
switch (k)
{
       case 1:
            printf("\n To athroisma einai sum=%lf", athroisma(x,y));
            break;
       case 2:
                printf("\n To ginomeno einai p=%lf", ginomeno(x,y));
            break;
       case 3:
            if (y==0)
               printf("\n Adinath diairesh");
            else
               printf("\n To ginomeno einai piliko=%lf", piliko(x,y));
            break;
            default:
                printf("\n O mesos oros einai mo=%lf", mo(x,y));
            break;
   }
}
system("pause");
}          
                            
double athroisma(double a,double b)
{
   double sum;
   sum=a+b;
   return sum;
}
double ginomeno (double a,double b)
   {
   double p;
   p=a*b;
   return p;
}
double piliko (double a,double b)
   {
   double piliko;
   piliko=a/b;
   return piliko;
}
double mo (double a,double b)
   {
   double mo;
   mo=(a+b)/2;
   return mo;
}


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


Εργαστήριο Υπολογιστών
Ασκήσεις



 Διδάσκοντες:
Ε. Ανασοντζής (Επίκ. Καθηγητής)
Α. Μουστάκας (Επίκ. Καθηγητής)
Ε. Νισταζάκης (Επίκ. Καθηγητής)
Ε. Τσίλης   (Επίκ. Καθηγητής)

Πανεπιστήμιο Αθηνών
Τμήμα Φυσικής



Αθήνα 2011
     Εργαστήρια Υπολογιστών στην C
Τμήμα Φυσικής

                                                             
1. Άσκηση (Εισαγωγή)


1.1 Γνωριμία με τον υπολογιστή.
Μπροστά σας έχετε υπολογιστές με τους οποίους θα μάθετε να επικοινωνείτε και να
προγραμματίζετε. Οι υπολογιστές έχουν είσοδο είτε από κάποια δισκέτα είτε από το πληκτρολόγιο
ενώ έξοδος είναι η οθόνη. Το λειτουργικό σύστημα είναι το Linux-Ubuntu, βασικά αρχεία του οποίου
φορτώνονται στη μνήμη του υπολογιστή κατά τη διάρκεια της εκκίνησής του. Το λειτουργικό σύστημα
εφοδιάζει τον χρήστη με ένα σύνολο βασικών εντολών με τη βοήθεια των οποίων ο χρήστης
επικοινωνεί με τον υπολογιστή.

1.2 Βασικές πληροφορίες για το Linux

1.2.1 Εκκίνηση του υπολογιστή
Αρχικά ανοίγετε τον υπολογιστή και περιμένετε να φορτώσει το Operating System στη μνήμη του
(δηλαδή να «ξεκινήσει»). Ανάλογα με το τερματικό που χρησιμοποιείτε, μπορεί να σας ζητηθεί να
εισάγετε ως username τη λέξη student, ή να κάνετε κλικ μεταξύ άλλων επιλογών. Κατόπιν, θα σας
ζητηθεί να εισάγετε ως password τη λέξη physics.


1.2.2 Εντολές του Linux
Όταν ολοκληρωθεί η εκκίνηση του υπολογιστή, η οθόνη μοιάζει με την αντίστοιχη οθόνη που πιθανώς
να έχετε συνηθίσει στα Microsoft Windows, δηλαδή ένα παράθυρο με μικρά εικονίδια (shortcuts). Ο
λόγος είναι ότι το σύστημα Linux έχει σχεδιαστεί έτσι ώστε να είναι βολικό και αύκολο για χρήστες
Windows, αλλά ταυτόχρονα είναι πολύ πιο γρήγορο και «ανθεκτικό».
Για να συνεχίσουμε, πρέπει πρώτα να ανοίξουμε μία κονσόλα, από την οποία θα μπορέσουμε να
πληκτρολογήσουμε τις απαραίτητες εντολές. Έτσι κάνουμε κλικ στο εικονίδιο με το όνομα Terminal
στην οθόνη του υπολογιστή. Όταν ανοίξει το παράθυρο της κονσόλας εμφανίζεται το σήμα :\>, το
οποίο ονομάζεται prompt, και μας πληροφορεί ότι το λειτουργικό σύστημα είναι έτοιμο να δεχθεί
εντολή από τον χρήστη. Ο χρήστης εισάγει κάθε φορά μια εντολή από το πληκτρολόγιο
ακολουθούμενη από το πλήκτρο Enter.

1. Πληκτρολογούμε την εντολή
cd Documents
που μας πηγαίνει στο directory Documents. (cd σημαίνει «change directory»).

2. Πληκτρολογούμε την εντολή
mkdir 201100xxx
όπου xxx είναι οι αριθμοί του ΑΜ μας. Αυτή η εντολή δημιουργεί ένα directory με όνομα 200700xxx,
το οποίο είναι το προσωπικό μας directory μέσα στο οποίο θα δημιουργήσουμε τα προγράμματα που
θα γράψουμε.

3. Πληκτρολογούμε την εντολή
cd 201100xxx
που μας πηγαίνει στο παραπάνω directory.

4. Κατόπιν, ανάλογα με το τερματικό το οποίο χρησιμοποιούμε, πληκτρολογούμε την εντολή
kwrite &
που ανοίγει τον editor kwrite ή την εντολή
gedit &
που ανοίγει τον editor gedit. Αντίστοιχα, μπορούμε να ανοίξουμε τον editor, κάνοντας κλικ στο
αντίστοιχο εικονίδιο στην οθόνη του υπολογιστή.

Το σύμβολο & το γράφουμε για να μας επιτρέψει να γράψουμε άλλες εντολές αφού ανοίξει ο editor.
(Αν δεν το είχαμε γράψει, δε θα μπορούσαμε να εισάγουμε άλλες εντολές σε αυτήν την κονσόλα, όσο
το πρόγραμμα kwrite/gedit είναι ανοικτό.) Βλέπουμε τώρα ένα νέο παράθυρο να ανοίγει, αυτό του
editor. Σε αυτό το παράθυρο θα γράψουμε το πρόγραμμα μας. Είναι καλό να ονομάσουμε άμεσα το
πρόγραμμα με την εντολή πηγαίνοντας με το ποντίκι στο κουμπί File και πατώντας Save As και
κατόπιν εισάγοντας το όνομα του προγράμματος, συμπληρώνοντάς το με το .c π.χ. onoma.c. Στη
συνέχεια, και όσο γράφουμε το πρόγραμμα, όταν θέλουμε να το σώσουμε, πατούμε το κουμπί που
μοιάζει με δισκέττα. Όταν σώσουμε το πρόγραμμα θα παρατηρήσουμε ότι στον editor οι διαφορετικού
τύπου λέξεις έχουν άλλο χρώμα. Π.χ. τα σχόλια είναι σε italics, το κείμενο μέσα στην εντολή printf
είναι κόκκινα, ενώ οι μεταβλητές είναι μαύρες. Αυτό συμβαίνει επειδή ο editor έχει αναγνωρίσει το
είδος του προγράμματος που γράφουμε και επιχειρεί να μας βοηθήσει να το διαβάζουμε πιο εύκολα.

5. Αφού γράψουμε το πρόγραμμα και αφού το σώσουμε, είμαστε έτοιμοι να το μεταγλωττίσουμε
χρησιμοποιώντας τον Compiler. Πληκτρολογούμε στην κονσόλα με την εντολή:

gcc –o onoma onoma.c

όπου το gcc είναι το όνομα του compiler για την C και onoma το όνομα του προγράμματός μας. To
κομμάτι της εντολής: “-o onoma”, κάνει τον compiler να ονομάσει το πρόγραμμα που θα «τρέξουμε»
ως “onoma”. Κατόπιν βλέπουμε στο τερματικό τα σχόλια του compiler, συγκεκριμένα τα λάθη τα
οποία έχει βρει. Πάμε πίσω στον editor και τα διορθώνουμε, σώζουμε το αρχείο (με την εντολή Save,
όπως παραπάνω) και μετά ξανατρέχουμε τον compiler.

6. Όταν ο compiler δε μας δώσει άλλα λάθη, είμαστε έτοιμοι να «τρέξουμε» το πρόγραμμά μας
πληκτρολογώντας την εντολή:

./onoma

Τώρα αρχίζουμε να εισάγουμε ό,τι τιμές μας ζητάει το πρόγραμμα κλπ.

7. Όταν τελειώσουμε με το πρόγραμμα μας, κλείνουμε το παράθυρο του kwrite και της κονσόλας.


Χρήσιμες Εντολές στην Κονσόλα
Α. Όταν είμαστε στο prompt της κονσόλας, τα βελάκια↑ και ↓ μας επιτρέπουν να ξαναφέρουμε
προηγούμενες και επόμενες εντολές που έχουμε πληκτρολογήσει.

Β. Το κουμπί Tab μας επιτρέπει να γραφουμε την αρχη μιας εντολής ή ονόματος αρχείου και κατόπιν,
πατώντας Tab, να συμπληρώνεται μόνο του. Π.χ. άν στην εντολή 1 παραπάνω γράψουμε cd Docum και
μετά πατήσουμε Tab η λέξη Documents θα συμπληρωθεί μόνη της.

Γ. Η εντολή cp (copy) αντιγράφει ένα ήδη υπάρχον αρχείο σε ένα άλλο με το όνομα που θα
υποδείξουμε εμείς. Π.χ.
cp onoma.c onoma2.c

Δ. Η εντολή ls (list) μας δίνει στην κονσόλα όλα τα προγράμματα μέσα στο directory που
βρισκόμαστε.

1.3 Υπολογισμός αθροίσματος
Παρακάτω δίνεται το πρώτο σας πρόγραμμα, το οποίο τυπώνει μηνύματα στην οθόνη και εκτελεί μία
πρόσθεση με προσθετέους που εσείς εισάγετε. Επίσης τυπώνει και το αποτέλεσμα της πρόσθεσης.

#include <stdio.h>                       //{Ενσωμάτωση Βασικών Αρχείων}

int main(void)                           //{Βασικό μέρος προγράμματος}
{
// Define variables
double a,b,c;            //{Δήλωση μεταβλητών}

printf(“\n Hello!”);                       //{Τύπωση μηνύματος στην οθόνη}
printf(“\n Give me a = “);
scanf(“%lf”, &a);
printf(“\n Give me b = “);         //{Δέχεται προσθετέους}
scanf(“%lf”, &b);

c = a+b;

printf(“\n The sum is c = %lf”,c);
printf(“\n The sum with 7 total digits and 3 decimal digits is c = %7.3lf”, c);
printf(“\n The sum written scientifically is c = %e\n”, c);       {Εμφάνιση του αποτελέσματος}

return 0;
}                   //{Τέλος προγράμματος}



1.4 Άσκηση: Υπολογισμός μέσης τιμής
Με βάση τις γνώσεις που προσκομίσατε από την παραπάνω άσκηση, μπορείτε τώρα να γράψετε ένα
πρόγραμμα από την αρχή, το οποίο υπολογίζει τη μέση τιμή τεσσάρων αριθμών. Η ιδέα είναι η ίδια με
την παραπάνω, μόνο που, αντί να εισάγετε δύο αριθμούς, a, b, πρέπει τώρα να εισάγετε τέσσερεις
αριθμούς, a, b, c, d και να διαιρέσετε το άθροισμα με το τέσσερα. Προσοχή, οι αριθμοί πρέπει να είναι
πραγματικοί (και όχι ακέραιοι), και έτσι για να μην μπερδέψετε τον compiler, πρέπει να διαρέσετε με
το 4.0, αντί απλά το 4! Έπίσης, αρκεί να τυπώνεται ο τελικός αριθμός (η μέση τιμή δηλαδή) με έναν
από τους τρεις τρόπους που χρησιμοποιήθηκαν στο παραπάνω πρόγραμμα.

Όταν τελειώσετε το πρόγραμμα, πρέπει να το σώσετε, κατόπιν να το κάνετε compile, και κατόπιν να
βεβαιωθείτε ότι «τρέχει» ακολουθώντας τις παραπάνω οδηγίες. Στη συνέχεια πρέπει οπωσδήποτε να το
δείξετε σε κάποιον από τους επιβλέποντες ο οποίος θα επιβεβαιώσει τη σωστή λειτουργία του.

2. Άσκηση (Tριώνυμο)


2.1 Επίλυση Τριωνύμου.
Όπως είναι γνωστό ένα τριώνυμο δευτέρου βαθμού ρ(x) ορίζεται μονοσήμαντα από τους συντελεστές
του α,β,γ. Δοθέντων των συντελεστών μπορούμε να αποφανθούμε κατά πόσο το τριώνυμο έχει μία,
δύο πραγματικές ή δύο μιγαδικές ρίζες. Το πρόγραμμα κάνει αυτή ακριβώς τη δουλειά: ζητάει τους
συντελεστές και βγάζει αποτελέσματα. Ιδιαίτερη προσοχή χρειάζεται όταν εισάγεται τιμή για τον α :
δεν πρέπει να δοθεί τιμή μηδέν σε αυτό το συντελεστή.

2.3 Εφαρμογή
Παρακάτω δίνεται το πρόγραμμα, το οποίο δίνει τις ρίζες τριωνύμου που εσείς εισάγετε, δίνοντας τους
συντελεστές του.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

int main(void)
{
// Define variables

double a, b, c, d, x1;

printf(“\nGive value a (non-zero)”);
scanf(“%lf”, &a);
printf(“\nGive value b”);
scanf(“%lf”, b);
printf(“\n Give value of c”);
scanf(“%lf”, c);                          //{εισαγωγή στοιχείων}

d=b*b-4*a*c;                           //{υπολογισμός διακρίνουσας}

if (d==0.0)
{
x1 = -0.5*b/a;
printf(“\nThe double root is x= %f”, x1);
}
else
{
if (d<0)
printf(“\nNo real roots”);
else
{
x1=0.5(-b+sqrt(d))/a;
x2=0.5*(-b-sqrt(d))/a;
print(“\nThe two roots are x1= %f and x2=%f”, x1, x2);
}
}
return 0;
}


Το πρόγραμμα ζητάει τους a, b, c και υπολογίζει τη διακρίνουσα. Έπειτα χρησιμοποιεί τη δομή : If-else
αναλόγως τυπώνει στην οθόνη τα αποτελέσματα.

Η δομή If-else έχει την εξής σύνταξη :

If    (condition)
command list
else command list


Σε μια command list μπορεί να εμπεριέχεται μια δομή If -else. Τότε έχουμε φωλιασμένο (nested) if,
όπως και στο πρόγραμμα μας.

ΣΗΜΑΝΤΙΚΟ:
Όταν κάνουμε compile το παραπάνω πρόγραμμα, καθώς και κάθε πρόγραμμα στο οποίο
συμπεριλαμβάνουμε το “#include <math.h>”, χρησιμοποιούμε την εντολή:



2.4.  Άσκηση: Υπολογισμός των μιγαδικών ριζών
Στο παραπάνω πρόγραμμα υπολογισμού των ριζών του τριωνύμου, προσθέσετε τις κατάλληλες
γραμμές κώδικα ώστε να εμφανίζει στην οθόνη τις μιγαδικές ρίζες της εξίσωσης όταν η διακρίνουσα
είναι μικρότερη του μηδενός. Για τον υπολογισμό αυτό, δε χρειάζεται να χρησιμοποιήσετε μιγαδικούς
αριθμούς στη C αλλά μόνο να χειριστείτε έξυπνα την εντολή printf και τις σχέσεις που φαίνονται στη
σημείωση που ακολουθεί.



3. Άσκηση (Αριθμητική Ολοκλήρωση)


3.1 Εισαγωγή
Σε αυτήν την άσκηση θα ασχοληθούμε με μία πολύ χρήσιμη εφαρμογή των υπολογιστών στη Φυσική,
την αριθμητική ολοκλήρωση συναρτήσεων. Υπάρχουν πάμπολλες μέθοδοι με ευρύ φάσμα σε
πολυπλοκότητα. Εμείς εδώ θα αναπτύξουμε την μέθοδο ολοκλήρωσης με τον κανόνα του τραπεζίου.
Σύμφωνα με αυτήν την μέθοδο, όταν τα σημεία x1, x2 είναι πολύ κοντά μεταξύ τους (δηλαδή το x2-
x1=h→0), τότε το ολοκλήρωμα

3.2 Εφαρμογή
Στην παρακάτω εφαρμογή θα υπολογίσουμε το ολοκλήρωμα της συνάρτησης cos(x) από a έως b και θα


το συγκρίνουμε με το σωστό αποτέλεσμα
b και του αριθμού των βημάτων Ν.



ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

int main(void)
{
double a, b, n, h, sum;
int i;

printf("To programma ayto tha oloklirosei to cos(x) apo to a os to b se N vimata.\n");

printf("Dose tin arxiki timi olokliromatos, a\n");
scanf("%lf", &a);

printf("Dose tin teliki timi olokliromatos, b\n");
scanf("%lf", b);

printf("Dose ton synoliko arithmo vimaton N\n");
scanf("%lf", n);

h = (b-a)/n;

sum = 0.0;

for (i=0; i<n+1, ++i)
sum += cos(a+h*i)*h;

sum -= 0.5*h*(cosa+cos(b));

printf("arithmitiko apotelesma = %lf \n", sum);
exact_res = sin(b)-sin(a);
printf("akrives apotelesma = %lf \n", exact_res);
diff = fabs(sum - exact_res);
printf("diafora = %e \n", &diff );


return 0;
}


3.3 Άσκηση: Υπολογισμός με τον κανόνα του παραλληλογράμμου
Ένας άλλος τρόπος αριθμητικού υπολογισμού του ολοκληρώματος είναι η μέθοδος του
παραλληλογράμμου. Η μεθοδολογία αυτή είναι λιγότερο ακριβής από αυτή του τραπεζίου που
αναλύθηκε παραπάνω, αλλά απαιτεί μικρότερο αριθμό πράξεων και πολλές είναι πιο χρήσιμη.
Σύμφωνα με τη μέθοδο αυτή, όπως φαίνεται στο παραπάνω σχήμα, χωρίζουμε το διάστημα που
θέλουμε να ολοκληρώσουμε σε μικρά κομμάτια που απέχουν μεταξύ τους h. Θεωρούμε ότι, όταν τα
σημεία π.χ. x1, x2, είναι πολύ κοντά μεταξύ τους, τότε το μπορεί να προσομοιωθεί με ένα
παραλληλόγραμμο με τη μία πλευρά του να είναι μήκους x1 και την άλλη h. Οπότε το στοιχειώδες
εμβαδό από την πρώτη διαμέριση θα είναι hf(x1), ενώ από κάθε επόμενη θα είναι hf(xi), με i=1…N.
Αρα, το συνολικό εμβαδό-ολοκλήρωμα θα δίνεται από τη σχέση:


                              f ( x)dx h( f1 + f 2 + f 3 + ... + f N ) = h( f1 + f 2 + f 3 + ... + f N +1 ) − hf N +1



Με βάση την παραπάνω ανάλυση της μεθόδου και την εξίσωση που προέκυψε να αλλάξετε το
παραπάνω πρόγραμμα, ώστε να υπολογίζει το ολοκλήρωμα με τη μέθοδο του παραλληλογράμμου και
όχι με αυτή του τραπεζίου.
Η συνάρτηση f(x) θα σας δοθεί στο εργαστήριο από τους διδάσκοντες.

4. Άσκηση (Αριθμητική Ολοκλήρωση Συνήθους Διαφορικής
Εξίσωσης)

4.1 Εισαγωγή
Αυτή η άσκηση γενικεύει τη μέθοδο της προηγουμένης στην περίπτωση που η συνάρτηση προς
ολοκλήρωση είναι η παράγωγος μιας διαφορικής εξίσωσης, η οποία εξαρτάται από την συνάρτηση y(x)
και τη μεταβλητή x, δηλαδή
y '( x) = f ( y( x), x)
Ολοκληρώνοντάς την έχουμε
b
a


Ένα πολύ απλό παράδειγμα είναι η



για την οποία η λύση είναι γνωστή
y= y(a)e( xa ) + e x ( x a)
Ο τρόπος τον οποίον θα χρησιμοποιήσουμε για να τη λύσουμε αριθμητικά λέγεται μέθοδος του Euler
και είναι ο απλούστερος από μια σειρά πολλών μεθόδων που χρησιμοποιούνται σε αριθμητικά πακέτα.
(Για    περισσότερες    πληροφορίες    βλέπε  http://en.wikipedia.org/wiki/Numerical_ordinary_

Η βασική ιδέα είναι ότι η παράγωγος στην αριστερή πλευρά της πρώτης εξίσωσης αυτής της
παραγράφου, μπορεί να προσεγγιστεί με τον ορισμό της για h→0, ως εξής:


                                        Επομένως έχουμε
yn+1 =xn+1 ) ≈ y( xn ) + f ( y( xn ), xn )h = + f ( yn , xn )h

Έτσι σε κάθε βήμα υπολογίζουμε την τιμή του y(x) στο επόμενο σημείο προσθέτοντας στο y(x) του
προηγούμενου την τιμή της παραγώγου f(y,x) υπολογισμένη στο προγούμενο σημείο. Όπως και στην
προηγούμενη άσκηση χρειάζόμαστε την αρχική τιμή της y(a), τις τιμές των αρχικών και τελικών
σημείων a, b, και τον αριθμό βημάτων, Ν. Τότε το βήμα h δίνεται από

4.2 Εφαρμογή
Στην παρακάτω εφαρμογή θα υπολογίσουμε αριθμητικά τη λύση της παραπάνω διαφορικής εξίσωσης
και θα το συγκρίνουμε με το σωστό αποτέλεσμα για διάφορες τιμές των a, b και του αριθμού των
βημάτων Ν.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

int main(void)
{
double a, b, n, h, x_n, y_n, f_n, y0;
double exact_res, diff;
int i;

printf("To programma ayto tha lisei th diaforiki exisosi y'=- y+exp(-x) apo to a os to b se N
vimata.\n");

printf("Dose tin arxiki timi a\n");
scanf("%lf", a);

printf("Dose tin teliki timi b\n");
scanf("lf", &b);

printf("Dose tin arxiki timi tis synartisis y(a)\n");
scanf("%lf", y0);

printf("Dose ton synoliko arithmo vimaton N\n");
scanf("%lf", &n);

h = (b-a)/n;

y_n = y0;
x_n = a;

for (i=0; i<n+1; ++i)
{
f_n = -y_n+exp(-x_n);
x_n += -h;
y_n += f_n*h;
}
printf("arithmitiko apotelesma = %lf \n", y_n);
exact_res = y0*exp(-b+a)+exp(-b)*(b-a);
printf("akrives apotelesma = %lf \n", exact_res);
diff = fabs(y_n - exact_res);
printf("diafora = %e \n", diff );


return 0;
}


4.3 Άσκηση: Επίλυση διαφορικής και επιβεβαίωση λύσης
Με βάση την παραπάνω μεθοδολογία και το πρόγραμμα που υλοποιήθηκε στην παράγραφο 4.2, να
δημιουργείστε το αντίστοιχο πρόγραμμα για την επίλυση της διαφορικής εξίσωσης:

y '( x) = f ( y( x), x)

Η συνάρτηση f(y, x) και η αντίστοιχη ακριβής λύση θα σας δοθεί στο εργαστήριο από
τους διδάσκοντες.

5. Άσκηση (Αποθήκευση και ανάκτηση δεδομένων
από το δίσκο)
5.1 Ποια είναι η λογική της αποθήκευσης
Πολύ συχνά τα δεδομένα τα οποία προκύπτουν από ένα πρόγραμμα πρέπει να επεξεργαστούν με
κάποια άλλη εφαρμογή ή τα αποτελέσματα αυτά πρέπει να αποθηκευτούν ώστε να μπορούν, σε κάποια
άλλη στιγμή, να ανακτηθούν από το χρήστη για να τα χρησιμοποιήσει.
Επομένως, είναι σημαντικό να έχουμε τη δυνατότητα να αποθηκεύουμε δεδομένα στο δίσκο του
υπολογιστή μας. Στην ακόλουθη εφαρμογή, υπολογίζουμε τις τιμές μιας συνάρτησης και τα
αποτελέσματα τα αποθηκεύουμε στον δίσκο.



5.2 Εφαρμογή
Το ακόλουθο πρόγραμμα υπολογίζει την τιμές της συνάρτησης f(x)=3x4+2x2-5x+1, για τιμές του x από
-100 έως 100 με βήμα 0.01. Τα αποτελέσματα αποθηκεύονται σε ένα αρχείο της μορφής .dat και
μπορούν να χρησιμοποιηθούν για επεξεργασία από οποιοδήποτε πρόγραμμα υποστηρίζει αυτού του
τύπου τα αρχεία.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

include <stdio.h>
include <stdlib.h>
int main()
{
FILE* fp;
double x, fx;

fp=fopen(“test1.dat”, “w”); /*anoigei to arxeio gia egrafh */

for(x=-10; x<10; x=x-0.1)
{
fx = 3*pow(x,4)+2*pow(x,3)-5*x+1;
fprintf(fp, “%d,%f\n”, x, fx);
}

fclose(fp);
return 0;
}

5.3 Άσκηση
Να κάνετε τις απαραίτητες τροποποιήσεις στο παραπάνω πρόγραμμα ώστε να ανοίγει ένα αρχείο και
για αποθήκευση αλλά και για ανάγνωση στοιχείων, που θα το ονομάζετε test2.dat και στη συνέχεια να
αλλάξετε τη συνάρτηση που υπολογίζει και να βάλετε την f(x)=(5x7+1)/(x2+1) για τιμές του x από -10
έως το 50 με βήμα 0.005.


5.4 Ανάγνωση αρχείου
Όπως αναφέρθηκε και στην εισαγωγή της παρούσας άσκησης, τα αρχεία στα οποία έχουμε
αποθηκεύσει τα διάφορα δεδομένα, μπορούν να διαβαστούν και τα δεδομένα αυτά να
χρησιμοποιηθούν. Με βάση αυτή τη δυνατότητα, να κατασκευάσετε ένα πρόγραμμα, το οποίο όταν θα
τρέχει, θα διαβάζει τα στοιχεία του αρχείου test1.dat και στη συνέχεια θα εκτυπώνει στην οθόνη τη
μέση τιμή και τη διασπορά των τιμών του fx. Σημειωτέον ότι η μέση τιμή μ και η διασπορά σ2
ορίζονται ως εξής
include <stdio.h>
include <stdlib.h>

int main()
{
FILE* fp;
double timi_f, athroisma_x, athroisma_x2, mesos, diaspora;
int timi_x, plithos;

fp=fopen("test1.dat", "r");

fscanf(fp, "%d,%lf", &timi_x, &timi_f);

while(!feof(fp)){
printf("\n%d\t%lf\t", timi_x, timi_f);
fscanf(fp, "%d,%lf", &timi_x, &timi_f);
plithos +=1;
athroisma_x += timi_f;
athroisma_x2 += timi_f*timi_f;
}
mesos = athroisma_x/plithos;
diaspora = athroisma_x2;

printf("\nN = \t %d\n", plithos);
printf("Mesos = \t %lf\n", mesos);
printf("Diaspora = \t%lf \n", diaspora);

fclose(fp);
return 0;
}

6. Άσκηση (Πράξεις με Πίνακες)

6.1 Πολλαπλασιασμός Πινάκων.
Όπως είναι γνωστό δύο πίνακες ΝxΡ , ΡxΚ πολλαπλασιαζόμενοι με αυτή τη σειρά δίνουν ένα πίνακα
ΝxΚ. Σε αυτή την άσκηση εισάγονται δύο πίνακες και το πρόγραμμα δίνει το αποτέλεσμα τους.
Μπορείτε όμως να αλλάξετε τους Ν, Ρ, Κ, οι οποίοι δίνονται ως σταθερές στην αρχή του
προγράμματος και να εκτελέσετε έτσι όποιο πολλαπλασιασμό θέλετε.



6.2 Λογικά διαγράμματα
Στα πλαίσια του δομημένου προγραμματισμού χρησιμοποιούνται λογικά διαγράμματα που παριστούν
βασικές λογικές δομές, όπως άλλωστε έχει αναφερθεί στις ασκήσεις που έχουν προηγηθεί.  Στο
πρόγραμμα χρησιμοποιούνται η σειριακή δομή (που έχουμε γνωρίσει στη 2η άσκηση) και η δομή
επανάληψης, for (i=0; i<n; ++i) (που έχουμε γνωρίσει στην 3η άσκηση).

6.3 Εφαρμογή
Παρακάτω δίνεται το πρόγραμμα, το οποίο εκτελεί πολλαπλασιασμό πινάκων.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

int main(void)
{
int n, m, p;
int i, j;

printf(“\n In this program we will multiply a MxN matrix A with an NxP matrix B”);
printf(“\n Give number of rows of matrix A, M= ”);
printf(“\n Give number of columns of matrix A, N= ”);
scanf(“%d”, n);
printf(“\n Give number of columns of matrix B, P= ”);
scanf(“%d”,&p);

// Here we define the matrices A, B
double a[m][n];
double bb[n][p];
double c[m][p];




printf(“\nGive elements of B\n”);
for (i=0; i<n; ++i)
{
{
printf(“\nB[%d][%d] = ”, i+1 ,j+1);
scanf(“%lf”,&b[i][j]);
}
}

for (i=0; i<m; ++i)
{
for (j=0; j<p;++j)
{
temp = 0.0;
for (k=0; k<n; ++k)
temp += a[i][k]*b[k][j];
c[i][j] = temp;
printf(“\n C[%d][%d] = %f”, i+1, j+1, c[i][j]);
}

return 0;
}


Παρατηρήστε ότι για τον υπολογισμό του πίνακα C=AxB χρησιμοποιούνται 3 δομές for, η μία μέσα


6.4 Άσκηση: Υπολογισμός αθροίσματος πινάκων
Είναι γνωστό ότι η πρόσθεση και η αφαίρεση πινάκων μπορεί να πραγματοποιηθεί μόνο μεταξύ
πινάκων που έχουν την ίδια διάσταση. Αν θεωρήσουμε δύο πίνακες Α και Β με ίδιες διαστάσεις, έστω
Ν×M, τότε η πρόσθεση ή η αφαίρεση τους θα δίνει έναν πίνακα C, επίσης Ν× M, τα στοιχεία του
οποίου θα υπολογίζονται ως εξής:

cij = aij ± bij όπου i=1..N και j=1…M

Με βάση τον ορισμό αυτό, να αλλάξετε το παραπάνω πρόγραμμα ώστε να υπολογίζει το άθροισμα
C=Α+Β και να τυπώνει τα περιεχόμενα του πίνακα C στο αρχείο test3.dat, με κάθε στήλη του
πίνακα να απέχει από την άλλη κατά ένα tab.


7. Άσκηση (Υπολογισμός Αθροίσματος - Γινομένου)


7.1 Η έννοια του μεγάλου αριθμού προσθετέων
Συχνά σε αριθμητικούς υπολογισμούς υπάρχει η ανάγκη υπολογισμού ενός αθροίσματος, γινομένου,
κλπ με άπειρους όρους. Δεδομένου ότι στην πράξη η πρόσθεση άπειρων αριθμών δεν είναι εφικτή,
πρέπει να γράψουμε ένα πρόγραμμα στο οποίο θα έχουμε ορίσει μία παράμετρο η οποία να «ελέγχει»
το πόσο κοντά βρισκόμαστε σε αυτό που σε κάθε εφαρμογή μπορούμε να θεωρήσουμε ως «άπειρο».
Ας μελετήσουμε λοιπόν το ακόλουθο πρόβλημα που υπολογίζει το άθροισμα των όρων μίας σειράς της
μορφής:
1 1 1 1 1

Επειδή το άθροισμα αυτό αποτελείται από άπειρους όρους, πρέπει να βάλουμε μία συνθήκη σύμφωνα
με την οποία, ο υπολογιστής θα σταματήσει να αθροίζει. Η συνθήκη αυτή θα μπορούσε να είναι π.χ.
ότι ο Η/Υ θα σταματήσει τη διαδικασία του αθροίσματος όταν φτάσει στον όρο εκείνο που θα είναι
μικρότερος από κάποιο συγκεκριμένη τιμή, έστω ε = 5×10-4. Για να το πετύχουμε αυτό,
χρησιμοποιούμε είτε την εντολή while είτε την do...while Η εντολή αυτή επαναλαμβάνει μία
διαδικασία τόσες φορές όσες χρειάζεται μέχρι κάποια, ορισμένη, παράμετρος να πάρει μία
συγκεκριμένη τιμή.



7.2 Εφαρμογή
Παρακάτω δίνεται το πρόγραμμα, το οποίο υπολογίζει, μέσω της εντολής while, το παραπάνω
άθροισμα.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

include <stdio.h>
int main()
{
double athroisma, prostheteos, epsilon;
int i;
athroisma = 0.0;
prostheteos = 1.0;
epsilon = 5e-04;
i = 1;
while (prostheteos >= epsilon)
{
prostheteos = 1/i;
athroisma = athroisma + prostheteos;
i=i+1;
}
printf(“\n To plhthos ton orwn einai = %d\n”, i-1);
printf(“\n To athroisma einai = %.5f\n”, athroisma);
return 0;
}


7.3 Χρήση των εντολών do…while
Να αλλάξετε το παραπάνω πρόγραμμα, ώστε να δημιουργήσετε ένα καινούριο, με τέτοιο τρόπο ώστε
να μην χρησιμοποιεί την εντολή while για τη λειτουργία του αλλά τη σύνθετη εντολή do…while.
Θυμίζουμε ότι, όπως είναι γνωστό και από το μάθημα, για να λειτουργήσει η εντολή while πρέπει να
έχει κάτι να συγκρίνει πριν την πρώτη επανάληψη της διαδικασίας. Αντίθετα, η σύνθετη εντολή
do…while, πρώτα κάνει την πρώτη επανάληψη και μετά ζητάει να συγκρίνει για να αποφασίσει αν θα
συνεχίσει ή όχι τις επαναλήψεις.



7.4 Άσκηση: Πολλαπλασιασμός με μεγάλο αριθμό όρων
Να γράψετε ένα πρόγραμμα το οποίο δεν θα υπολογίζει το άθροισμα άπειρων όρων όπως παραπάνω,
αλλά το ακόλουθο γινόμενο πολλών όρων:



Το πρόγραμμα θα πρέπει να σταματάει τον υπολογισμό όταν κάποιος από τους όρους του γινομένου
γίνει ίσος η μικρότερος από μία τιμή ε, η οποία θα πρέπει να ζητηθεί από τον χρήστη στην αρχή του
προγράμματος (να χρησιμοποιηθεί η εντολή scanf). Όταν θα σταματήσει τον υπολογισμό, θα πρέπει να
εκτυπώνει στην οθόνη το συνολικό γινόμενο, την τιμή του k στην οποία έφτασε και την τιμή του
τελευταίου παράγοντα του γινομένου, πριν να σταματήσει η διαδικασία.



7.5 Άσκηση: Επιλογή με την εντολή switch
Με βάση τα προγράμματα που δημιουργήσατε στις παραγράφους 6.3 και 6.5 να κατασκευάσετε ένα
νέο το οποίο θα ζητάει από τον χρήστη να εισάγει την επιλογή του αν θέλει να κάνει πρόσθεση ή
πολλαπλασιασμό. Η επιλογή του χρήστη θα εισάγεται μέσω της εντολής scanf ενώ ο τρόπος με τον
οποίο θα επιλέγεται ο πολλαπλασιασμός ή η πρόσθεση θα γίνεται μέσω των εντολών
switch…case…default.



8. Άσκηση (Παραγοντικό)



8.1 Συναρτήσεις
Μερικά τμήματα ενός προγράμματος είναι σχεδόν αυτόνομα και μπορούν να γραφούν ξεχωριστά από
το κύριο πρόγραμμα. Η C παρέχει αυτή τη δυνατότητα με τις functions. Μια συνάρτηση έχει δομή
όμοια με αυτήν ενός προγράμματος, καλείται δε από το κυρίως πρόγραμμα ή από άλλες συναρτήσεις.
Οι συναρτήσεις επιστρέφουν μια τιμή στο πρόγραμμα μέσω του ονόματος τους, ή αλλάζουν την τιμή
κάποιας μεταβλητής του κυρίως ή άλλου προγράμματος..



8.2 Καθολικές και τοπικές μεταβλητές.
Κατά την εκτέλεση ενός προγράμματος δεσμεύεται μνήμη-χώρος για τις μεταβλητές που
χρησιμοποιούνται. Οι μεταβλητές αυτές έχουν καθολική ισχύ και ονομάζονται καθολικές (global)
μεταβλητές. Όταν κληθεί μια συνάρτηση δεσμεύεται μνήμη για τις εσωτερικές (local) μεταβλητές τις.
Αυτές έχουν ισχύ εσωτερικά στη διαδικασία και η μνήμη που καταλαμβάνουν αποδεσμεύεται μετά το
τέλος της διαδικασίας. Χρησιμοποιώντας τοπικές μεταβλητές οι διαδικασίες αποκτούν αυτονομία και
μεγαλύτερη εμβέλεια χρήσης.



8.3 Παράμετροι τιμής.
H C δίνει τη δυνατότητα να περαστούν τιμές σε μεταβλητές της διαδικασίας όταν αυτή καλείται. Έτσι
μια διαδικασία επικοινωνεί με τον έξω χώρο και μπορεί να παραμετροποιηθεί. Με αυτό τον τρόπο
καθίσταται αυτόνομη και μπορεί να χρησιμοποιηθεί ακόμα και από άλλα προγράμματα. Στο
πρόγραμμα μας δηλώνουμε τη συνάρτηση factorial με τον τρόπο που φαίνεται πιο κάτω:

int factorial(int n_int)

Η παράμετρος n_int είναι μια ακέραια παράμετρος η οποία κληροδοτείται από το κύριο πρόγραμμα
κατά την κλήση της συνάρτησης. Έτσι στο πρόγραμμα καλούμε την factorial με τον εξής τρόπο :

k = factorial(n);

Η τιμή της μεταβλητής n δίνεται στην παράμετρο n_int της συνάρτησης. Σε αυτήν την περίπτωση η
συνάρτηση επιστρέφει τιμές μέσω του ονόματος της.



8.4 Η χρήση συνάρτησης με δείκτες.
Ο δεύτερος τρόπος χρήσης συνάρτησης παραπάνω (void calculate_factorial(int n, int *m)) είναι μία
κλασική χρήση δεικτών στη C. Αν δεν είχαμε βάλει τον αστερίσκο στο όρισμα της συνάρτησης, η τιμή
της m δε θα άλλαζε όταν την καλούσαμε από την main. Ουσιαστικά με αυτόν τον τρόπο, καλόντας τη
μεταβλητή με αναφορά, της δίνουμε τη δυνατότητα να αλλάξει τιμή στο κυρίως πρόγραμμα.



8.5 Ν! (Ν παραγοντικό)
Το Ν παραγοντικό (Ν!), ως γνωστό, δίνεται από τη σχέση Ν!=1*2*3*...*(Ν-1)*Ν αν Ν>0 ή Ν!=1 αν
Ν=0. Στο πρόγραμμα μας υπολογίζουμε με δύο τρόπους το Ν!. Στη μία η συνάρτηση επιστρέφει την
τιμή Ν! μέσω του ονόματός της. Στην άλλη με κλήση μιας μεταβλητής του κυρίου προγράμματος με
αναφορά (με δείκτη).



8.6 Εφαρμογή
Παρακάτω δίνεται το πρόγραμμα, το οποίο διαθέτει δύο συναρτήσεις για υπολογισμό του Ν!. Η πρώτη
χρησιμοποιεί τη δομή for ενώ η δεύτερη είναι μια αναδρομική συνάρτηση.


ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΠΡΟΓΡΑΜΜΑ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ ΚΑΙ
ΠΑΡΑΛΕΙΨΕΙΣ ΠΟΥ ΠΡΕΠΕΙ ΝΑ ΕΝΤΟΠΙΣΕΤΕ ΩΣΤΕ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

//Dilosi synartiseon:
//Edo i exodos einai typou int
int factorial(int n_int);
//Edo den yparhei exodos alla mia metabliti kaleitai me anafora (i
//n_factorial
void calculate_factorial(int m_int, int *n_factorial);

int main(void)
{
int n, m, k ;

printf(“\nGive me non-negative value of N = ”);
scanf(“%d”, &n);

//O enas tropos:
k = factorial(n);
printf(“\n%d!=%d”,n,k);

//O allos tropos:
calculate_factorial(n,&m);
printf(“\n%d!=%d”,n,m);

return 0;
}

int factorial(int n_int)
{
int i, fact; //i, fact einai topikes metablites

if (n_int = = 0)
return 1;
else
{
fact = 1;
for (i=1; i<=n_int; ++i)
fact *= i;
return fact;
}
}

void calculate_factorial(int m_int, int *n_factorial)
{
int i, fact;

if (m_int = = 0)
*n_factorial = 1;
else
{
fact = 1;
for (i=1; i<=m_int; ++i)
fact *= i;
*n_factorial = fact;
}
}



9. Άσκηση (Ανταλλαγή Θέσεως Τιμών Δύο Μεταβλητών)

Το παρακάτω πρόγραμμα είναι ένα βασικό πρόγραμμα στη λογική του προγραμματισμού: Διαβάζει
δύο πραγματικούς αριθμούς και να τους τοποθετεί στις μεταβλητές x, y και μετά να τους ανταλλάσει
θέσεις.

#include <stdio.h>
int main(void)
{
//Define variables
double x, y, prosorini;
/*function body*/
printf(“\n Give values of x and y:”);
scanf(“%lf %lf ”, &x, &y);
printf(“\nx = %f y = %f \n”, x, y);
prosorini = x;
x = y;
y = prosorini;
printf(“\n x = %f \t y = %f”, x, y);
return 0;
}

 10. Άσκηση (Ταξινόμηση φυσσαλίδας)
 10.1 Ταξινόμηση.
Ταξινόμηση γενικά είναι η διαδικασία αναδιευθέτησης ενός δεδομένου συνόλου αντικειμένων σε
μια συγκεκριμένη σειρά. Ο σκοπός της ταξινόμησης είναι να διευκολύνει τη μετέπειτα αναζήτηση
των αντικειμένων μέσα στο ταξινομημένο σύνολο. Η ταξινόμηση είναι απαραίτητη σε τηλεφωνικούς
καταλόγους, σε πίνακες περιεχομένων, σε λεξικά, σε βιβλιοθήκες και γενικά όπου υπάρχουν
αποθηκευμένα στοιχεία που πρέπει να ανακαλουνται. Πρόκειται δηλαδή για μια θεμελιώδη ενέργεια
στην επεξεργασία δεδομένων.



10.2 Ταξινόμηση φυσαλλίδας.
Η ταξινόμηση φυσαλλίδας (BubbleSort) χρησιμοποιεί διαδοχικά περάσματα από τον πίνακα και
κάθε φορά μεταφέρεται το μικρότερο στοιχείο του υπόλοιπου συνόλου στο αριστερό άκρο του πίνακα.
Αν φανταστούμε τον πίνακα σε κατακόρυφη μορφή και τα στοιχεία σα φυσαλλίδες σε δοχείο με νερό
με βάρη ανάλογα με τα κλειδιά τους τότε κάθε πέρασμα του πίνακα έχει σαν αποτέλεσμα την
αναρρίχηση μιας φυσαλλίδας (bubble) στο σωστό επίπεδο βάρους. Παράδειγμα φαίνεται στον πίνακα
(1) που ακολουθεί.


Παρατηρούμε ότι στα τρία τελευταία περάσματα ο πίνακας ήταν ήδη ταξινομημένος. Άλλοι αλγόριθμοι
λαμβάνουν υπ’ όψην τους αν σε ένα πέρασμα έγινε ή όχι κάποια ανταλλάγή και έτσι τελειώνουν. Εμείς
θα δούμε τον απλό αλγόριθμο ο οποίος θα ταξινομεί 10 στοιχεία.


10.3 Λογικές δομές.
Στα πλαίσια του δομημένου προγραμματισμού χρησιμοποιούνται λογικά διαγράμματα που παριστούν
βασικές λογικές δομές. Στο πρόγραμμα χρησιμοποιούνται η σειριακή δομή (που έχουμε γνωρίσει στη
2η άσκηση) και η δομή επανάληψης: for (i=l; i<=n;++i) (σχήμα 1).


10.4 Εφαρμογή
Παρακάτω δίνεται το πρόγραμμα, το οποίο ταξινομεί n αριθμούς που εσείς εισάγετε.

ΠΡΟΣΟΧΗ! ΣΤΟ ΠΑΡΑΚΑΤΩ ΥΠΑΡΧΟΥΝ ΣΥΝΤΑΚΤΙΚΑ ΛΑΘΗ Η/ΚΑΙ ΠΑΡΑΛΕΙΨΕΙΣ.
ΠΡΕΠΕΙ ΝΑ ΤΑ ΒΡΕΙΤΕ ΩΣΤΕ ΤΟ ΤΕΛΙΚΟ ΠΡΟΓΡΑΜΜΑ ΝΑ ΤΡΕΧΕΙ ΚΑΝΟΝΙΚΑ

#include <stdio.h>
#include <math.h>

int main(void)
{
int i, j, list_size;
double temp;

printf(“\n Give list size of the list n= ”);
scanf(“%d”,&list_size);

// Here we define the list a of size list_size
double a[list_size];

for (i=0; i<list_size; ++i)
{
printf(“\n Give me element a[%d]= ”, i+1);
scanf(“%lf”,&a[i]);
}

// First for-loop
for (i=0; i<list_size-1; ++i)
{
// Second for-loop
for (j=i+1; j<list_size; ++j)
{
// Compare
if (a[i]>a[j])
{
temp=a[j];
a[j] = a[i];
a[i]=temp;
}
}
}

printf(“\nOrdered list is given below\n”);
for (i=0; i<list_size; ++i)
printf(“a[%d] = %7.3f\n”, i+1, a[i]);
}
return 0;
}


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


11. Άσκηση (Υπολογισμός Απόλυτης Τιμής)


11.1 Εφαρμογή
Μία απλή εφαρμογή της εντολής if είναι να υπολογίστε την απόλυτη τιμή ενός πραγματικού αριθμού
που δίνεται από το πληκτρολόγιο (χωρίς να χρησιμοποιείσετε την εντολή fabs(a)). Η διαδικασία είναι η
εξής: Πρώτα εισάγεται η τιμή του αριθμού από το πληκτρολόγιο. Κατόπιν ελέγχεται το πρόσημο του
αριθμού, δηλαδή αν το a<0.0. Αν το a είναι αρνητικό του αλλάζουμε πρόσημο με την εντολή “a= -a”.
Αν το a είναι θετικό δεν κάνουμε τίποτε. Κατόπιν τυπώνουμε τον αριθμό a, ο οποίος τώρα έχει σίγουρα
θετικό πρόσημο. Τη διαδικασία τη βλέπουμε στο παρακάτω διάγραμμα ροής:

#include <stdio.h>

int main(void)
{
// Define variables

double a;

printf(“\n Give value a”);
scanf(“%lf”, &a);        //{εισαγωγή στοιχείων}

// Εδώ πρέπει να συμπληρώσετε το πρόγραμμα, στο οποίο τσεκάρετε αν το
// a είναι αρνητικός. Άν είναι, τότε του αλλάζετε πρόσημο, δηλ. a=-a.
// Κατόπιν τυπώνετε την απόλυτη τιμή του a.

return 0;
}

12. Άσκηση (Υπολογισμός Τόκων και Κεφαλαίου)
Στο παρακάτω πρόγραμμα μας δίνεται το αρχικό κεφάλαιο μίας κατάθεσης, καθώς και το επιτόκιο, και
ο αριθμός ετών της κατάθεσης. Ζητούμενο είναι η αξία του κεφαλαίου σαν συνάρτηση του χρόνου.

#include <stdio.h>
int main(void)
{
double epitokio, kefalaio, tokos, axia_kef;
int etos, plithos_eton;

printf("Doste times gia kefalaio, plithos eton, epitokio \n");
scanf("%lf %d %lf",
&kefalaio, &plithos_eton, &epitokio);
axia_kef = kefalaio;
printf("Etos      Tokos    Axia \n");
for (etos = 1;  etos <= plithos_eton;   ++etos)
{
tokos = axia_kef * epitokio;
axia_kef += tokos;
printf("%4d %15f %15f\n", etos, tokos, axia_kef);
}

return 0;
}

13. Άσκηση (Υπολογισμός Σειράς Fibonacci)
Το παρακάτω πρόγραμμα είναι ένα κλασικό πρόγραμμα υπολογισμού σειράς. Συγκεκριμένα ζητείται ο
υπολογισμός των όρων της σειράς Fibonacci, η οποία δίνεται με τη σχέση
Sn+=1
Sn + Sn1 με αρχικές τιμέ= 1,= 1 . Η σειρά Fibonacci έμφανίζεται
συχνά   στα   μαθηματικά   και   στη  φύση.  Δείτε  για  παράδειγμα  την  ιστοσελίδα

/*Ypologiste tis akolouthias Fibonacci A(n+1)=A(n)+A(n-1)*/
#include<stdio.h>
int main(void)
{
/*Orismos metavliton*/
int i, n, an, an1, an2;

printf("Doste to n>=2: n = ");
scanf("%d", &n);
/* Ypologismos tou athroismatos */
an = 1; /*arxiki timi */
an1 = 1; /*arxiki timi */
printf("\n a[0] =%d\n", an);
printf("\n a[1] =%d\n", an1);
for (i = 2; i<=n; ++i)
{
an2 = an1+ an;
an = an1;
an1 = an2;
printf("\n a(%d] =%d\n", i, an2);
}

return 0;
}



S0    S
 
14. Άσκηση (Πολλαπλασιασμός Μιγαδικών Αριθμών)

Μία απλή άσκηση που χρησιμοποιεί συναρτήσεις στην C είναι ο υπολογισμός του γινομένου
μιγαδικών αριθμών.

/*Ypologiste to ginomeno 2 migadiko arithmon*/
#include<stdio.h>
#include<math.h>

double real_product(double real1, double imag1, double real2, double imag2);
double imag_product(double real1, double imag1, double real2, double imag2);

int main(void)
{
/*Orismos metavliton*/
double x1, y1, x2, y2, x3, y3;

printf("Doste to pragmatiko meros tou protou migadikou arithmou: x1 = ");
scanf("%lf", &x1);
printf("Doste to fantastiko meros tou protou migadikou arithmou: y1 = ");
scanf("%lf", &y1);
                                        printf("Doste to pragmatiko meros tou 2ou migadikou arithmou: x2 = ");
scanf("%lf", &x2);
printf("Doste to fantastiko meros tou 2ou migadikou arithmou: y2 = ");
scanf("%lf", &y2);

x3 = real_product(x1,y1,x2,y2);
y3 = imag_product(x1,y1,x2,y2);

printf("\n z3 = %f + i%f\n", x3, y3);

return 0;
}

double real_product(double real1, double imag1, double real2, double imag2)
{
double temp = real1*real2-imag1*imag2;
return temp;

}

double imag_product(double real1, double imag1, double real2, double imag2)
{

return real1*imag2+imag1*real2;
}



15. Άσκηση (Υπολογισμός Αθροίσματος 1+2+...+n)

Μία πολύ απλή άσκηση είναι ο υπολογισμός του αθροίσματος 1+...+n.

/*Ypologiste to athroisma S_n = 1 + 2 + 3.... +n*/
#include <stdio.h>
#include <math.h>

int main(void)
{
/*Orismos metavliton*/
int n, i;
int S;

printf("\n Dose tin timi tou n = ");
scanf("%d", &n);

S = 0;
for (i=1; i<=n; ++i)
S=S+i;

printf("\n To athroisma S_n = %d \n", S);



return 0;
}

Μια παρόμοια άσκηση ακολουθεί

/*Ypologiste to athroisma 1+1/2^2+1/3^2…+1/n^2*/
#include<stdio.h>
#include<math.h>

int main(void)
{
/*Orismos metavliton*/
int i, n;
double athroisma =0.0;

printf("Doste to n>=2: n = ");
scanf("%d", &n);

for (i=1;i<=n;i++)
{
athroisma += 1.0/(i*i);
}
printf("\n ATHROISMA = %f\n", athroisma);

printf("\n orio = %f\n", pow(3.14159,2)/6.0);


return 0;
}
                       16. Άσκηση (Υπολογισμός Εσωτερικού Γινομένου)


Μία άλλη πολύ απλή άσκηση είναι ο υπολογισμός του εσωτερικού γινομένου 2 Ν-διάστατων
ανυσμάτων

/*Ypologiste to synimitono ths gonias 2 n-diastaton anoismaton */
#include <stdio.h>
#include <math.h>

int main(void){


double sum_aa, sum_ab, sum_bb, cos_theta;
                                  printf("\n Give me the size of the vectors: n = ");
scanf("%d",&n);
double a[n], b[n];
                           for (k=0; k<n; k++){
printf("a[%d] = ", k);
scanf("%lf",&a[k]);
}

for (k=0; k<n; k++){
printf("b[%d] = ", k);
scanf("%lf",&b[k]);
}

printf("k= %d",k);
sum_ab = 0.0;
sum_bb = 0.0;
sum_aa = 0.0;

for (k=0; k<n; k++){
sum_ab = sum_ab+a[k]*b[k];
sum_aa = sum_aa+a[k]*a[k];
sum_bb = sum_bb+b[k]*b[k];
}

cos_theta = sum_ab/sqrt(sum_aa*sum_bb);

printf("\nesot ginomeno a.b = %lf", sum_ab);
printf("\n metro a = %lf", sum_aa);
printf("\n metro b = %lf", sum_bb);

printf("\n cosine of angle btw a b = %lf\n", cos_theta);

return 0;

}

                          17. Άσκηση (Υπολογισμός Εμβαδού Τριγώνου)
                              #include <stdio.h>
#include <math.h>

int main(void)
{
// Edo dilonoume metavlites

double x, h, E;

printf("\n Typose to mikos tis pleyras tou trigonou\n");
scanf("%lf", &x);

h = sqrt(3)/2.0*x;
E = 0.5*x*h;

printf("\n To ypsos tou trigonou einai: %lf", h);

printf("\n To embadon tou trigonou einai: %lf\n", E);

return 0;
}

 18. Άσκηση (Μετατροπή Βαθμών Fahrenheit σε Celsius)
/* Programma pou metatrepei ti thermokrasia
apo Fahrenheit se Kelsiou */
#include <stdio.h>
#include <math.h>

int main(void)
{
double F, C;

printf("\nDose ti thermokrasia se vathmous Fahrenheit\n");
scanf("%4lf", &F);

printf("F=%10.4lf", F);


C = 5.0/9.0*(F-32.0);

printf("\nI thermokrasia se vathmous Kelsiou einai %lf C\n", C);


return 0;
}


19. Άσκηση (Συνάρτηση Εισαγωγής Δεδομένων Πίνακα)

Μία εφαρμογή της δημιουργίας εξωτερικής συνάρτησης στο πρόγραμμα είναι η εξής

#include <stdio.h>

const int n=2;
void read_matrix(double *matrix[n][n]);

int main (void){

int i, j;

double a[n][n], b[n][n];

read_matrix(&a[3][3]);
//  read_matrix(&b);

for (i=0; i<n; i++){
for (j=0; j<n; j++){
printf("a[%d][%d] = %lf\n",i,j, a[i][j]);
}
}


system("pause");
return 0;
}
void read_matrix (double *matrix[n][n]){
int i,j;
for (i=0; i<n; i++){
for (j=0; j<n; j++){
printf("Give me x[%d][%d] = ",i,j);
scanf("%lf",&matrix[i][j]);
}
}
}