ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Προγραμματισμός PASCAL
Advertisements

Πίνακες.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Εισαγωγή στους Ηλεκτρονικούς Υπολογιστές
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
Διαφάνειες παρουσίασης #5
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος γ
Παράδειγμα 5: Θερμοκρασίες
Προγραμματισμός PASCAL Πληροφορική Γ' Λυκείου μέρος α
Γενική μορφή προγράμματος Pascal
ΗΥ150 – Προγραμματισμός Ξενοφών Ζαμπούλης ΗΥ-150 Προγραμματισμός Ταξινόμηση και Αναζήτηση.
Διαίρει-και-Βασίλευε
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
Προγραμματισμός PASCAL
Διαφάνειες παρουσίασης #3
Αλγόριθμοι και Πολυπλοκότητα
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ (μΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ ΑΝΑΖΗΤΗΣΗ - ΤΑΞΙΝΟΜΗΣΗ) Καλλονιάτης Χρήστος Επίκουρος Καθηγητής Τμήμα.
Σχεδίαση Αλγορίθμων - Τμήμα Πληροφορικής ΑΠΘ - Εξάμηνο 4ο1 Ωμή Βία Είναι μία άμεση προσέγγιση που βασίζεται στην εκφώνηση του προβλήματος και τους ορισμούς.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ
Ταξινόμηση και Αναζήτηση
Διαφάνειες παρουσίασης Πίνακες (συνέχεια) Αριθμητικοί υπολογισμοί Αναδρομή.
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Λεξικό, Union – Find Διδάσκοντες: Σ. Ζάχος, Δ. Φωτάκης Επιμέλεια διαφανειών: Δ. Φωτάκης Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εθνικό Μετσόβιο.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ - 4ο εξάμηνο1 Ανάλυση Αλγορίθμων b Θέματα: Ορθότητα Χρονική αποδοτικότητα Χωρική αποδοτικότητα Βελτιστότητα b Προσεγγίσεις:
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Ασυμπτωτικός Συμβολισμός
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Διαφάνειες παρουσίασης #2
1 Τμήμα Μηχανικών Ηλεκτρονικών Υπολογιστών και Πληροφορικής Πανεπιστήμιο Πατρών ΟΝΤΟΚΕΝΤΡΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΙΙ (C++) Πίνακες.
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
Διαφάνειες παρουσίασης Ορθότητα (συνέχεια) Τακτικοί τύποι και τύποι υποπεριοχής Πίνακες.
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ102: Τεχνολογία Λογισμικού Ι Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ102:
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
HY100 : ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΕΠΙΣΤΗΜΗ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΟΝΤΕΣ Αντώνιος Σαββίδης, Χρήστος.
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΛΟΓ201: Τεχνολογία Λογισμικού ΙΙ Διδάσκων: Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΛΟΓ201:
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Διδάσκοντες:Γιάννης Μαΐστρος Στάθης Ζάχος Νίκος Παπασπύρου
ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου
Το ερώτημα "τι είναι επιστήμη;" δεν έχει νόημα χωρίς κάποιο χρονικό προσδιορισμό Όταν τις δεκαετίες του 80 και του 90 κατέρρεε το αποκαλούμενο ανατολικό.
Η Γλώσσα Pascal Υποπρογράμματα
Η τακτοποίηση των κόμβων μίας δομής με μία ιδιαίτερη σειρά είναι μία πολύ σημαντική λειτουργία που ονομάζεται ταξινόμηση (sorting) ή διάταξη (ordering).
Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΑΕΠΠ
ΜΑΘΗΜΑΤΙΚΑ Γ΄ ΓΥΜΝΑΣΙΟΥ ΠΕΡΙΕΧΟΜΕΝΑ Βασίλης Γκιμίσης ΔΙΑΦΑΝΕΙΕΣ
اعداد الأستاذ/ عبدالرؤوف أحمد يوسف
Μεταγράφημα παρουσίασης:

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες:Στάθης Ζάχος Νίκος Παπασπύρου 1Νίκος ΠαπασπύρουΠρογραμματισμός Ηλεκτρονικών Υπολογιστών Διαφάνειες παρουσίασης #6 Δυαδική αναζήτηση (επανάληψη) Ταξινόμηση Πολυδιάστατοι πίνακες Μαγικά τετράγωνα Αριθμητικοί υπολογισμοί

2Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυαδική αναζήτηση(i) u Προϋπόθεση: ο πίνακας να είναι ταξινομημένος, π.χ. σε αύξουσα διάταξη u Είναι πολύ πιο αποδοτική από τη γραμμική αναζήτηση l Στη χειρότερη περίπτωση απαιτούνται a log 2 n + b βήματα (a, b σταθερές, n το μέγεθος του πίνακα)

3Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυαδική αναζήτηση(ii) u Το πρόγραμμα program binsearch(input,output); const n=100; var i,howmany,mid,first,last : 0..n; a : array [1..n] of integer; x : integer; found : boolean; begin Μήνυμα επικεφαλίδα και οδηγίες χρήσης ; read(howmany); (* κατά αύξουσα σειρά *) for i:=1 to howmany do read(a[i]); read(x); first:=1; last:=howmany; found:=(x=a[first]) or (x=a[last]);

4Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυαδική αναζήτηση(iii) u Το πρόγραμμα (συνέχεια) while not found and (first<last) do begin mid:=(first+last) div 2; if x<a[mid] then begin last:=mid-1; first:=first+1 end else begin first:=mid; last:=last-1 end; found:=(x=a[first]) or x=a[last]) end

5Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυαδική αναζήτηση(iv) u Το πρόγραμμα (συνέχεια) if found then if x=a[first] then writeln(first) else writeln(last) else writeln('not found') end.

6Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Δυαδική αναζήτηση(v) u Εναλλακτική μορφή κώδικα αναζήτησης found := false; while not found and (first<=last) do begin mid := (first+last) div 2; found := x=a[mid]; if x<a[mid] then last:=mid-1 else first:=mid+1 end; if found then writeln(mid) else writeln('not found')

7Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Ταξινόμηση(i) u Πρόβλημα: να αναδιαταχθούν τα στοιχεία ενός πίνακα ακεραίων σε αύξουσα σειρά u Μια από τις σημαντικότερες εφαρμογές των ηλεκτρονικών υπολογιστών u Βασική διαδικασία: εναλλαγή τιμών procedure swap(var x, y : integer); var save : integer; begin save:=x; x:=y; y:=save end

8Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Ταξινόμηση(ii) u Μέθοδος της φυσαλίδας for i:=1 to n-1 do for j:=n-1 downto i do if a[j] > a[j+1] then swap(a[j], a[j+1]) u Πλήθος συγκρίσεων (n–1) + (n–2) = n (n–1) / 2 της τάξης του n 2  O(n 2 )

9Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Ταξινόμηση(iii) u Παράδειγμα εκτέλεσης

10Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολυδιάστατοι πίνακες u Παράδειγμα var a : array [1..10,5..16] of integer;... a[1,13] := 42; for i:=1 to 10 do for j:=5 to 16 do read(a[i,j]) u Ισοδύναμος ορισμός και χρήση var a : array [1..10] of array [5..16] of integer;... a[i][j]...

11Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολλαπλασιασμός πινάκων(i) u Δίνονται οι πίνακες: a (m  n), b (n  q) u Ζητείται ο πίνακας: c = a b (m  q) όπου:

12Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Πολλαπλασιασμός πινάκων(ii) u To πρόγραμμα var a : array [1..m,1..n] of real; b : array [1..n,1..q] of real; c : array [1..m,1..q] of real;... for i:=1 to m do for j:=1 to q do begin c[i,j] := 0; for k:=1 to n do c[i,j] := c[i,j] + a[i,k]*b[k,j] end

13Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Μαγικά τετράγωνα(i) u Διδιάστατοι πίνακες (n  n) που περιέχουν όλους τους φυσικούς μεταξύ 0 και n 2 –1 l το άθροισμα των στοιχείων κάθε στήλης, γραμμής και διαγωνίου είναι σταθερό u Πρόβλημα: κατασκευή μαγικού τετραγώνου (n  n) για περιττό n

14Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Μαγικά τετράγωνα(ii)

15Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Μαγικά τετράγωνα(iii) u Κατασκευή για περιττό n i:=n div 2; j:=n; k:=0; for h:=1 to n do begin j:=j-1; a[i,j]:=k; k:=k+1; for m:=2 to n do begin j:=(j+1) mod n; i:=(i+1) mod n; a[i,j]:=k; k:=k+1 end end; for i:=0 to n-1 do begin for j:=0 to n-1 do write(a[i,j]:4); writeln end

16Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Αριθμητικοί υπολογισμοί(i)  Τύπος real l προσεγγίσεις πραγματικών αριθμών trunc : ακέραιο μέρος (αποκοπή) round : στρογγυλοποίηση u Παράσταση κινητής υποδιαστολής l mantissa και εκθέτης± m  2 x όπου0.5  m < 1 και x  Z ή m = x = 0 l το m είναι περιορισμένης ακρίβειας, π.χ. 8 σημαντικά ψηφία

17Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Αριθμητικοί υπολογισμοί(ii) u Αριθμητικά σφάλματα = γιατί; u Αναπαράσταση των αριθμών     2 –29   2 20 άθροισμα   2 20

18Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Εύρεση τετραγωνικής ρίζας(i)  Χωρίς χρήση της συνάρτησης sqrt u Μέθοδος Newton l Δίνεται ο αριθμός x > 0 l Έστω προσέγγιση y της ρίζας, με y   x Έστω z = x / y l Tο z είναι προσέγγιση της ρίζας, με  x  z l Για να βρω μια καλύτερη προσέγγιση, παίρνω το μέσο όρο των y και z l Επαναλαμβάνω όσες φορές θέλω

19Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Εύρεση τετραγωνικής ρίζας(ii) u Ακολουθία προσεγγίσεων u Παράδειγμα:  37 ( ) y 0 = 1y 4 = y 1 = 19y 5 = y 2 = y 6 = y 3 =

20Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Εύρεση τετραγωνικής ρίζας(iii) function sqroot(x : real) : real; const eps = ; (* 1E-5 *) var old, new : real; begin new := 1; repeat old := new; new := (old + x/old) / 2 until (* συνθήκη τερματισμού *) ; sqroot := new end

21Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Εύρεση τετραγωνικής ρίζας(iv) u Εναλλακτικές συνθήκες τερματισμού l Σταθερός αριθμός επαναλήψεων n = 20 Επιτυχής εύρεση ρίζαςλάθος! sqr(new) = x l Απόλυτη σύγκλιση abs(sqr(new)-x) < eps l Σχετική σύγκλιση abs(sqr(new)-x) / new < eps

22Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Εύρεση τετραγωνικής ρίζας(v) u Εναλλακτικές συνθήκες τερματισμού l Απόλυτη σύγκλιση κατά Cauchy abs(new-old) < eps l Σχετική σύγκλιση abs(new-old) / new < eps

23Νίκος Παπασπύρου Προγραμματισμός Ηλεκτρονικών Υπολογιστών Προκαθορισμένες συναρτήσεις