242 -ΕισαγωγήστουςΗ/Υ

Σχετικά έγγραφα
242 -ΕισαγωγήστουςΗ/Υ

242 -ΕισαγωγήστουςΗ/Υ

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

Συµβολοσειρές - Strings

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 8 Ασκήσεις Πινάκων Ταξινόμηση Αναζήτηση. Γιώργος Λαμπρινίδης

Δομές Δεδομένων & Αλγόριθμοι

"ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Η/Υ" (ΕΜ102), ΕΡΓΑΣΙΑ 1η

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων ΟΡΙΣΜΟΣ ΣΥΝΑΡΤΗΣΗΣ ΜΕ ΕΠΙΣΤΡΟΦΗ ΤΙΜΗΣ #include <iostream.h> int compare_numbers(int num1, int num2)

Θέµα 1 (15%): (απαιτούµενος χρόνος < 15 λεπτά)

Κατανεμημένος και Παράλληλος Προγραμματισμός

Δομές Δεδομένων & Αλγόριθμοι

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό με C++

Εργαστήριο 2: Πίνακες

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Εχουμε ήδη συναντήσει μονοδιάστατους πίνακες, οι οποίοι ορίζονται ως εξής:

Προγραμματισμός Υπολογιστών με C++

1. ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++

ΑΤΣΑΛΑΚΗ ΞΑΝΘΟΥΛΑ ΕΡΓΑΣΤΗΡΙΟ 2

Δομές Δεδομένων και Αλγόριθμοι

ιαφάνειες παρουσίασης #4

2 η Υλοποίηση του ΑΤΔ συνδεδεμένη λίστα με πίνακα Κόμβοι από δεδομένα και θέσεις πίνακα ????

Δομές Δεδομένων & Αλγόριθμοι

Πίνακες. Οι πίνακες αποτελούν ένα σηµαντικό δοµηµένο τύπο δεδοµένων (structured data type) ή πιο απλά µία δοµή δεδοµένων (data structure).

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Ερώτημα Α 1. Να γράψετε τις εντολές που πραγματοποιούν τα ακόλουθα:

Διάλεξη 10η: Πολυδιάστατοι Πίνακες

ΠΛΗ111. Ανοιξη Μάθηµα 9 ο. Ταξινόµηση. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

Εισαγωγή στον Προγραμματισμό

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 10/3/2017

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

#4. Heaps (σωροί), η ταξινόμηση HeapSort, η δομή std::priority_queue της STL

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 6: Πίνακες. Κ.

A[0] = 0; /* To μηδέν δεν έχει διαιρέτες */ for (i=1; i<n; i++) { S=0; for (d=1; d<=i; d++) if (i % d == 0) S += d; A[i] = S; }

Αλγόριθμοι Ταξινόμησης Μέρος 1

Δομημένος Προγραμματισμός

Εργαστήριο 3 Εντολή for while, do while

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Εισαγωγή στην πληροφορική

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

ΠΕΡΙΣΣΟΤΕΡΑ ΠΑΡΑΔΕΙΓΜΑΤΑ ΜΕ ΧΡΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. ΠΑΡ 1 ΔΙΑΒΑΣΜΑ-ΕΚΤΥΠΩΣΗ ΕΥΡΕΣΗ ΜΕΣΟΥ ΟΡΟΥ ΜΟΝΟΔΙΑΣΤΑΤΟΥ ΠΙΝΑΚΑ ΜΕ ΧΡΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ #include <stdio.

Προγραμματισμό για ΗΜΥ

ΗΥ-150. Ταξινόµηση και Αναζήτηση

Δομημένος Προγραμματισμός

είκτες και Πίνακες (2)

Κατανεμημένος και Παράλληλος Προγραμματισμός. Εισαγωγή στο MPI. Εγκατάσταση MPICH σε ένα ΗΥ 6/3/2016

Δομημένος Προγραμματισμός

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδηµαϊκό έτος ΑΣΚΗΣΗ #5 Προτεινόµενη λύση

ΠΙΝΑΚΕΣ ΔΥΟ ΔΙΑΣΤΑΣΕΩΝ

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό

Εργαστήριο 6: Αναζήτηση, Ανάλυση Πολυπλοκότητας

ΠΙ Ν Α Κ Ε Σ (arrays)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Εισαγωγή στον Προγραμματισμό με C++

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Κατανεμημένα και Παράλληλα Συστήματα (εργαστήριο) Παραδείγματα με openmp

Σημειώσεις δεύτερης εβδομάδας

