ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί...

13
1 Ν. Βαζηιάο ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ Θεσξία + ΑΠ: Ν. Βαζηιάο, N. Εάραξεο Δξγαζηήξηα: Δκ. Μπξαηζόιεο, Γ. Τζειίθεο, Γ. Μειεηίνπ Ο τηθιακόρ Η/Τ (hardware) H Von Neumann αξρηηεθηνληθή Ο Ούγγξνο Μαζεκαηηθόο Von Neumann (1903-1957) Ήδε, από ηε δεθαεηία ηνπ 1940 θαη ελώ βξηζθόηαλ ζηηο Ζ.Π.Α. (Princeton University / Institute for Advanced Study), πξόηεηλε ην βαζηθό κνληέιν (αξρηηεθηνληθή) Ζ/Υ πνπ ρξεζηκν- πνηείηαη κέρξη θαη ζήκεξα.

Transcript of ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί...

Page 1: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

1Ν. Βαζηιάο

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

ΤΠΟΛΟΓΙΣΩΝ

Θεσξία + ΑΠ: Ν. Βαζηιάο, N. Εάραξεο

Δξγαζηήξηα: Δκ. Μπξαηζόιεο, Γ. Τζειίθεο, Γ. Μειεηίνπ

Ο τηθιακόρ Η/Τ (hardware)

• H Von Neumann αξρηηεθηνληθή

Ο Ούγγξνο Μαζεκαηηθόο

Von Neumann (1903-1957)

Ήδε, από ηε δεθαεηία ηνπ 1940 θαη

ελώ βξηζθόηαλ ζηηο Ζ.Π.Α. (Princeton

University / Institute for Advanced

Study), πξόηεηλε ην βαζηθό κνληέιν

(αξρηηεθηνληθή) Ζ/Υ πνπ ρξεζηκν-

πνηείηαη κέρξη θαη ζήκεξα.

Page 2: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

2Ν. Βαζηιάο

Σα μέπη ηος Η/Τ ζύμθυνα με ηη Von

Neumann απσιηεκηονική

CPU

ALUCU

I/O

Διιεληθή Οξνινγία

CPU = Κεληξηθή Μνλάδα

Δπεμεξγαζίαο (KME)

ALU = Μνλάδα Αξηζκεηη-

θώλ θαη Λνγηθώλ Πξάμεσλ

CU = Μνλάδα Διέγρνπ

I/O = Δίζνδνο/Έμνδνο

Memory = Μλήκε

Η Von Neumann απσιηεκηονική ζήμεπα

Page 3: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

3Ν. Βαζηιάο

• Μαζεκαηηθνί ππνινγηζκνί (ππνινγηζκόο ηνπ Ν!,

αληηζηξνθή πίλαθα, ξίδεο πνιπσλύκσλ, θ.ιπ.)

• Ταμηλόκεζε ζπκβνινζεηξώλ, νλνκάησλ, αξηζκώλ

• Αλαδήηεζε δεδνκέλσλ από βάζεηο δεδνκέλσλ

• Σρεδηαζκόο θαη πινπνίεζε πιεξνθνξηαθνύ ζπζηήκαηνο

• Πξνβιήκαηα Τερλεηήο Ννεκνζύλεο (ζθάθη, αλαγλώξηζε

πξνζώπσλ, πξόβιεςε, ην πξόβιεκα ηνπ πεξηνδεύνληνο

πσιεηή, θ.ιπ.)

• Τξηζδηάζηαηα γξαθηθά, εηθνληθή πξαγκαηηθόηεηα

Η εθαπμογή / Σο ππόβλημα

Ο Αλγόπιθμορ

• Απνηειεζκαηηθή κέζνδνο πνπ

πξνζδηνξίδεη ηα βήκαηα πνπ

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

γηα ηελ επίιπζε

πξνβιεκάησλ ζε Ζ/Υ

• Κιαζηθόο ηξόπνο

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

είλαη κε δηαγξάκκαηα ξνήο

Τπολογιζμόρ ηος Ν!

