double sum(double a, double b) { return(a+b); } double my_avg(double a, double b) { return(sum(a, b)/2.0); }

Σχετικά έγγραφα
Προγραμματισμός Υπολογιστών με C++

Βιβλιοθήκες Αφηρημένοι τύποι δεδομένων. Προγραμματισμός II 1

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Β' Περιόδου Θέµα 1. (α')

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

Προγραμματισμός Ι (ΗΥ120)

Προεπεξεργαστής της C. C Preprocessor. Προγραμματισμός II 1

Προεπεξεργαστής C. Προγραμματισμός Ι 1

Επανάληψη για τις Τελικές εξετάσεις

Προγραµµατισµός Ι (ΗΥ120)

Προγραμματισμός Ι (ΗΥ120)

Επεξεργασία Αρχείων Κειµένου

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

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

int a[5]; a[0] a[1] a[2] a[3] a[4] 15/10/2009

Διάλεξη 18η: Διαχείρηση Αρχείων

Οι συναρτήσεις στη γλώσσα C

ιαφάνειες παρουσίασης #6 (β)

(programming interfaceή/και application programming interface API).

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ενδεικτικές Απαντήσεις Εξετάσεων Α' Περιόδου Θέµα 1. (α') 2 - ii 3 - iii 4 - iv

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Εκφωνήσεις ασκήσεων εργαστηρίου 1

Ενδεικτικές λύσεις και στατιστικά

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

Προγραμματισμός Ι (ΗΥ120)

CE121 Προγραµµατισµός 2. Εισαγωγή σε Makefiles. CE121 -

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

Ι Ανασκόπηση και εμβάθυνση Μερικά πιο προχωρημένα θέματα. ΙΙ Τα αρχεία δεδομένων στη C

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ. Διεργασίες και Νήματα Εργαστηριακές Ασκήσεις

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Η Γλώσσα C Μία Σφαιρική Ανασκόπηση

υναµική έσµευση Μνήµης (συν.) ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 2 Εφαρµογή

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

Διάλεξη 15η: Αναδρομή, μέρος 1ο

Προγραμματισμός Ι (ΗΥ120)

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

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

Συμβολοσειρές Ορίσματα στη main()

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

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

Μεθόδων Επίλυσης Προβλημάτων

Μεθόδων Επίλυσης Προβλημάτων

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

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

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

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

make Προγραμματισμός II 1

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Προγραμματισμός Ι (ΗΥ120)

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

ΕΠΕΞΕΡΓΑΣΙΑ ΑΡΧΕΙΩΝ Λέµε αρχείο

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. ( ιάλεξη 13) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

(Κεφάλαιο 2.7 και 12) Αρχεία στην C. (Διάλεξη 15)

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

Συναρτήσεις και διαδικασίες

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Επανάληψη. Εντολές while, for, do-while

ιορθώσεις επί της 2 ης έκδοσης εκτύπωσης 2002

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

ΑΣΚΗΣΗ 2: ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΣΤΗ C

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

H ΓΛΩΣΣΑ C. Μάθηµα 16: Είσοδος/Έξοδος: Συναρτήσεις Eξόδου. ηµήτρης Ψούνης

Μεθόδων Επίλυσης Προβλημάτων

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Μεθόδων Επίλυσης Προβλημάτων

Συστήματα Παράλληλης & Κατανεμημένης Επεξεργασίας

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

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

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

Transcript:

Προγραµµατισµός Ι (ΗΥ120) ιάλεξη 24: Παραδείγµατα

