Embed
Email

???? 101***

Document Sample
???? 101***
Shared by: HC11112910142
Categories
Tags
Stats
views:
2
posted:
11/29/2011
language:
English
pages:
68
ΠΡΟΓΡΑΜΜΑΣΙ΢ΣΙΚΕ΢

ΣΕΧΝΙΚΕ΢

ΚΩ΢ΣΑ΢ ΚΟΝΣΟΓΙΑΝΝΗ΢

ΓΙΑΝΝΗ΢ ΜΑΪ΢ΣΡΟ΢

ΑΝΓΡΔΑ΢ ΢ΣΑΦΤΛΟΠΑΣΗ΢





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

ΚΑΙ ΜΗΥΑΝΙΚΩΝ ΤΠΟΛΟΓΙ΢ΣΩΝ

Δ.Μ.Π.









1

ΚΑΛΧ΢ ΗΡΘΑΣΔ !

• Καιώο ήξζαηε ζην Μάζεκα «Πξνγξακκαηηζηηθέο

Σερληθέο».



• Απηό ην Μάζεκα νπζηαζηηθά εηζάγεη έλλνηεο ζρεηηθέο κε

ηελ ζρεδίαζε θαη ηελ πινπνίεζε ινγηζκηθνύ κε ηε ρξήζε

ηεο γιώζζαο πξνγξακκαηηζκνύ C θαη βαζηθώλ δνκώλ

δεδνκέλσλ.



• ΢αο επρόκαζηε νιόςπρα θαιό θαη αθαδεκατθά

απνδνηηθό εμάκελν.







2

ΑΝΣΙΚΔΙΜΔΝΟ ΣΟΤ ΜΑΘΗΜΑΣΟ΢ (1)



• Καιύηεξε γλώζε θαη ρξήζε ηεο γιώζζαο C



• Δηζαγσγή ζην Γνκεκέλν Πξνγξακκαηηζκό



– Έλλνηεο πνπ ρξεζηκνπνηνύληαη γηα ηε ζρεδίαζε

αιγόξηζκσλ θαη πξνγξακκάησλ

– Βαζηθέο δομές (θαηαζθεπέο) γηα ηελ πινπνίεζε

πξνγξακκάησλ

– Απόθηεζε εκπεηξίαο ζην πξνγξακκαηηζκό απιώλ

εθαξκνγώλ

3

ΑΝΣΙΚΔΙΜΔΝΟ ΣΟΤ ΜΑΘΗΜΑΣΟ΢ (2)

Δβδνκάδα 1 Υαξαθηεξηζηηθά ηεο C, Σειεζηέο, Έιεγρνο Ρνήο



Δβδνκάδα 2 Γνκή Πξνγξάκκαηνο, ΑΣΓ, Μνλνδηάζηαηνη Πίλαθεο Παξαδείγκαηα



Δβδνκάδα 3 Δηζαγσγή ζηε Πνιππινθόηεηα Πξνγξακκάησλ



Δβδνκάδα 4 Πνιπδηάζηαηνη Πίλαθεο, Γνκέο, Δλώζεηο



Δβδνκάδα 5 Γείθηεο, Πίλαθεο θαη Γείθηεο, Γείθηεο ζε ΢πλαξηήζεηο



Δβδνκάδα 6 ΢ηνίβεο, ΢πλδεδεκέλεο Λίζηεο, Οπξέο



Δβδνκάδα 7 Γηπιά ΢πλδεδεκέλεο Λίζηεο, Κπθιηθέο Λίζηεο, Σαμηλνκεκέλεο Λίζηεο

Δβδνκάδα 8 Γέλδξα, Γπαδηθά Γέλδξα, Γηάζρηζε Γπαδηθώλ Γέλδξσλ



Δβδνκάδα 9 Γπαδηθά Γέλδξα Αλαδήηεζεο, Γέλδξα AVL



Δβδνκάδα 10 Πίλαθεο θαηαθεξκαηηζκνύ



Δβδνκάδα 11 Αιγόξηζκνη Σαμηλόκεζεο



Δβδνκάδα 12 Γξάθνη



Δβδνκάδα 13 Δπαλάιεςε

4

΢ΣΟΙΥΔΙΑ ΓΙΑ ΣΟ ΜΑΘΗΜΑ (1)

• Σο πρόγραμμα:



– Γηαιέμεηο (΢ηo Α4 – Γεληθέο Έδξεο)



• Σρίηη 15:00 – 18:00 (CVETKOVIC, I. - ΜΑ΢ΟΤΡΗ΢, Η)

• Παραζκεσή 12:45 – 16:00 (ΜΑ΢ΟΤΡΟ΢, Γ.. - ΦΤΛΛΑ, Ι. )







– Δξγαζηήξηα (΢ην PC Lab – Αίζνπζεο 1, 2, θαη 3)



• Σρίηη 12:45 – 14:30 (CVETKOVIC, I. - ΚΔΝΣΡΧΣΗ΢, Κ.)

• Πέμπηη 10:45 – 12:30 (ΚΙΝΑΛΗ΢, ΢ - ΠΑΠΑΠΟ΢ΣΟΛΟΤ, Α.)