Page 4: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

4Ν. Βαζηιάο

• Αθνινπζία εληνιώλ πνπ εθηεινύληαη από ηελ ΚΜΔ ηνπ Ζ/Υ

• Δπηηξέπεη ηελ επηθνηλσλία κε ηνλ Ζ/Υ

• Δίλαη ζε γιώζζα πνπ «θαηαιαβαίλεη» ν Ζ/Υ

• Τα πξώηα πξνγξάκκαηα ήηαλ γξακκέλα ζε γλώζζα

μησανήρ (machine language) ζηελ νπνία νη εληνιέο θαη ηα

δεδνκέλα είλαη ζε bits (0/1). Γηα παξάδεηγκα, ε κείσζε θαηά

1 ηεο ηηκήο ηνπ θαηαρσξεηή (register) Β ζηε γιώζζα

κεραλήο ηνπ επεμεξγαζηή Z80 ηεο Zilog δίλεηαη από ηελ

εληνιή 00000101. Ζ γιώζζα κεραλήο είλαη κηα κή θπζηθή

γιώζζα γηα ηνλ άλζξσπν

Σο Ππόγπαμμα (κώδικαρ)

• Αληηκεησπίδεη ελ κέξεη ηα πξνβιήκαηα ηεο γιώζζαο

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

ησλ δπαδηθώλ εληνιώλ (π.ρ. DEC B <==> 00000101)

• Ήηαλ ε βαζηθή γιώζζα πξνγξακκαηηζκνύ ηε δεθαεηία ηνπ

1940.

• Ο πξνγξακκαηηζκόο ζε γιώζζα assembly απαηηνύζε

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

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

Η Γλώζζα Assembly

Page 5: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

5Ν. Βαζηιάο

• Αλαπηύρζεθαλ θαη ρξεζηκνπνηνύληαη από ηε δεθαεηία ηνπ 1950

• Δπηηξέπνπλ ζηνλ πξνγξακκαηηζηή λα γξάθεη πξνγξάκκαηα αλεμάξηεηα από ηνλ ζπγθεθξηκέλν ηύπν Ζ/Υ

• Οη γιώζζεο απηέο κνηάδνπλ πεξηζζόηεξν κε ηηο αλζξώπηλεο γιώζζεο ζε αληίζεζε κε ηελ assembly πνπ είλαη πην θνληά ζηε γιώζζα κεραλήο (γηα ηνλ ιόγν απηό ε assembly ζεσξείηαη γιώζζα ρακεινύ επηπέδνπ)

• Βαζηθό πιενλέθηεκα ησλ γισζζώλ απηώλ: ηα πξνγξάκκαηα ζε γιώζζα πςεινύ επηπέδνπ είλαη πην εύθνια ζηελ θαηαλόεζε, ζηε ζύληαμε θαη ζηε ζπληήξεζε.

• Πξνθεηκέλνπ λα κπνξέζνπλ ηειηθά λα εθηειεζηνύλ ζηνλ Ζ/Υ, ηα πξνγξάκκαηα πνπ έρνπλ γξαθεί ζε γιώζζα πςεινύ επηπέδνπ πξέπεη λα κεηαθξαζζνύλ ζε γιώζζα κεραλήο κε ρξήζε ελόο διεπμηνεςηή(interpreter) ή ελόο μεηαγλυηηιζηή (compiler)

• Σήκεξα ππάξρνπλ δεθάδεο δηαθνξεηηθώλ γισζζώλ πςεινύ επηπέδνπ. Δλδεηθηηθά αλαθέξνπκε ζε ρξνλνινγηθή ζεηξά ηηο: FORTRAN, LISP, ALGOL, COBOL, APL, BASIC, PL/I, Logo, Pascal, C, Smalltalk, Prolog, C++, Ada, Perl, Python, JAVA, Delphi, PHP, XML θαη C#.

Γλώζζερ Ττηλού Επιπέδος

(High-Level Languages)

Η ΓΛΩΑ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ C