Βιβλιοθήκες: Αρχικός κώδικας 2 double sum(double a, double b) { return(a+b); double my_avg(double a, double b) { return(sum(a, b)/2.0); int main (int argc, char *argv[]) { double in1 = 3.0, in2 = 4.0; printf( Avg = %g\n, my_avg(in1, in2)); return(0);

Βιβλιοθήκες: Header File 3 my_avg.h #ifndef _MY_AVG_INCLUDE_ #define _MY_AVG_INCLUDE_ /* returns the average of a and b */ double my_avg(double a, double b); #endif

Βιβλιοθήκες: Υλοποίηση 4 my_avg.c static double sum(double a, double b) { return(a+b); double my_avg(double a, double b) { return(sum(a, b)/2.0);

Βιβλιοθήκες: Πρόγραµµα 5 my_prog.c #include my_avg.h int main (int argc, char *argv[]) { double in1 = 3.0, in2 = 4.0; printf( Avg = %g\n, my_avg(in1, in2)); return(0);

ηµιουργία Χρήση Βιβλιοθήκης 6 ηµιουργία object file gcc -Wall -c my_avg.c -o my_avg.o ηµιουργία βιβλιοθήκης ar rcs libmy_avg.a my_avg.o ηµιουργία προγράµµατος gcc -Wall my_prog.c -o my_prog -lmy_avg -L.

Αρχεία Πρόγραµµα που: Παίρνει σαν όρισµα από γραµµή εντολών όνοµα αρχείου Κάνει σχετικούς ελέγχους και τυπώνει µηνύµατα λάθους Το αρχείο περιέχει 2 σχήµατα 10 γραµµές x 11 στήλες το καθένα (η 11η στήλη περιέχει \n) Αντιγράφει το 1ο σχήµα ακριβώς κάτω από το 2ο. ουλεύει χαρακτήρα προς χαρακτήρα. 7

Παράδειγµα εισόδου 8.-. /'v'\ (/ \) ='="="===< _ o \ =\ \ (\ / \ / ~~~~~~

#include<stdio.h> #include<stdlib.h> #define SHAPE_LENGTH 10 #define SHAPE_HEIGHT 10 9 #define NUM_SHAPES 2 int main (int argc, char *argv[]) { FILE *infile; int i,j; int readpos, writepos; char c; if (argc < 2) { printf("too few arguments."); exit(1); if (argc > 2) { printf("too many arguments."); exit(1);

infile = fopen(argv[1], "r+"); if (infile == NULL) { printf("could not open file %s", argv[1]); exit(2); readpos = 0; writepos = (SHAPE_LENGTH+1)*SHAPE_HEIGHT*NUM_SHAPES; // +1 for the newlines 10 for ( i=0; i<shape_length; i++) { for (j=0; j<=shape_height; j++) { // <= to account for the new line fseek(infile, readpos++, SEEK_SET); c = fgetc(infile); fseek(infile, writepos++, SEEK_SET); fputc(c, infile); fclose(infile); return 0;

υαδικοί τελεστές #include <stdio.h> int main (int argc, char *argv[]) { 11 void rotateleft (int *val) { const int mask = 0x80000000; int leftmost; leftmost = *val & mask; *val = *val << 1; if (leftmost) *val = *val 0x00000001; else *val = *val & 0xFFFFFFFE; int a = 0x80808080; printf("a initially 0x%8x\n", a); rotateleft(&a); printf("a after rotateleft 0x%8x\n", a); rotateleft(&a); printf("a after another rotateleft 0x%8x\n", a); return(0);

Αναδροµή: Εκτύπωση #include <stdio.h> void printd (int n) { if (n < 0) { putchar('-'); n = -n; if (n / 10) printd(n/10); putchar (n % 10 + '0'); int main (int argc, char *argv[]) { int a = 4382354; printd(a); return(0); 12

Αναδροµή: Μεταθέσεις void PermuteWithFixedPrefix(char *str, int prefix) { int i; 13 if (prefix == strlen(str)) printf("%s\n", str); else for (i = prefix; i < strlen(str); i++) { ExchangeChars(str, prefix, i); PermuteWithFixedPrefix(str, prefix+1); ExchangeChars(str, prefix, i);

Αναδροµή: Μεταθέσεις #include <stdio.h> void ExchangeChars(char *str, int pos1, int pos2) { char tmp; 14 tmp = str[pos1]; str[pos1] = str[pos2]; str[pos2] = tmp; int main (int argc, char *argv[]) { char phrase[] = "ABCDEFG"; PermuteWithFixedPrefix(phrase, 0); return(0);