• Παραζκεσή 08:45 – 10:30 (ΠΑΠΑ΢ΣΑΘΗ΢, Ι.Α. - ΦΤΛΛΑ, Ι.







5

΢ΣΟΙΥΔΙΑ ΓΙΑ ΣΟ ΜΑΘΗΜΑ (2)

• Βοηθοί

– Θα αλαθνηλσζνύλ









6

΢ΣΟΙΥΔΙΑ ΓΙΑ ΣΟ ΜΑΘΗΜΑ (3)

• Βιβλία

– [1] B. Kernighan and D. Ritchie, "Η Γιώζζα Πξνγξακκαηηζκνύ C", ζε

Διιεληθή Μεηάθξαζε, Δθδόζεηο Κιεηδάξηζκνο, 1990



– [2] Ν. Μηζπξιήο, "Γνκέο Γεδνκέλσλ", Ιδησηηθή Έθδνζε



– ΢ρεηηθά κε ηε δηαλνκή ησλ ζπγγξακκάησλ ζα αθνινπζήζεη αλαθνίλσζε από

ηε δηνίθεζε ηεο ΢ρνιήο θαη ηνπο δηδάζθνληεο.



• ΢ημειώζεις και άλλο σλικό γιά ηο μάθημα

– ΢εκεηώζεηο ζα παξνπζηάδνληαη ζηαδηαθά ζηελ Ιζηνζειίδα ηνπ

καζήκαηνο http://courses.softlab.ntua.gr/progtech

– Αζθήζεηο, Φξνληηζηεξηαθό πιηθό, θαη Αλαθνηλώζεηο ζα

παξνπζηάδνληαη επίζεο ζηελ παξαπάλσ ηζηνζειίδα



• Λογαριαζμοί για ηο σπολογιζηικό ζύζηημα (γηα όζνπο δελ

έρνπλ)

– Από ην Τπνινγηζηηθό Κέληξν κε ηελ ηαπηόηεηά ζαο θαη ηνλ αξηζκό

Μεηξώνπ ηνπ ΗΜΜΤ. Λεπηνκέξεηεο ζα αλαθνηλσζνύλ θαη ζηελ

ηζηνζειίδα ηνπ καζήκαηνο

7

΢ΣΟΙΥΔΙΑ ΓΙΑ ΣΟ ΜΑΘΗΜΑ (4)

• Η βαζκνινγία ζα ππνινγίδεηαη σο εμήο:



– Σειηθό δηαγώληζκα (80%)



– Δμέηαζε ζηηο εξγαζηεξηαθέο αζθήζεηο (30%)

• ΢εηξά Αζθήζεσλ Α & Β: Πξνπαξαζθεπαζηηθέο ρσξίο εμέηαζε



• ΢εηξά Αζθήζεσλ Γ (15%)



• ΢εηξά Αζθήζεσλ Γ (15%)



– Όζνη δελ εμεηαζζνύλ ζε αζθήζεηο ζα έρνπλ ηειηθό δηαγώληζκα 80%.



– Όζνη θνηηεηέο επηιέμνπλ λα εμεηαζηνύλ ζηηο αζθήζεηο έρνπλ ζπληειεζηή

αζθήζεσλ 30% θαη ζπληειεζηή γηα ηειηθό δηαγώληζκα 80%.





8

ΔΠΙΚΟΙΝΧΝΙΑ



Κώζηαο Κνληνγηάλλεο

kkontog@softlab.ntua.gr





Γηάλλεο Μαΐζηξνο

maistros@cs.ntua.gr





Αλδξέαο-Γεώξγηνο ΢ηαθπινπάηεο

andreas@cs.ntua.gr







Αο Αξρίζνπκε ινηπόλ......



9

Μάζεκα 10



Υαξαθηεξηζηηθά ηεο C, Σειεζηέο,

Έιεγρνο Ρνήο







10

Η ηζηνξία ηεο C

1969-1973 AT&T Bell Labs, Dennis Ritchie

1978 ―The C Programming Language‖

K&R: Kernighan & Ritchie

1983 ΢ύζηαζε ANSI Standardization

Committee X3J11

1989-1990 Απνδνρή ANSI/ISO Standard

 ANSI C

1990-1999 Αλαζεώξεζε ηνπ standard ππό

εμέιημε — C9X

 C99



11

Υαξαθηεξηζηηθά ηεο C (i)

• Γιώζζα πξνζηαθηηθνύ πξνγξακκαηηζκνύ

• Γιώζζα κεηξίνπ επηπέδνπ

• Οηθνλνκία ζηελ έθθξαζε

(ιηηή θαη πεξηεθηηθή)

• ΢ρεηηθά ραιαξό ζύζηεκα ηύπσλ

• Φηινζνθία: ν πξνγξακκαηηζηήο έρεη πιήξε

έιεγρν θαη επζύλεηαη γηα ηα ζθάικαηά ηνπ







12

Υαξαθηεξηζηηθά ηεο C (ii)

• Ιδηαίηεξα δεκνθηιήο ζηελ πξάμε

• Έρεη ρξεζηκνπνηεζεί γηα ηνλ

πξνγξακκαηηζκό επξέσο θάζκαηνο

ζπζηεκάησλ θαη εθαξκνγώλ

• Έρεη ρξεζηκνπνηεζεί σο βάζε γηα

πιεζώξα άιισλ γισζζώλ: C++, Java







13

΢ρεκαηηθή Παξνπζίαζε ηεο

Γηαδηθαζίαο Πξνγξακκαηηζκνύ

Γλώζε ηεο πεξηνρήο Υξήζε ηερληθώλ επίιπζεο

Σνπ Πξνβιήκαηνο/ πξνβιεκάησλ π.ρ. Top-down,

Domain Knowledge Bottom-up









Πξνγξακ- Αιγόξηζκνο

Πξνγξακ- Πεγαίν

καηηζηήο/ Αλάιπζε Δπίιπζεο

καηηζκόο Πξόγξακκα

Αλαιπηήο Πξνβιήκαηνο









Οξηζκόο ηνπ

Αλγόριθμος/ Πεγαίν πξόγξακκα (Source

Πξνβιήκαηνο/

Algorithm Code) ζε θάπνηα Γιώζζα

Problem Definition 14

Πξνγξακκαηηζκνύ π.ρ. C

ΚΤΚΛΟ΢ ΜΔΣΑΦΡΑ΢ΔΧΝ

Μεηάθξαζε/

Compilation

Πξόγξακκα ζε

Πεγαίν Πξόγξακκα

΢πκβνιηθή Γιώζζα



Βειηηζηνπνίεζε/

Optimization

Δλνπνίεζε/

Δλνπνηεκέλε Linking Βειηηζηνπνηεκέλε

΢πκβνιηθή Γιώζζα ΢πκβνιηθή Γιώζζα



΢πκβνινκεηάθξαζε/

Assembler



Γιώζζα Μεραλήο Η/Τ

Φόξησζε/

Loading

15

ΣΙ ΔΙΝΑΙ ΟΜΧ΢ ΔΝΑ΢ ΑΛΓΟΡΙΘΜΟ΢;

• Αιγόξηζκνο (Algorithm) είλαη κία αθνινπζία νδεγηώλ (εληνιώλ) νη

νπνίεο επηιύνπλ έλα ζπγθεθξηκέλν πξόβιεκα



• Μπνξνύκε λα έρνπκε πνιινύο δηαθνξεηηθνύο αιγόξηζκνπο γηα ηελ

επίιπζε ελόο πξνβιήκαηνο



• Η επηινγή ηνπ πην θαηάιιεινπ αιγόξηζκνπ κπνξεί λα γίλεη κε βάζε

ηελ πνιππινθόηεηα ηνπ (time complexity), ηελ ρξήζε ηεο κλήκεο

πνπ απαηηεί (space complexity), ηήλ δπλαηόηεηα παξακεηξνπνίεζήο

ηνπ (parameterization), ηελ αμηνπηζηία ηνπ (reliability), ηελ

δπλαηόηεηα ζπλέρηζεο ηεο ιεηηνπξγίαο ηνπ ζε αθξαίεο ζπλζήθεο

(robustness) θιπ.



• Έλαο αιγόξηζκνο έρεη έλα ή πεξηζζόηεξα ζεκεία εηζόδνπ (πξώηε

εληνιή λα εθηειεζζεί ζηελ αθνινπζία – ζπλήζσο όκσο έρεη έλα

ζεκείν εηζόδνπ), θαη εκπεξηέρεη θάπνηεο ζπλζήθεο πνπ εγγπνύληαη

ηελ ιήμε ηεο ιεηηνπξγίαο ηνπ (ηειεπηαία εληνιή)

16

ΑΛΓΟΡΙΘΜΟΙ ΚΑΙ ΤΛΟΠΟΙΗ΢Η

ΠΡΟΓΡΑΜΜΑΣΟ΢

• Έρνπκε κηιήζεη γηα ηηο δύν βαζηθέο κεζόδνπο αλάιπζεο

ελόο πξνβιήκαηνο (top-down θαη bottom-up). Όκσο πώο

απηέο ζπζρεηίδνληαη κε ηελ ζρεδίαζε πξνγξακκάησλ;



• Η αλαιπηηθή κέζνδνο (top down) ζρεηίδεηαη κε ηελ κέζνδν

ζρεδίαζεο «δηαίξεη θαη βαζίιεπε» (divide and conquer),

όπνπ γηα λα ζρεδηάζνπκε έλα πξόγξακκα ην δηαηξνύκε ζε

απινύζηεξα πξνγξάκκαηα



• Η ζπλζεηηθή κέζνδνο (bottom up) ζρεηίδεηαη κε ηελ κέζνδν

ζρεδίαζεο «ζηαδηαθή εμέιημε» (successive refinement),

όπνπ αξρίδνπκε κε έλα απιό πξόγξακκα θαη ζηαδηαθά ηνπ

πξνζζέηνπκε πεξηζζόηεξεο ιεπηνκέξεηεο κέρξη πνπ όιεο

νη πεξηπηώζεηο πνπ πξέπεη λα ιπζνύλ έρνπλ ιπζεί

17

ΦΔΤΓΟ-ΚΧΓΙΚΑ΢

(pseudocode)

• Όηαλ είκαζηε έηνηκνη λα παξνπζηάζνπκε έλα αιγόξηζκν

(πξόγξακκα) κπνξνύκε λα ρξεζηκνπνηήζνπκε ςεπδνθώδηθα αληί

κηα γιώζζα πξνγξακκαηηζκνύ



• Απηό καο δίλεη ην πιενλέθηεκα όηη ε ζρεδίαζε ηνπ αιγόξηζκνπ δελ

επεξεάδεηαη από ηελ γιώζζα πνπ ζα ρξεζηκνπνηεζεί νπόηε

δηαρσξίδνληαη νη θάζεηο ζρεδίαζεο πξνγξάκκαηνο (design) από ηελ

πινπνίεζε ηνπ πξνγξάκκαηνο (implementation)



• Ο ςεπδνθώδηθαο είλαη έλα καζεκαηηθό κνληέιν ηνπ αιγόξηζκνπ,

εθθξαδόκελν ζε κηα κνξθή πνπ ζπκίδεη (αιιά δελ είλαη) γιώζζα

πξνγξακκαηηζκνύ



• Η ηδέα είλαη όηη από ηνλ ςεπδνθώδηθα είλαη απιή ε δηαδηθαζία ηεο

πινπνίεζεο (αλαινγία κεηαμύ Αξρηηέθηνλα πνπ ζρεδηάδεη θαη

Δξγνιάβνπ πνπ αθνινπζεί πηζηά ην ζρέδην γηα ηελ αλέγεξζε κηαο

νηθνδνκήο)

18

ΠΑΡΑΓΔΙΓΜΑ ΦΔΤΓΟΚΧΓΙΚΑ

• Μία πηζαλή κνξθή ςεπδνθώδηθα είλαη:



let name1, name2 (νξηζκόο κεηαβιεηώλ)



get name1, name2 (δηάβαζε ηηο κεηαβιεηέο name1, name2

από θάπνηα κνλάδα εηζόδνπ)



record name1, name2 (απνζήθεπζε ηηο ηξέρνπζεο ηηκέο ησλ κεηαβιεηώλ name1,

name2 ζε θάπνηα εμσηεξηθή κνλάδα – π.ρ. Γίζθν)



name1  έκθραζη (απνζήθεπζε ηελ ηηκή ηεο έκυρασης

ζηε κεηαβιεηή name1



if expression then

A

else

B

endif



19

ΠΡΟΓΡΑΜΜΑΣΙ΢ΜΟ΢

• Πξνγξακκαηηζκόο δελ είλαη κόλν ε πινπνίεζε ελόο αιγόξηζκνπ ζε

κία θαηάιιειε γηα ην πξόβιεκα γιώζζα (C, C++, Java, Pascal,

Fortran, Cobol θιπ.)

• Ο Πξνγξακκαηηζκόο εκπεξηέρεη:

1. Σελ αλάιπζε ησλ απαηηήζεσλ ηνπ πξνβιήκαηνο

α. Λεηηνπξγηθέο απαηηήζεηο (functional requirements analysis)

β. Με-ιεηηνπξγηθέο απαηηήζεηο (non-functional requirements

analysis)

..................Επιλσση Προβλήματος .............

2. Ση ζτεδίαζη ηού προγράμμαηος (ζεσξνύκε όηη ήδε έρνπκε

θάλεη ηελ επηινγή – ζρεδίαζε ηνπ θαηάιιεινπ αιγόξηζκνπ

όπσο είπακε ζηε δηαθάλεηα ζρεηηθά κε ηελ επίιπζε ελόο

πξνβιήκαηνο (design specifications)

3. Σην σλοποίηζη ηοσ προγράμμαηος ζε κία θαηάιιειε

γιώζζα γηα ην πξόβιεκα (implementation)

4. Σον έλεγτο ηοσ προγράμμαηος ώζηε λα πηζηνπνηεζεί ε νξζή

ιεηηνπξγία ηνπ ζε ζρέζε κε ηηο ιεηηνπξγηθέο θαη κε-

ιεηηνπξγηθέο απαηηήζεηο (testing)

5. Ση ζσνηήρηζη ηοσ γηα ηελ δηόξζσζε ιαζώλ, πξνζζήθε λέσλ

ιεηηνπξγηώλ, θαη ηελ πξνζαξκνγή ηνπ ζε άιια ζπζηήκαηα 20

(maintenance)

ΠΡΟΓΡΑΜΜΑΣΑ ΚΑΙ ΒΙΒΛΙΟΘΗΚΔ΢

• Μία ηππηθή εθαξκνγή απνηειείηαη:

– Από ην πεγαίν θώδηθα πνπ θαηά ην πιείζηνλ (ή θαζ’ νινθιεξία)

πινπνηεί έλα αιγόξηζκό ηεο ιύζεο ηνπ πξνβιήκαηνο



– Από θώδηθα πνπ ππνζηεξίδεη γεληθέο ιεηηνπξγίεο πνπ ίζσο

ρξεηάδεηαη ν πεγαίνο θώδηθαο (π.ρ. Δθηύπσζε, ηξηγσλνκεηξηθέο

ζπλαξηήζεηο θιπ.)



– Απηόο ν θώδηθαο ππνζηήξημεο νλνκάδεηαη βηβιηνζήθε (library)



– Οη βηβιηνζήθεο πνπ ρξεηάδνληαη θαη ν πεγαίνο θώδηθαο

κεηαθξάδνληαη (compiled) θαη ελνπνηνύληαη (linked) ζε έλα

ζπκβνιηθό πξόγξακκα, ην νπνίν κε ηε ζεηξά ηνπ

ζπκβνινκεηαθξάδεηαη ζε γιώζζα κεραλήο



– Τπάξρνπλ επηπρώο πνιιέο βηβιηνζήθεο γηα δηάθνξεο

ιεηηνπξγίεο, νπόηε δελ ρξεηάδεηαη λα πινπνηήζνπκε θώδηθα γη’

απηέο ηηο ιεηηνπξγίεο. Όπνηε ηηο ρξεηαδόκαζηε, απιά ηηο

εηζάγνπκε (include) ζην πεγαίν θώδηθά καο. 21

΢ΥΗΜΑΣΙΚΗ ΠΑΡΟΤ΢ΙΑ΢Η

LIB 1 LIB 2 LIB 3





Include









Μεηάθξαζε &

ΠΗΓΑΙΟ΢ ΚΧΓΙΚΑ΢ ΢πκβνινκεηαθξαζε ΓΛΧ΢΢Α ΜΗΥΑΝΗ΢

ΔΦΑΡΜΟΓΗ΢









22

Γνκή ηνπ πξνγξάκκαηνο

• Σν πξόγξακκα απνηειείηαη από:

– Σε ζπλάξηεζε main

– Πηζαλόλ από κηα ή πεξηζζόηεξεο άιιεο ζπλαξηήζεηο

– Μηα ή πεξηζζόηεξεο θαζνιηθέο (γεληθέο) κεηαβιεηέο



• Γηαθνξέο από ηελ Pascal:

– θύξην πξόγξακκα, δηαδηθαζίεο θαη ζπλαξηήζεηο δε

δηαθνξνπνηνύληαη

– ην θύξην πξόγξακκα νλνκάδεηαη main

– νη δηαδηθαζίεο έρνπλ απνηέιεζκα void

– όιεο νη ζπλαξηήζεηο ζην ίδην επίπεδν

– δελ επηηξέπνληαη θσιηαζκέλεο ζπλαξηήζεηο

– κόλν πέξαζκα παξακέηξσλ αηά ηηκή (call by value)

– Σν πέξαζκα θαηά αλαθνξά επηηπγράλεηαη κε ηε ρξήζε δεηθηώλ

23

ΠΑΡΑΓΔΙΓΜΑ

• Έλα απιό πξόγξακκα ηεο C:

Δληνιή εηζαγσγήο βηβιηνζήθεο γηα

Δληνιή ρξήζε ζπλαξηήζεσλ είζνδνπ/έμνδνπ

Πξν-επεμεξγαζίαο

Βηβιηνζήθε



#include

void main() Η αξρηθή ζπλάξηεζε main



{

Σύπνο

Δπηζηξνθήο

printf(―Hello World.\n‖);

ηεο main }

Η ζπλάξηεζε βηβιηνζήθεο printf πνπ

έρεη νξηζζεί ζηε βηβιηνζήθε stdio θαη

επηηξέπεη ηελ εθηύπσζε ζηελ νζόλε

24

(standard output)

AKOMH ENA ΠΑΡΑΓΔΙΓΜΑ

• Κη’άιιν έλα απιό πξόγξακκα ηεο C κε

επηζηξνθή ηηκήο από ηε ζπλάξηεζε main:



#include

int main()

{

printf(―Hello World.\n‖);

return(1);

}



25

ΜΔΣΑΦΡΑ΢Η ΚΑΙ ΔΝΟΠΟΙΗ΢Η

ΜΔ ΣΗ ΠΑΡΟΤ΢ΙΑ ΒΙΒΛΙΟΘΗΚΗ΢

• Γηα λα κεηαθξάζνπκε πεγαίν θώδηθα ηεο C ζε Γιώζζα Μεραλήο

ππό ηε παξνπζία βηβιηνζεθώλ ν compiler εθηειεί ηα παξαθάησ

βήκαηα.



1. Πξν-επεμεξγαζία: Σν πεγαίν πξόγξακκα πξώηα πεγαίλεη ζε κία

εθαξκνγή (πνπ έξρεηαη κε ηνλ compiler) θαη νλνκάδεηαη πξν-

επεμεξγαζηήο (pre-processor). Ο πξν-επεμεξγαζηήο είλαη θάηη ζαλ

επεμεξγαζηήο θεηκέλνπ (πξνζζέηεη,αθαηξεί, θαη κεηαβάιεη ην

«θείκελν» ηνπ πεγαίνπ πξνγξάκκαηνο (source code). Όιεο νη εληνιέο

πνπ είλαη λα εθηειεζζνύλ απν ηνλ πξν-επεμεξγαζηή μεθηλνύλ κε ην

ζύκβνιν #. ΢πγθεθξηκέλα ε #include παίξλεη ην πεγάην

θώδηθα ηεο stdio.h θαη ηνλ εηζάγεη ζηε ζέζε ηεο εληνιήο

#include . Οπζηαζηηθά κεηά ηελ πξνεπεμεξγαζία δέλ

ππάξρνπλ πιένλ εληνιέο πνπ μεθηλνύλ κε #.



2. Μεηάθξαζε θαη ΢πκβνινκεηάθξαζε. Tα βήκαηα απηά παξάγνπλ

αληηθεηκεληθό θώδηθα – object code (ζρεδόλ γιώζζα κεραλήο)



3. Δλλνπνίεζε (linking). Σν βήκα απηό ελλνπνηεί αληηθεηκεληθό θώδηθα

(πηζαλόλ απν δηαθνξεηηθά αξρεία πεγαίνπ θώδηθα) ζε έλα εθηειέζηκν 26

αξρείν (π.ρ. .exe) ζε θαζαξή γιώζζα κεραλήο.

ΓΔΝΙΚΗ ΜΟΡΦΗ ΑΠΛΟΤ

ΠΡΟΓΡΑΜΜΑΣΟ΢ C



directives #include

main() void main()

{ {

printf(―Hello World.\n‖);

statements }

}









27

DIRECTIVES

• Δίλαη εληνιέο γηα ηνλ πξν-επεμεξγαζηή



• Υξεζηκνπνηνύληαη ζπλήζσο γηα ηηο παξαθάησ πεξηπηώζεηο:



– Να εηζάγνπλ βηβιηνζήθεο π.ρ.

• #include

• #include ―myBestLibrary.h‖

– Να νξίζνπλ ζηαζεξέο π.ρ.

• #define FREEZING_POINT_CELCIUS 0.0

• #define FREEZING_POINT_FARHENEIT 32.0

• #

– Να εηζάγνπλ πεγαίν θώδηθα αλάινγα κε ζπγθεθξηκέλεο ζπλζήθεο πνπ

ππνινγίδνληαη από ηνλ πξν-επεμεξγαζηή π.ρ.

• #define DEBUG1

…………………….

…………………….

#if DEBUG

printf(―To print the values of %d\n‖, i)

#endif





28

΢ΤΝΑΡΣΗ΢ΔΙ΢

• Οη ζπλαξηήζεηο είλαη ζαλ ηηο ξνπηίλεο/ππν-ξνπηίλεο (routines, subroutines, procedures)

ζε άιιεο γιώζζεο πξνγξακκαηηζκνύ.



• Οπζηαζηηθά είλαη ηα δνκηθά πιηθά ελόο πξνγξάκκαηνο. Οη ζπλαξηήζεηο πξέπεη ην θαηά

ην δπλαηόλ λα παξάγνπλ όζν ην δπλαηόλ πην ζπγθεθξηκέλε ιεηηνπξγηα (high cohesion)

θαί λα εμαξηώληαη όζν ην δπλαηόλ ιηγόηεξν ε κία από ηελ άιιε (low coupling).



• Τπάξρνπλ δύν κεγάιεο θαηεγνξίεο ζπλαξηήζεσλ:

– ΢πλαξηήζεηο βηβιηνζήθεο – library functions (είλαη θνκκάηη ηεο βηβιηνζήθεο)

– ΢πλαξηήζεηο εθαξκνγώλ – application functions (νξίδνληαη από ηνλ πξνγξακκαηηζηή)



• Οη ζπλαξηήζεηο ηεο C απνηεινύληαη από εληνιέο



• Μία ζπλάξηεζε κπνξεί λα ππνινγίδεη έλα απνηέιεζκα θαί λα ην επηζηξέθεη ζην ζεκείν

ηεο θιήζεο (αιιά απηό δελ είλαη πάληα απαξαίηεην) π.ρ.







void main() { int addOne(int j)

int i = 0;

Σν θύξην ………

{ Οξηζκόο ηεο

j = j+1;

πξόγξακκα ……… return (j);

ζπλάξηεζεο

i = addOne(i) }

………;

} 29

Η ΢ΤΝΑΡΣΗ΢Η main

• Η ζπλάξηεζε main είλαη κία εηδηθή ζπλάξηεζε

πνπ πξέπεη λα έρεη νξηζζεί ζε θάζε C

πξόγξακκα

• Η ζπλάξηεζε main είλαη ε πξώηε ζπλάξηεζε

πνπ θαιείηαη ζε έλα C πξόγξακκα. Η θιήζε

γίλεηαη απηόκαηα από ην ιεηηνπξγηθό ζύζηεκα

όηαλ ην πξόγξακκα αξρίδεη λα «ηξέρεη».

• Η ζπλάξηεζε main κπνξεί λα επηζηξέθεη, ή λα

κελ επηζηξέθεη θάπνην απνηέιεζκα



30

ΔΝΣΟΛΔ΢

• Οη εληνιέο νξίδνπλ ζπγθεθξηκέλεο ιεηηνπξγίεο ηηο νπνίεο

εθηειεί έλα πξόγξακκα ζαλ κέξνο ηνπ αιγόξηζκνπ πνπ

πινπνηεί



• Τπάξρνπλ πνιιά είδε εληνιώλ όπσο νη:

– Αλάζεζε (assignment statement)

– Δληνιέο ζπλζήθεο (conditional statements)

– Δληνιέο βξόγρνπ - επαλάιεςεο (iterative statements)

– Δληνιέο έθθξαζεο (expression statements)



• Οη εληνιέο ηειεηώλνπλ πάληα κε ππνδηαζηνιή (;) –

semicolon – ελώ ηα directives έρνπλ πάληα κήθνο κία

γξακκή



31

΢ΥΟΛΙΑ

• Έλα θαιό πξόγξακκα δελ είλαη κόλν ζπληαθηηθά ζσζηό, γξήγνξν, θαί ζπκβαηό κε ηηο

απαηηήζεηο ηνπ ρξήζηε, αιιά θαη ηεθκεξησκέλν κε ζρόιηα



• Σα ζρόιηα δελ κεηαθξάδνληαη από ηνλ compiler ν νπνίνο ηα ζεσξεί ζαλ θελνύο

ραξαθηήξεο



• Σα ζρόιηα ζηε C νξίδνληαη αλάκεζα ζηά ζύκβνια /* θαί */ π.ρ.

/* this is a comment in C */



• Βαζηθή αξρή είλαη λα έρνπκε έλα εππαξνπζίαζην θαί εύθνιν λα δηαβαζηεί πξόγξακκα

(δηεπθνιύλεη ηε ζπληήξεζή ηνπ) π.ρ.



/**********************************************************

* Name: main.c *

* Author: John Smith *

* Purpose: Translate Celcius degrees to Farheneit *

* Date/Version: 12/12/02 v1.1 *

************************************************************/



• Σν παξαθάησ είλαη ιάζνο

32

/* Nested /* comments */ are wrong! */

ΣΤΠΟΙ ΓΔΓΟΜΔΝΧΝ (απινί)

• Αθέξαηνη αξηζκνί

int char

• Καζνξηζκόο πξνζήκαλζεο

signed unsigned

• Καζνξηζκόο κεγέζνπο

short long

• Αξηζκνί θηλεηήο ππνδηαζηνιήο

float double





33

ΠΙΝΑΚΑ΢ ΑΠΛΧΝ ΣΤΠΧΝ

ΓΔΓΟΜΔΝΧΝ

char , signed char , unsigned char

signed short int , unsigned short int

signed int , unsigned int

signed long int , unsigned long int

float

double

long double





•Με θόθθηλν ρξώκα όζα κπνξνύλ λα παξαιεηθζνύλ.

34

ΜΔΣΑΣΡΟΠΗ ΣΤΠΧΝ ΚΑΣΑ ΣΗΝ

ΑΝΑΘΔ΢Η

• Οη κεηαηξνπέο ηύπσλ ζπκβαίλνπλ θαη κε ηνλ ηειεζηή αλάζεζεο π.ρ.

Α=Β



• Η έθθξαζε ζηα δεμηά ηνπ ηειεζηή (=) πξνβηβάδεηαη ζηνλ ηύπν ηεο

κεηαβιεηήο ζηα αξηζηεξά ηνπ ηειεζηή αλάζεζεο

• Απηό όκσο κπνξεί λα πξνθαιέζεη πξνβιήκαηα όπσο αλαθέξζεθε

πξνεγνπκέλσο αλ ε κεηαβιεηή είλαη «ρακειόηεξνπ» ηύπνπ.



• Παξάδεηγκα.

Δάλ d είλαη double, θαη i είλαη int ηόηε ε αλάζεζε d = i; Θα

πξνθαιέζεη ηελ κεηαηξνπή ηεο αθέξαηαο κεηαβιεηήο i ζε ηύπν

double ώζηε ε αλάζεζε λα επηηεπρζεί. Όκσο ε αλάζεζε i = d ζα

πξνθαιέζεη ηνλ ππνβηβαζκό ηεο double κεηαβιεηήο d ζε ηύπν int

νπόηε ην δεθαδηθό κέξνο ηεο d ζα ραζεί.







35

΢ΦΑΛΜΑΣΑ ΤΠΟΛΟΓΙ΢ΜΧΝ ΢Δ

ΔΚΦΡΑ΢ΔΙ΢

• ΢θάικαηα ζηνλ ππνινγηζκό αξηζκεηηθώλ εθθξάζεσλ κπνξνύλ λα

παξνπζηαζζνύλ ιόγσ



– Υξήζεο πεξηνξηζκέλνπ αξηζκνύ ςεθίσλ

– Υξήζεο ηερληθώλ πξνζέγγηζεο ηεο ηηκήο κίαο ζπλάξηεζεο ή έθθξαζεο

αληί ηνπ άκεζνπ ππνινγηζκνύ ηεο ηηκήο ηεο

Παξάδεηγκα

Η πξόζζεζε ησλ αξηζκώλ 563.8, 631.9, θαη 321.6 όηαλ είκαζηε

πεξηνξηζκέλνη ζε ηέζζεξα ςεθία έρεη ζαλ απνηέιεζκα 1518, θαη

απνηέιεζκα 1517! όηαλ πξνζζέζνπκε 321.6, 631.9, θαη 563.8 (ε

πξόζζεζε γίλεηαη αλά δύν αξηζκνύο)



• Από ην παξάδεηγκα βιέπνπκε όηη ε δηάηαμε ησλ όξσλ ηνπ

αζξνίζκαηνο επεξεάδεη ην ηειηθό απνηέιεζκα. Η ζσζηή απάληεζε

είλαη 1517.3. Σν απνηέιεζκα 1518 έρεη απόιπην ζθάικα 0.7, θαη

ζρεηηθό ζθάικα 0.7/1517.3 = 0.00046





36

ΑΜΔ΢Ο ΚΑΙ ΢ΥΔΣΙΚΟ ΢ΦΑΛΜΑ

• Δάλ νξίζνπκε:

Α: ηελ ζσζηή ηηκή κίαο έθθξαζεο ή

ζπλάξηεζεο

Α:την προσεγγιστική τιμή



Τότε:

αΑ = Α – Α είναι το απόλυτο σφάλμα

εΑ = αΑ/Α είναι το σχετικό σφάλμα

37

ΑΜΔ΢Η ΜΔΣΑΣΡΟΠΗ (cast)

• Δθηόο από ηηο απηόκαηεο κεηαηξνπέο ε C επηηξέπεη ζηνλ ρξήζηε λα αιιαμεη

άκεζα ηνλ ηύπν κηάο κεηαβιεηήο ή κίαο έθθξαζεο κε ηελ ρξήζε ηνπ ηειεζηή

cast.

• Η ζύληαμε ηεο εληνιήο πνπ επηηξέπεη ηελ αιιαγή ηνπ ηύπνπ απν ηνλ

ρξήζηε είλαη:



(Σύπνο) Έθθξαζε



όπνπ Τύπος είλαη θάπνηνο από ηνπο ηύπνπο ππ έρνπλ νξηζζεί ζέ έλα

πξόγξακκα ηεο C θαη Έκυραση νπνηαδήπνηε έθθξαζε ηεο C.

• Η αιιαγή ηνπ ηύπνπ κε ηελ παξαπάλσ εληνιή έρεη ηελ ίδηα πξνηεξαηόηεηα

κε ηνπο άιινπο κνλαδηαίνπο ηειεζηέο.



• Η ζπλεζέζηεξε ρξήζε ηνπ ηειεζηή ζε αξηζκεηηθέο εθθξάζεηο είλαη γηα ηελ

απνθπγή απσιεηώλ θιαζκαηηθώλ κεξώλ (π.ρ. ζε κηα δηαίξεζε αθεξαίσλ),

θαί ηελ απνθπγή ππνβηβαζκνύ ηύπνπ ιόγσ αλάζεζεο (π.ρ. (double) i = d)







38

ΜΔΣΑΒΛΗΣΔ΢

• Οη κεηαβιεηέο ζ’ έλα πξόγξακκα επηηξέπνπλ ηελ απνζήθεπζε

δεδνκέλσλ θαη ηελ πξνζπέιαζε ζηε δπλακηθή (RAM) θαη ζηαηηθή

(files) κλήκε ηνπ Η/Τ

• ΢ηε C νη κεηαβιεηέο πξέπεη:



1. Να έρνπλ νξηζζεί ζε θάπνηα εληνιή δήισζεο, ζπλήζσο ζηελ αξρή

ελόο αξρείνπ πεγαίνπ θώδηθα, ή ζηελ αξρή κηαο ζπλάξηεζεο

2. Να έρνπλ ζπγθεθξηκέλν ηύπν

3. Να έρνπλ κία αξρηθή ηηκή πξηλ ρξεζηκνπνηεζνύλ γηα πξώηε θνξά

4. Σα δεδνκέλα (ηηκέο) πνπ απνζεθεύνληαη ζηε κεηαβιεηή πξέπεη λα

είλαη ηνπ ίδηνπ ή ζπκβαηνύ ηύπνπ κε απηνύ ηεο κεηαβιεηήο



• Γη’ αξρή ζα ζεσξήζνπκε δύν ηύπνπο int θαί float









39

ΟΝΟΜΑΣΑ ΜΔΣΑΒΛΗΣΧΝ

• Σα νλόκαηα ησλ κεηαβιεηώλ ζ΄έλα πξόγξακκα C

πξέπεη λα αξρίδνπλ κε γξάκκα θαί κπνξνπλ λα

πεξηέρνπλ αιθαξηζκεηηθνύο ραξαθηήξεο.



• Δπίζεο δελ κπνξνύλ λα πεξηέρνπλ εηδηθνύο ραξαθηήξεο

όπσο #, &, * θιπ.



• Τπάξρνπλ ζπγθεθξηκέλα νλόκαηα ηα νπνία αλαθέξνληαη

ζε ιέμεηο θιεηδηά ηεο C



• Σα νλόκαηα ησλ κεηαβιεηώλ είλαη επαηζζεηα ζηελ δνκή

ηνπο (Κεθαιαίνη, κηθξνί ραξαθηήξεο) π.ρ. AVariable ≠

Avariable



40

ΛΔΞΔΙ΢ ΚΛΔΙΓΙΑ

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for Signed void

default goto sizeof volatile

do if static while

Οη παξαπάλσ ιέμεηο θιεηδηά δελ κπνξνύλ λα ρξεζηκνπνηεζνύλ ζαλ νλόκαηα 41

κεηαβιεηώλ ηνπ πξνγξάκκαηνο

ΔΝΣΟΛΔ΢ ΟΡΙ΢ΜΟΤ

ΜΔΣΑΒΛΗΣΧΝ

• Γηα λα νξίζνπκε κηα κεηαβιεηή πξέπεη πξώηα λα νξίζνπκε ηνλ ηύπν θαη κεηά ην

όλνκα ηεο κεηαβιεηήο π.ρ.

int i;

int j = 50; /* νξηζκόο αθέξαηαο κεηαβιεηήο *

* κε αξρηθή ηηκή */



• Η γεληθή κνξθή είλαη

τύπος



• Οπόηε ζην θύξην πξόγξακκα main ε γεληθή κνξθή είλαη:



type main() int main()

{ {

declarations int i = 0;

statements

} i = i +1;

return (i);

} 42

ΟΡΙ΢ΜΟ΢ ΜΔΣΑΒΛΗΣΧΝ

int x;

int x, y, z;

double r;

unsigned long abc;





• Αξρηθνπνίεζε

int x = 1;

int x, y = 0, z = 2;

double r = 1.87;

unsigned long abc = 42000000;



43

΢ΣΑΘΔΡΔ΢ (i)

• Αθέξαηεο

42 0 -1 δεθαδηθέο

037 νθηαδηθέο

0x1f δεθαεμαδηθέο

42U 42L 42UL unsigned & long

• Κηλεηήο ππνδηαζηνιήο

42.0 -1.3 δεθαδηθέο

2.99e8 κε δύλακε ηνπ 10

42.0F 42.0L float & long double

44

΢ΣΑΘΔΡΔ΢ (ii)

• Υαξαθηήξα

'a' '0' '$'

• Δηδηθνί ραξαθηήξεο

\n αιιαγή γξακκήο

\' απόζηξνθνο

\\ ραξαθηήξαο \ (backslash)

\t αιιαγή ζηήιεο (tab)

\" εηζαγσγηθό

\0 ραξαθηήξαο κε ASCII = 0 (null)

\037 » κε ASCII = 37 (νθηαδηθό)

\x1f » κε ASCII = 1f (δεθαεμαδηθό) 45

΢ΣΑΘΔΡΔ΢ (iii)

• ΢πκβνινζεηξέο

"abc" "Hello world!\n" "a\"51\""

• Γειώζεηο ζηαζεξώλ

const int size = 10, num = 5;

const double pi = 3.14159;

const char newline = '\n';









46

ΚΑΛΔ΢ ΠΡΑΚΣΙΚΔ΢ ΟΝΟΜΑ΢ΙΑ΢

ΜΔΣΑΒΛΗΣΧΝ

• Υξήζε κηθξώλ ραξαθηήξσλ (όρη θεθαιαίσλ)



• Με ρξήζε κηθξώλ θαη θεθαιαίσλ γηα δύν

δηαθνξεηηθέο κεηαβιεηέο π.ρ one θαί ONE



• Υξήζε κλεκνληθώλ νλνκάησλ π.ρ.

interestRate αληί ir



• Καηαλνεηή ζύληαμε γηα πνιύπινθα νλόκαηα

π.ρ. interestRate, ή interest_Rate αντί

interestrate

47

ΔΝΣΟΛΗ ΑΝΑΘΔ΢Η΢

• Οη κεηαβιεηέο ιακβάλνπλ ηηκέο κε ζπθγεθξηκέλε

εληνιή αλάζεζεο



• Η εληνιή είλαη ηεο κνξθήο:

Μεταβλητή = έκυραση

όπνπ ε έθθξαζε κπνξεί λα είλαη κηα ζηαζεξή ηηκή,

έλαο καζεκαηηθόο ηύπνο, ην απνηέιεζκα θιήζεο κηάο

ζπλάξηεζεο θιπ.



• Η έκυραση ζα πξέπεη λα παξάγεη έλα

απνηέιεζκα πνπ λα είλαη ζπκβαηό κε ηνλ ηύπν

ηεο κεηαβιεηήο

48

ΠΑΡΑΓΔΙΓΜΑ (1)

#include



float main()

{

float height, base, area;

height = 10.2;

base = 3.6;

printf(―The height of the triangle is: %f\n‖, height);

printf(―The base of the triangle is: %f\n‖, base);

area = (height * base)/2;

printf(―The area of the triangle is %f\n‖, area);



return (area);

}







49

ΠΑΡΑΓΔΙΓΜΑ (2)

#include



float main()

{

float height, base, area;

printf(―Enter the height of the triangle:‖);

scanf(―%f‖, &height);

printf(―\n‖);

printf(―Enter the base of the triangle‖);

scanf(%f‖, &base);

printf(―\n‖);

printf(―The height of the triangle is: %f\n‖, height);

printf(―The base of the triangle is: %f\n‖, base);

area = (height * base)/2;

printf(―The area of the triangle is %f\n‖, area);



return (area);

}





50

ΠΑΡΑΓΔΙΓΜΑ (3)

#include

#define FREEZING_POINT_IN_FARHENHEIT 32

#define SCALE_FACTOR (5.0 / 9.0)



float main()

{

float farhenheit, celcius;

printf(―Enter the temperature in Farhenheit:‖);

scanf(―%f‖, &farhenheit);

celcius = (farhenheit – FREEZING_POINT_IN_FARHENHEIT) *

SCALE_FACTOR;

printf(―The celcius equivalent temperature of %f is %.1f \n‖, farhenheit, celcius);



return (area);

}





51

ΔΚΣΤΠΧ΢Η ΜΔ ΣΗΝ ΢ΤΝΑΡΣΗ΢Η

printf

• Απινί ηύπνη δεδνκέλσλ

– int %d

– char %c

– double %lf

– string %s

• Παξάδεηγκα

printf("%d %lf %c %s\n",

42, 1.2, 'a', "hello");

• Απνηέιεζκα

42 1.200000 a hello

52

ΔΙ΢ΑΓΧΓΗ ΓΔΓΟΜΔΝΧΝ ΜΔ ΣΗ

΢ΤΝΑΡΣΗ΢Η scanf



• Ίδηνη θσδηθνί γηα ηνπο απινύο ηύπνπο

• Παξάδεηγκα

int n;

double d;

char c;

scanf("%d", &n);

scanf("%lf", &d);

scanf("%c", &c);



53

ΠΡΟΓΡΑΜΜΑΣΙ΢ΣΙΚΕ΢

ΣΕΧΝΙΚΕ΢

ΚΩ΢ΣΑ΢ ΚΟΝΣΟΓΙΑΝΝΗ΢

ΓΙΑΝΝΗ΢ ΜΑΪ΢ΣΡΟ΢

ΑΝΓΡΔΑ΢ ΢ΣΑΦΤΛΟΠΑΣΗ΢



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

ΚΑΙ ΜΗΥΑΝΙΚΩΝ ΤΠΟΛΟΓΙ΢ΣΩΝ

Δ.Μ.Π.









54

ΠΑΡΑΓΔΙΓΜΑ

#include

void main ()

{

int celcius;

double farenheit;

printf("Give the temperature (C): ");

scanf("%d", &celcius);

farenheit = 9.0 * celcius / 5.0 + 32.0;

printf(" %d degrees Celcius "

"is %lf degrees Farenheit\n",

celcius, farenheit);

55

}

ΣΔΛΔ΢ΣΔ΢ ΚΑΙ ΔΚΦΡΑ΢ΔΙ΢ (i)

• Αξηζκεηηθνί ηειεζηέο

+ - * / %

• ΢ρεζηαθνί ηειεζηέο

== != =

• Λνγηθνί ηειεζηέο

&& ινγηθή ζύδεπμε (θαη)

|| ινγηθή δηάδεπμε (ή)

! ινγηθή άξλεζε (όρη)

• π.ρ. (x % 3 != 0) && !finished

56

ΣΔΛΔ΢ΣΔ΢ ΚΑΙ ΔΚΦΡΑ΢ΔΙ΢ (ii)

• Σειεζηέο bit πξνο bit (bitwise)

& ζύδεπμε bit (AND)

| δηάδεπμε bit (OR)

^ απνθιεηζηηθή δηάδεπμε bit (XOR)

~ άξλεζε (NOT)

> νιίζζεζε bit δεμηά

• Παξάδεηγκα

(0x0101 & 0xfff0) = b) ? a : b

• Σειεζηήο παξάζεζεο

a-1, b+5

• Σειεζηέο αλάζεζεο

a = b+1

a += x ηζνδύλακν κε a = a + x

• Σειεζηέο αύμεζεο θαη κείσζεο

a++ a-- ηηκή πξηλ ηε κεηαβνιή

++a --a ηηκή κεηά ηε κεηαβνιή 58

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (i)

• Κελή εληνιή

;



• Δληνιή αλάζεζεο ηηκήο θαη εληνιή έθθξαζεο

a = b+5;

a++;

a--;



• Δληνιή if

if (a >= b)

max = a;

else

max = b;



59

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (ii)

• ΢ύλζεηε εληνιή

(block) • Οξηζκόο λέαο εκβέιεηαο

γηα κεηαβιεηή Δίλαη

if (a >= b) { δηαθνξεηηθέο

if (x < y) {

min = b; κεηαβιεηέο!

int temp = x;

max = a;

x = y;

}

y = temp;

else { }

max = b;

min = a;

} Γεληθά είλαη θαθή επηινγή λα νξίδνπκε

κεηαβιεηέο κε ην ίδην όλνκα αιιά κε

δηαθνξεηηθέο εκβέιεηεο ζε έλα πξόγξακκα,

δηόηη δεκηνπξγεί ζύγρπζε ζηε θαηαλόεζε 60

ηνπ θώδηθα θαη κεηώλεη ηε ζπληεξεζηκόηεηά ηνπ

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (iii)



while (συνθήκη)

εντολή



ψευδής

συνθήκη

• Δληνιή while αληθής

int i = 1, s = 0;

while (i <= 10) { εντολή

s = s + i;

i++;

}

61

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (iv)



do

εντολή εντολή

while (συνθήκη);



συνθήκη

αληθής

ψευδής





• Δληνιή do-while • Δληνιή do-while

int i = 1, s = 0; int i = 1, s = 0;

do do {

s += i++; i=i+1;

while (i <= 10); s = s+i;

} 62

while (i <= 10);

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (v)



αρχικοποίηση

for (αρχικοποίηση ;

συνθήκη ; ψευδής

βήμα) συνθήκη

εντολή

αληθής



εντολή



• Δληνιή for βήμα

int i, s;

for (i=1, s=0; i <= 10; i++)

s = s + i;

63

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (vi)

• Δληνιή break

int s;

for (i=0, s=0; i < 10; i++) {

int x;

scanf("%d", &x);

if (x < 0)

break;

s += x;

}

printf("Sum is: %d\n", s);

64

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (vii)

• Δληνιή continue

int s;

for (i=0, s=0; i < 10; i++) {

int x;

scanf("%d", &x);

if (x < 0)

continue;

s += x;

}

printf("Sum is: %d\n", s);

65

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (viii)

• Δληνιή switch

switch (ch) {

case 'a':

printf("alpha\n");

break;

case 'b':

case 'c':

printf("beta or c\n");

break;

default:

printf("other\n");

} 66

EΝΣΟΛΔ΢ ΚΑΙ ΔΛΔΓΥΟ΢ ΡΟΗ΢ (ix)

• Δηηθέηεο θαη εληνιή goto

int i = 1, s = 0;



loop:

s += i++;

if (i < 10)

goto loop;



printf("The sum is %d\n", s);

Η ρξήζε ηνπ goto δελ ζπληζηάηαη δηόηη δεκηνπξγεί δπζθνιία ζηε θαηαλόεζε

ηεο ινγηθήο ξνήο ηνπ πξνγξάκκαηνο θαη ζπλεπώο κεηώλεη ηε

ζπληεξεζηκόηεηά ηνπ. Γεληθά ε ρξήζε ηνπ goto απνθεύγεηαη ζην

67

δνκεκέλν πξνγξακκαηηζκό.

ΠΑΡΑΓΔΙΓΜΑ

int a_variable; /* Ορισμός μεταβλητής γενικής εμβέλειας */



void main () /* Ορισμός κύριας σσνάρτησης */

{

a_function(6); /* Κλήση σσνάρτησης */

}





void a_function (int x)

{

a_variable = another_function(x, x+1);

}





int another_function (int x, int y)

{

return x * y;

}





Η ηηκή ηεο κεηαβιεηήο a_variable κεηά ηε θιήζε «a_function(6)» ζηε θύξηα

68

ζπλάξηεζε main θαη πξηλ ηε ιήμε ηνπ πξνγξάκκαηνο είλαη 42


Other docs by HC11112910142
Whit�s Wacky Graphs E-Portfolio
Views: 0  |  Downloads: 0
Linear Programming
Views: 1  |  Downloads: 0
1 3 Intro
Views: 0  |  Downloads: 0
Chapter 11
Views: 0  |  Downloads: 0
capacitors
Views: 1  |  Downloads: 0
PowerPoint Presentation
Views: 2  |  Downloads: 0
JVT C103
Views: 1  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!