• Ζ C δεκηνπξγήζεθε ην 1972 ζηα Bell Labs από ηνλ Dennis Ritchie

θαζώο, καδί κε ηνλ Ken Thompson (είρε επηλνήζεη ηε γιώζζα Β),

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

[Tν λειηοςπγικό ζύζηημα (operating system) είλαη έλα ζύλνιν

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

ζπζηήκαηνο].

Ken

ThompsonDennis

Ritchie

Page 6: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

6Ν. Βαζηιάο

Η ΓΛΩΑ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ C

• Ζ C δεκηνπξγήζεθε ην 1972 ζηα Bell Labs από ηνλ Dennis Ritchie

θαζώο, καδί κε ηνλ Ken Thompson (είρε επηλνήζεη ηε γιώζζα Β),

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

[Tν λειηοςπγικό ζύζηημα (operating system) είλαη έλα ζύλνιν

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

ζπζηήκαηνο].

• Αλ θαη νη πεξηζζόηεξεο γιώζζεο ζηνρεύνπλ ζην λα είλαη ρξήζηκεο,

ζπρλά επηλννύληαη θαη γηα άιινπο ιόγνπο. Γηα παξάδεηγκα, ε Pascal

ζρεδηάζζεθε θπξίσο γηα εθπαηδεπηηθνύο ζθνπνύο (δηδαζθαιία

αξρώλ πξνγξακκαηηζκνύ) ελώ ε BASIC ζρεδηάζζεθε σο κηα θηιηθή

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

εμνηθείσζε κε ηνπο Ζ/Υ.

• Αληηζέησο, ε C ζρεδηάζζεθε γηα λα απνηειέζεη έλα ρξήζηκν εξγαιείν

γηα πξνγξακκαηηζηέο.

Ζ ξαγδαία εμάπισζε ηεο C θαη ε θαζηέξσζή ηεο σο κηαο από ηηο πην

ζεκαληηθέο γιώζζεο πξνγξακκαηηζκνύ νθείιεηαη ζηνπο εμήο ιόγνπο:

• Παξέρεη δπλαηόηεηεο (π.ρ.δνκεκέλνπ πξνγξακκαηηζκνύ) πνπ ε ππνινγηζηηθή επηζηήκε ζεσξεί όηη είλαη επηζπκεηέο κε απνηέιεζκα πην αμηόπηζηα θαη θαηαλνεηά πξνγξάκκαηα.

• Ζ C είλαη κηα απνηειεζκαηηθή γιώζζα (ηα C-πξνγξάκκαηα έρνπλ ηελ ηάζε λα είλαη πην ζπκπαγή θαη λα εθηεινύληαη πην γξήγνξα).

• Ζ C είλαη κηα μεηαθέπζιμη (portable) γιώζζα (ν C-θώδηθαο πνπ έρεη γξαθεί ζε θάπνην ζύζηεκα κπνξεί λα ρξεζηκνπνηεζεί απηνύζηνο θαη ζε άιια ζπζηήκαηα)

• Ζ C είλαη έλα παλίζρπξν θαη επέιηθην πξνγξακκαηηζηηθό εξγαιείν (π.ρ. ην 94%, πεξίπνπ, ηνπ UNIX είλαη γξακκέλν ζε C ζπκπεξηιακ-βαλνκέλσλ θαη κεηαγισηηηζηώλ θαη δηεξκελεπηώλ γηα άιιεο γιώζζεο όπσο, ε FORTRAN, ε Pascal, ε LISP, ε Logo θαη ε BASIC).

• Ζ C παξέρεη δπλαηόηεηεο ιεπηνκεξνύο ειέγρνπ ηεο ξνήο ηνπ πξνγξάκκαηνο - θάηη πνπ ζπλήζσο ζπζρεηίδεηαη κε ηε γιώζζα assembly - επηηξέπνληαο βειηηζηνπνίεζε ησλ πξνγξακκάησλ γηα κέγηζηε επίδνζε.