public: Horse(){} Horse(double h,string c,string n,int a):animal(n,a){ itsheight=h; itscolor=c; } void fonialogou(){ cout<<"xlimintrisma"<<endl;} };

Διάλεξη 17η: Ταξινόμηση και Αναζήτηση

Διάλεξη 11η: Δείκτες, μέρος 1

Γλώσσα Προγραμματισμού C

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Να διορθωθούν τα εξής αρχεία scr2.chgeorg, scr2.gmotsias, scr2.ngrammen. cat scr2.*

Εργαστηριακή Άσκηση 1

Διδάσκων: Παναγιώτης Ανδρέου

Δομημένος Προγραμματισμός (ΤΛ1006)

Εργαστήριο 10 Κλάσεις

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Εισαγωγή στον Προγραμματισμό με C++

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Εισαγωγή στον Προγραμματισμό. Ενότητα 9: Συναρτήσεις Εμβέλεια

Οντοκεντρικός Προγραμματισμός

Work12 REMARKS script file lab10 ask1-5 tabbing, ls2, urlparse, times, dates_correct

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ανάπτυξη και Σχεδίαση Λογισμικού

Αʹ. Πίνακες. Άσκηση 1. Λύση. Άσκηση 2. Λύση. Ασκήσεις Εργαστηρίου Προγραμματισμού

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

19. ΠΡΟΤΥΠΑ (TEMPLATES)

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

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #5

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Προαπαιτούμενες Ασκήσεις 5 ου Εργαστηρίου. Dose stoixeio (integer) : 25 Found stoixeio in position 7 Dose stoixeio (integer) :94 Value not found

Αλγόριθμοι ταξινόμησης

Τμήμα Εφαρμοσμένης Πληροφορικής

Αναφορές, είκτες και Αλφαριθμητικά

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

10 ΑΡΙΘΜΗΤΙΚΗ ΟΛΟΚΛΗΡΩΣΗ

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

aapostol.scr2, scr2.kdeligia

Εισαγωγή στον Προγραμματισμό

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Transcript:

1 242 -ΕισαγωγήστουςΗ/Υ ΤµήµαΜαθηµατικών, Πανεπιστήµιο Ιωαννίνων Άρτια Α.Μ. (0-2-4-6-8)

Πίνακες σαν παράµετροι 2

Πίνακες σαν παράµετροι 3 Πίνακες σαν παράµετροι Περνάµε ένα πίνακα σαν παράµετρο σε µια συνάρτηση µε το όνοµα του πίνακα χωρίς τις παρενθέσεις Π.χ int SomeArray[100]; SomeFunction( SomeArray, 100 ); Η διάσταση του πίνακα συνήθως περνάει σαν παράµετρος Πίνακες περνάνε σαν παράµετροι διεύθυνσης Το όνοµα του πίνακα είναι η διεύθυνση του πρώτου στοιχειού του πίνακα Η συνάρτηση γνωρίζει που είναι υποθηκευµένος ο πίνακας Μπορεί να τροποποιήσει τις τιµές στις θέσεις στην µνήµη που είναι ο πίνακας Περνώντας µεµονωµένα στοιχεία του πίνακα σαν παραµέτρους Περνάνε σαν παράµετροι τιµής Περνάµεστηνσυνάρτησητοόνοµαµετονδείκτη (π.χ. SomeArray[ 3 ])

4 Πίνακες σαν παράµετροι Πρωτότυπο συνάρτησης void FunctionArray(int b[], int arraysize); Ονόµατα παραµέτρων είναι προαιρετικά int b[] µπορεί να γίνει int [] int arraysize µπορεί να γίνει απλά int

Παράδειγµα 5 /* Pinakes san parametroi */ #include <iostream> #define SIZE 5 using namespace std; void ChangeArray(int b[], int size); // prototypo void ChangeElement(int e); // prototypo int main(int argc, char *argv[]) { int a[size] = {100, 150, 200, 250, 300}; // arxikopoihsh int i; cout<<"paradeigma pinaka kai stoixeiou pinaka san parametroi\n"; cout<<"o arxikos pinakas: \n"; for (i = 0; i < SIZE; i++) { cout<<a[i]<<" "; cout<<endl;