• Ζ C είλαη κηα θηιηθή δνκεκέλε γιώζζα πνπ ελζαξξύλεη ηηο θαιέο πξνγξακκαηηζηηθέο ζπλήζεηεο.

Page 7: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

7Ν. Βαζηιάο

Ιδιαίηεπα σαπακηηπιζηικά ηηρ C

1. Ζ C αθήλεη κεγάιε ειεπζεξία ζηνλ πξνγξακκαηηζηή. Γελ ζέηεη

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

ζε άιιεο γιώζζεο πξνγξακκαηηζκνύ (π.ρ. ε C επηηξέπεη ηελ

πξνζπέιαζε δεδνκέλσλ εθηόο ησλ νξίσλ ελόο πίλαθα!) δείρλνληαο

«εκπηζηνζύλε» (όηη μέξεη ηη θάλεη) ζηνλ πξνγξακκαηηζηή.

2. Ζ C έρεη έλα ειάρηζην ζύλνιν δεζκεπκέλσλ ιέμεσλ πνπ ηελ

θαζηζηνύλ κηα κηθξή γιώζζα. Όκσο, επηηξέπεη ηε δεκηνπξγία

ζπκπαγνύο θώδηθα, πνιύ κηθξόηεξεο έθηαζεο από άιιεο γιώζζεο,

πνπ κπνξεί λα είλαη εμαηξεηηθά πνιύπινθνο θαη δπζλόεηνο. Απηό

ηελ θαζηζηά, ίζσο, «αγαπεηή» ζε θνηηεηέο θαη επαγγεικαηίεο ηεο

πιεξνθνξηθήο αιιά «δύζθνιε» θαη «αθαηαλόεηε» ζε θνηηεηέο από

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

ΣΑΔΙΑ ΔΗΜΙΟΤΡΓΙΑ ΚΑΙ ΕΚΣΕΛΕΗ

ΕΝΟ ΠΡΟΓΡΑΜΜΑΣΟ Ε C

1. Φξεζηκνπνηνύκε έλαλ ζςνηάκηη (editor) γηα λα γξάςνπκε ην

πξόγξακκά καο ζε έλα „.c‟ απσείο.

2. Υπνβάιινπκε ην πξόγξακκά καο ζε κεηαγιώηηηζε

ρξεζηκνπνηώληαο ηνλ μεηαγλυηηιζηή (compiler) ηεο C. Ο

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

ζπληαθηηθά θαη ζεκαζηνινγηθά ζθάικαηα. Αλ δελ βξεη ζθάικαηα,

ζα κεηαθξάζεη ην πξόγξακκα ζε ζπκβνιηθή γιώζζα (assembly)

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

ππόγπαμμα (object program) ζε „.o‟ απσείο.

3. Σηε ζπλέρεηα, γίλεηαη ε ζύλδεζε ηνπ παξάγσγνπ πξνγξάκκαηόο

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

ηνπ ζπζηήκαηνο κέζσ ηνπ ζςνδέηη (linker) θαη θαηαιήγνπκε ζηε

κνξθή ελόο εκηελέζιμος απσείος (a.out).

4. Δθηεινύκε / ηξέρνπκε (execute / run) ην πξόγξακκά καο

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

Page 8: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

8Ν. Βαζηιάο

Διαδικαζία

παπαγυγήρ

εκηελέζιμος

ππογπάμμαηορ

ΕΝΑ ΑΠΛΟ ΠΡΟΓΡΑΜΜΑ

#include <stdio.h>

int main()

{

printf("Ena poly aplo C-programma.\n");

return 0;

}

Αξρείν “test.c”

ΗΜΕΙΩΗ: Όια ηα προγράκκαηα ποσ ζα τρεζηκοποηεζούλ ζηο

κάζεκα ζα είλαη ζύκθωλα κε ηο πρόησπο ANSI (American National

Standard Institute) ηες C. Η ANSI C αλαπηύτζεθε γηα λα αληηκεηω-

πηζηούλ προβιήκαηα αζσκβαηόηεηας.

Page 9: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

9Ν. Βαζηιάο

• Τν πξόγξακκα είλαη γλσζηό θαη σο “πηγαίορ κώδικαρ”

(source code) ελώ ην αξρείν ζην νπνίν απνζεθεύεηαη

νλνκάδεηαη “πηγαίο απσείο” (source file).

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

κεηαγισηηηζηή cc ηνπ UNIX, πιεθηξνινγνύκε:

cc test.c

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

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

κε όλνκα a.out. Πιεθηξνινγώληαο ηώξα

a.out

ζα εκθαληζζεί ζηελ νζόλε ηνπ ππνινγηζηή καο ην:

Ena poly aplo C-programma.

• Παξαδείγκαηα κεηαγιώηηηζεο κε cc:

cc test.c ή cc test.c foo.c (2 αρτεία)

παράγεη ηο εθηειέζηκο a.out

cc -o test test.c

αιιάδεη ηο όλοκα ηοσ εθηειέζηκοσ ζε test

cc –c test.c

δεκηοσργεί ηο παράγωγο αρτείο test.o. Δελ θαιεί

ηολ ζσλδέηε γηα εθηειέζηκο. Χρεζηκοποηείηαη γηα έιεγτο

ζσληαθηηθώλ ιαζώλ ή γηα ζύλδεζε κε άιια παράγωγα

κέζω ηες Makefile.

cc -o test test.c –lm

ζύλδεζε κε ηε καζεκαηηθή βηβιηοζήθε

Page 10: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

10Ν. Βαζηιάο

Επεξηγήζειρ

#include <stdio.h>

Πξηλ από θάζε C-πξόγξακκα εκθαλίδνληαη νδεγίεο πξνο

ηνλ κεηαγισηηηζηή κέζσ ηνπ πποεπεξεπγαζηή ηεο C (C-

preprocessor). Ζ παξαπάλσ νδεγία ππνρξεώλεη ηνλ

κεηαγισηηηζηή ηεο C λα δηαβάζεη θαη λα κεηαγισηηίζεη ην

απσείο επικεθαλίδαρ (header file) stdio.h πνπ έρεη

ζρέζε κε ηε βηβιηνζήθε Δηζόδνπ/Δμόδνπ ζηελ νπνία

βξίζθεηαη ε ζπλάξηεζε printf().

Τν αξρείν stdio.h (standard input output) πεξηέρεη

δειώζεηο ζπλαξηήζεσλ γηα εηζαγσγή δεδνκέλσλ από ην

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

ζπκπεξηιακβάλνπκε ζε όια ηα πξνγξάκκαηά καο.

int main()

{

...

}

Έλα C-πξόγξακκα απνηειείηαη από κηα ή πεξηζζόηεξεο

ζςναπηήζειρ (functions). Ζ βαζηθή ζπλάξηεζε πνπ ππάξρεη ζε θάζε C-πξόγξακκα είλαη ε main(). Μέζα ζηηο

παξελζέζεηο ηνπνζεηνύληαη ηα οπίζμαηα (arguments) ηεο

ζπλάξηεζεο. Οη παξελζέζεηο πξέπεη πάληα λα ππάξρνπλ

αθόκε θαη αλ δελ ππάξρνπλ νξίζκαηα, όπσο ζ’απηό ην

παξάδεηγκα. To ζώμα (body) ηεο ζπλάξηεζεο, δειαδή ν

θώδηθαο πνπ αθνξά ηε ζπλάξηεζε, πεξηθιείεηαη ζηε C αλάκεζα από άγθηζηξα { }. Ζ δεζκεπκέλε ιέμε int

ππνδειώλεη όηη ε main() πξέπεη λα επηζηξέςεη αθέξαην

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

Page 11: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

11Ν. Βαζηιάο

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

printf() ε νπνία, όπσο άιισζηε όιεο νη δειώζεηο ή εληνιέο ηεο C,

θαηαιήγεη ζην ζύκβνιν ';'.