Παράδειγµα 6 συνέχεια /* tropopoishsh pinaka poy pernaei olos san parametros dieythynshs */ ChangeArray(a, SIZE); cout<<"o tropopoihmenos pinakas: \n"; for (i = 0; i < SIZE; i++) { cout<<a[i]<<" "; cout<<endl; cout<<"blepoume oti o pinakas allakse (ka8e stoixeio epi 2)"<<endl; /* memonomeno stoixeio san parametros p.x a[2] */ cout<<"\ntimh tou a[2] sto main prin thn klhsh: "<<a[2]; ChangeElement(a[2]); // klhsh me parametro timhs to a[2] cout<<"\ntimh tou a[2] sto main meta thn klhsh: "<<a[2]; cout<<"\nblepoume oti den allakse sto main: "<<a[2]<<endl; system("pause"); return 0;

Παράδειγµα 7 συνέχεια // synarthsh ChangeArray, h dieythynsh "b" einai idia me thn dieythynsh"a" void ChangeArray(int b[], int size) { int j; for (j = 0; j < size; j++) { b[j] *= 2; // synarthsh ChangeElement, h dieythynsh "e" einai topiko antigrafo toy a[2] void ChangeElement(int e) { e=e*2; cout<<"\nnea timh ths aparametrou e<-a[2] sthn ChangeElement einai "<<e<<endl;

Πίνακες, συναρτήσεις -Εφαρµογή: Ταξινόµηση Ταξινόµηση Σπουδαία υπολογιστική εφαρµογή Κάθε οργανισµός ταξινοµεί κάποια δεδοµένα Ταξινόµηση µε εισαγωγή Ταξινόµηση µε επιλογή Ταξινόµησηµεσυγκρίσειςγειτονικώνστοιχείωνσεαύξουσατάξη: (Bubble sort ή Rock sort ΦυσαλίδαήΠέτρα) Αρκετά περάσµατα από τον πίνακα δεδοµένων ιαδοχικά στοιχεία συγκρίνονται Εάν σε αύξουσα σειρά (η ίδια) δεν ανταλλάσσονται Εάν σε φθίνουσα σειρά τότε ανταλλάσσονται Επαναλαµβάνουµε µέχρι όλα τα στοιχεία να ταξινοµηθούν Παράδειγµα: Αρχικά: 3 4 2 5 6 Πέρασµα 1: 3 2 4 5 6 Πέρασµα 2: 2 3 4 5 6 Μικρά στοιχεία «ανεβαίνουν» ή µεγάλα στοιχεία «κατεβαίνουν» 8

Πίνακες, συναρτήσεις - Εφαρµογή: Μέσος όρος, µέσος, πιο συχνός αριθµός 9 Μέσος όρος Μέσοςµιαςταξινοµηµένηλίστα x 1,,x n είναιο αριθµός x m x m = x (n+1)/2 αν n περιττός x m = (1/2)(x n/2 + x (1+n/2) ) αν n άρτιος 1, 2, 3, 4, 5 µέσοςείναιο3 1, 2, 3, 4, 5, 6 µέσοςείναιο3.5 Οπιοσυχνόςαριθµόςσεµίαλίστα 1, 1, 1, 2, 3, 3, 4, 5 Εδώείναιτο 1

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός /* Efarmoges: pinakes, synarthseis, mesos oros, mesos, pio syxno stoixeio */ #include <iostream> #define DATASIZE 50 #define DATARANGE 9 //dedomena sto diasthma 1-9 using namespace std; 10 /* prototypa synarthsewn */ double mean(int data[], int size); double median(int data[], int size); int mode(int freq[], int range, int data[], int size) ; void bubblesort(int data[], int size); void printarray(int data[], int size);

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός συνέχεια int main(int argc, char *argv[]) { int piosyxno; // to pio syxno stoixeio int frequency[datarange+1] = {0}; //arxikopoihsh pinaka syxnothtwn /* dedomena einai kvdikoi 1-9 */ int data[datasize] = // dedomena {2, 5, 6, 8, 7, 8, 7, 8, 8, 9, 3, 9, 8, 7, 8, 7, 1, 8, 1, 8, 9, 7, 8, 9, 9, 8, 9, 8, 9, 7, 5, 3, 5, 2, 5, 3, 9, 4, 6, 4, 7, 7, 4, 4, 2, 5, 3, 8, 7, 6}; /* epeksergasia dedomenwn */ cout<<"o mesos oros einai "<<mean(data, DATASIZE)<<endl; cout<<"\no mesos einai "<<median(data, DATASIZE)<<endl; piosyxno=mode(frequency, DATARANGE, data, DATASIZE); cout<<"to pio syxno stoixeio einai "<<piosyxno<<" kai yparxei "<<frequency[piosyxno]<<" fores"<<endl; system("pause"); return 0; 11

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός 12 συνέχεια /* ektypvsh pinaka - 10 times ana grammh */ void printarray(int a[], int n) // a pinakas, n megethos pinaka { for (int j = 0; j < n; j++) { if (j % 10 == 0) cout<<"\n"; cout<<a[j]<<" "; cout<<"\n";

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός συνέχεια /* taksinomhsh me bubble sort */ void bubblesort(int a[], int n) // a pinakas, n megethos pinaka { int pass; /* perasmata */ int hold; /* gia anatallages */ /* ta perasmata */ for (pass = 1; pass < n; pass++) { /* oi sygkriseis */ for (int j = 0; j < n - 1; j++) { /* anatallagh an xreiazetai */ if (a[j] > a[j + 1]) { hold = a[j]; a[j] = a[j + 1]; a[j + 1] = hold; 13

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός 14 συνέχεια /* synarthsh mesos oros */ double mean(int codes[], int n) // a pinakas, n megethos pinaka { int total = 0; for (int j = 0; j < n; j++) total += codes[j]; return (double) (total/n);

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός συνέχεια /* synarthsh gia ton prosdiorismoi tou mesou - xreiazetai thn taksinomhsh */ double median(int codes[], int n) // a pinakas, n megethos pinaka { cout<<"\nmh taksinomhmenos pinakas"; printarray(codes, n); /* ektypwsh */ /* taksinomhsh */ bubblesort(codes, n); cout<<"\ntaksinomhmenos pinakas"; printarray(codes, n); /* ektypwsh */ if (n%2==1) return (double) codes[n/2]; else return (double)(codes[n/2]+codes[1+n/2])/2; 15

Πρόγραµµα: Μέσος όρος, µέσος, πιο συχνός αριθµός συνέχεια /* synarthsh gia eyresh deikth megalyterhs syxnothtas */ int mode(int freq[], int range, int codes[], int n) { int maxfreq = 0; /* gia megisth syxnothta */ int maxfreqpos = 0; /* deikths megisths syxnothtas */ /* arxikopoihsh syxnothtwn */ for (int i = 1; i <= range; i++) freq[i] = 0; /* metrhma, eyresh syxnothtas kathe stoixeiou 1-9 */ for (int i = 0; i < n; i++) freq[codes[i]]++; /* eyresh theshs megisths syxnothtas */ for (int i = 1; i <= range; i++) if (freq[i] > maxfreq) { maxfreq = freq[i]; maxfreqpos = i; return maxfreqpos; 16

Πίνακες, συναρτήσεις - Εφαρµογή: Σειριακή αναζήτηση, υαδική αναζήτηση Αναζήτηση τιµής Key σε ένα πίνακα Α Σειριακή αναζήτηση Απλή Σύγκριση κάθε στοιχείου A[i] του πίνακα µε το στοιχείο Key πουαναζητάµε Χρήσιµη αναζήτηση για µικρούς και µη ταξινοµηµένους πίνακες 17

Πίνακες, συναρτήσεις - Εφαρµογή: Σειριακή αναζήτηση, υαδική αναζήτηση 18 Αναζήτηση τιµής Key σε ένα πίνακα Α υαδική αναζήτηση Οι πίνακες πρέπει να είναι ταξινοµηµένοι Σύγκριση του Α[middle] στοιχείου στην µέση του πίνακα µετοστοιχείο key Εάν ίσα, τότε βρέθηκε Εάν key < Α[middle], κοιτάµε στο αριστερό µισό του πίνακα Εάν key > Α[middle], κοιτάµε στο δεξιό µισό του πίνακα Επαναλαµβάνουµε µέχρι να βρούµε το key η να αποφασίσουµε ότι δεν υπάρχει στον Α Πολύγρήγορηµέθοδος, τοπολύ n βήµαταµε 2 n > πλήθους στοιχείων στον Α Για 1000 στοιχεία στον Α χρειάζεται 10 βήµατα

19 Πολυδιάστατοι Πίνακες Πίνακες 2 (ηπερισσοτέρων) διαστάσεων Γραµµές και στήλες (nxm πίνακας) 3x4πίνακας Γραµ. 0 Γραµ. 1 Γραµ. 2 στήλη 0 στήλη 1 στήλη 2 στήλη 3 a[ 0 ][ 0 ] a[ 1 ][ 0 ] a[ 2 ][ 0 ] a[ 0 ][ 1 ] a[ 1 ][ 1 ] a[ 2 ][ 1 ] a[ 0 ][ 2 ] a[ 1 ][ 2 ] a[ 2 ][ 2 ] a[ 0 ][ 3 ] a[ 1 ][ 3 ] a[ 2 ][ 3 ] Όνοµα πίνακα είκτης γραµµής είκτης στήλης

Πίνακες, συναρτήσεις - Εφαρµογές 20