Τν όξηζκα ηεο ζπλάξηεζεο απηήο είλαη ε ζςμβολοζειπά (δειαδή, ε

αθνινπζία ραξαθηήξσλ) "Ena poly aplo C-programma.\n".

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

Ο εηδηθόο ραξαθηήξαο '\n' αλήθεη ζηηο ιεγόκελεο ακολοςθίερ

διαθςγήρ (escape sequences) θαη νλνκάδεηαη σαπακηήπαρ νέαρ

γπαμμήρ (newline character).

Τν απνηέιεζκα απηήο ηεο εληνιήο είλαη λα εκθαληζζεί ζηελ νζόλε ην

Ena poly aplo C-programma.

κε ηνλ δπομέα (cursor) λα ηνπνζεηείηαη ζηελ αξρή ηεο επόκελεο

γξακκήο.

printf("Ena poly aplo C-programma.\n");

ΑΚΟΛΟΤΘΙΕ ΔΙΑΦΤΓΗ

\nηοποθέηηζη δρομέα ζηην αρτή νέας γραμμής

(newline)

\tταρακηήρας ζηηλοθέηη

(tab character)

\bταρακηήρας οπιζθοδρόμηζης

(backspace character)

\rεπαναθορά δρομέα ζηην αρτή ηης ηρέτοσζας γραμμής

(carriage return)

\fηοποθέηηζη δρομέα ζηην αρτή νέας ζελίδας

(form feed)

\\ανάποδη κάθεηος ή πιζωκάθεηος ' \ '

(backslash)

\'απλό ειζαγωγικό ' ' '

(single quote)

\"διπλό ειζαγωγικό ' " '

(double quote)

Page 12: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

12Ν. Βαζηιάο

ΕΝΑ ΠΙΟ ΤΝΘΕΣΟ ΠΡΟΓΡΑΜΜΑ

#include <stdio.h>

void myprint();

int main() /* a simple program */

{

int num;

num = 1;

myprint();

printf("O arithmos poy brisketai sth ");

printf("num einai o %d.\n",num);

return 0;

}

void myprint()

{

printf("Paradeigma emfanishs arithmou.\n\n");

}

Στόιηα

Δήιωζε αθέραηας κεηαβιεηής

Εθτώρεζε ηες ηηκής 1 ζηελ num

Κιήζε δηθής κας ζσλάρηεζες

Ορηζκός δηθής κας ζσλάρηεζες,

ζηο ίδηο αρτείο, κεηά ηελ main()

Έμνδνο: Paradeigma emfanishs arithmou.

O arithmos poy brisketai sth num einai o 1.

Αρτέησπο ζσλάρηεζες

ΣΙ ΚΑΝΕΙ ΑΤΣΟ ΣΟ ΠΡΟΓΡΑΜΜΑ?

#include <stdio.h>

int main() /* a simple program */

{

int num;

num = 2;

printf("%d + %d = %d\n",num,num,num+num);

return 0;

}

Έμνδνο πξνγξάκκαηνο:

2 + 2 = 4

Page 13: ΠΡΟΓΡΑΜΜΑΣΙΜΟ ΤΠΟΛΟΓΙΣΩΝ · Ν. Βα 1ηιάο 3 • Μαζεκαηθνί ππνινγη 1κνί (ππνινγη 1κόο 2νπ Ν!, αλ 2η 1 2ξνή πίλαθα,

13Ν. Βαζηιάο

ΔΙΟΡΘΩΣΕ ΣΟ ΠΑΡΑΚΑΣΩ ΠΡΟΓΡΑΜΜΑ

include stdio.h

main{} /* a simple program /*

(

int s

s := 52;

print(There are s weeks in a year.);

}

ΣΟ ΔΙΟΡΘΩΜΕΝΟ ΠΡΟΓΡΑΜΜΑ

#include <stdio.h>

int main() /* a simple program */

{

int s;

s = 52;

printf("There are %d weeks in a year.\n",s);

return 0;

}

Έμνδνο πξνγξάκκαηνο:

There are 52 weeks in a year.