1 / 43

C/C++ a Pascal

C/C++ a Pascal. Ing . Peter Pi štek , Ceng . Obsah. Vsuvka na základe podnetu z minulého stretnutia Fotky fakulty Vývojové prostredia Porovnanie príkazov C/C++ s Pascalom Príklady. Vsuvka z minulého stretnutia. Projekty súvisiace s grafikou 3D budova - http://147.175.159.181/HTML/

denton
Download Presentation

C/C++ a Pascal

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C/C++ a Pascal Ing. Peter Pištek, Ceng.

  2. Obsah • Vsuvka na základe podnetu z minulého stretnutia • Fotky fakulty • Vývojové prostredia • Porovnanie príkazov C/C++ s Pascalom • Príklady

  3. Vsuvka z minulého stretnutia Projekty súvisiace s grafikou • 3D budova - http://147.175.159.181/HTML/ • Je nutný O3Dplugin • mc2 – prvá študentská online televízia – www.mc2.sk • Multimediálne centrum STU

  4. Fakulta

  5. Vývojové prostredia • VisualStudio 2010 (MS) • http://www.softy.sk/clanok-21-microsoft-visual-studio-2010-express-web-developer.aspx • Turbo C++ Explorer (Borland) • http://www.turboexplorer.com/cpp • CodeLite • http://codelite.org/LiteEditor/Download

  6. C • Základné konštrukcie jazyka • Základné údajové šruktúry • Funkcie • Cykly a rekurzia • Práca so súbormi • Struct

  7. Prvý pohľad „Helloworld“ • program HelloWorld; • begin • {tuniecovypiseme} • writeln('Hello World'); • end. • { tumamkomentarnaviacriadkov } #include<stdio.h> int main(void) { // tuniecovypiseme printf("hello,world\n"); return 0; } /* tumamkomentar naviacriadkov*/

  8. Identifikátory + premenné • C je casesensitive jazyk ! (pom, Pom, POM, PoM) • Kľúčové slová sú vždy malými písmenami (if, for, ..) • Deklarovanie premenných (v C hocikde) int i, j=1; char c=3, d=‘a’, e=‘\n’; i=4; c=d=j=23; long k; k=12345678LU; j=0xAA; float f =3.14; f=.14; f=7E23;… var i, j: integer; c, d: char; i:=4;

  9. Dátové typy • int • long (longint) • shor (shortint) • char • float • double • longdouble • Slovíčko „unsigned“ – bezznamienkový typ (napr. unsignedint) • Integer • Longint • Shortint • byte/char • Single • Real • Double

  10. Špeciálne znaky \n 0x0A nový riadok (new line, linefeed) \r0x0D návrat na začiatok riadku (carriagereturn) \f0x0C nová stránka (formfeed) \t0x09 tabulátor (tab) \b0x08 posun doľava (backspace) \a0x07 písknutie (allert) \\0x5C spätné lomítko (backslash) \'0x2C apostrof (single quote) \00x00 nulový znak (nullcharacter)

  11. Unárne a binárne operátory • Priradenie je unárny operátor (čiastočne aj + a -) • X= +5; • Sčítanie (+) • Odčítanie (-) • Násobenie (*) • Reálne delenie (/) • Celočíselné delenie (/) • Modulo (%) int/int->celočíselné int/float ->reálne float/int ->reálne float/float ->reálne

  12. Špeciálne operátory a operátory priradenia • Dekrement (--) a inkrement (++) • x++, ++x; -> j=x++; j=++x; • x += vyraz • x -= vyraz • x *= vyraz • x /= vyraz • x %= vyraz

  13. Funkcie a procedúry • C nemá procedúry • Povinná funkcia main() • Ak funkcia nemá mať návratovú hodnotu tak použiť void Návratový_typmeno_f (argumenty) {telofunkcie} intsucet (int a, int b) {return a+b;}

  14. Deklarovanie a použitie funkcií voidmain () {inti,j,k; k=B(i,j); k=A(j,i); } int A (int a, int b) {return B(a,b);} int B (int a, int b) {return a+b;} • int A (int a, int b) • {return B(a,b);} • int B (int a, int b) • {return a+b;} voidmain () {inti,j,k; k=B(i,j); k=A(j,i); } • int A (int a, int b); • int B (int a, int b); voidmain () {inti,j,k; k=B(i,j); k=A(j,i); } • int A (int a, int b) • {return B(a,b);} • int B (int a, int b) • {return a+b;}

  15. Vstup a výstup #include <stdio.h>usescrt; intgetchar () void putchar (int c) scanf(“…”, …)read/readln printf(“…”, …) write/writeln scanf (“%d”, &i); read(i); readln(i); printf (“%d”, i); write (i); scanf (“%d %d %f, &i,&j,&k); printf (“%d je sucetcisel \”%d\” a \”%d\””,i+j,i,j); printf (“Pracovalina 120%%”);

  16. Špeciálne znaky formátovacieho reťazca cznak d desiatkové číslo typu signedint ld desiatkové číslo typu signedlong u desiatkové číslo typu unsignedint lu desiatkové číslo typu unsignedlong f float (pre printf() tiež double) Lflongdouble lfdouble x hexadecimálne číslo malými písmenami X hexadecimálne číslo veľkými písmenami o osmičkové číslo s reťazec Všade treba samozrejme uviesť „%“ printf(“Znak ‘%c’ ma ASCII kod %d (%XH)\n”,c,c,c); Znak ‘A’ ma ASCII kod 65 (41H) – a odentruje

  17. Formátovanie špeciálnych reťazcov • %2d i:2 • 1 • 12 • %6:2f i:6:2 • printf("Kolko stalo %s pivo?\n", "jedno");

  18. Booleovské výrazy C PascalTypu int – FALSE=0 TRUE=1 == =/extrémne častá chyba != <> && AND || OR ! NOT < < > > <= <= >= >=

  19. Zátvorky a podmienené výrazy • (y != 0) && (x / y < z) • ((c >= 'A') && (c <= 'Z')) • j= j && (i==1); • podmienka ? vyraz_1: vyraz_2; • Akpodmienkatak vyraz_1 inak vyraz_2 • k = (i > j) ? i : j; • Operátor čiarky • j=(i++,i-j);

  20. Podmienka if if (podmienka) prikaz; if podmienka then prikaz if (podmienka) if podmienka then { begin prikaz_1; prikaz_2; … prikaz_1; prikaz_2;… } end; if (podmienka) prikaz_1; if podmienka then prikaz_1 else prikaz_2; else prikaz_2; if ((c = getchar())>= 'A' && c <= 'Z') printf("%d\n” ,c );

  21. Switch (case) podmienka switch (podmienka){ case hodnota1: prikaz_1; break; case hodnotan: prikaz_n; break; default: prikaz; break; } case podmienka of hodnota1: prikaz_1; hodnotan: prikaz_n; else prikaz; end;

  22. while • break, continue C Pascal while (podmienka) while (podmienka)do prikaz; prikaz; • {} a begin/end • Testujepodmienkupredprechodom int c; while ((c = getchar()) != '*') { if (c != ' ') putchar(c); }

  23. do-while • Testujepodmienkupredprechodom (minimálne 1x) do prikazy; while (podmienka);

  24. For cyklus • Výhodou v C, že môže byť nekonečný  for (start_vyraz;stop_vyraz;iter_vyraz) prikaz; for (inti=1;i<=10;i++) {prikazy} for i:=1 to 10 do begin prikazy; end; for (i=1;j<=10;k++) for (i=1,j=5;(j<=10)&&(i>5);k++)

  25. Transformácia na while for (vyraz_start; vyraz_stop; vyraz_iter) prikaz; vyraz_start; while (vyraz_stop) { prikaz; vyraz_iter; }

  26. Rekurzia intfakt(int n) { return ((n <= 0) ? 1 : n * fakt(n - 1)); }

  27. Mini opakovanie switch(getchar()) { case 'a' : putchar('a'); case 'b' : putchar('b'); case 'c' : putchar('c'); default : putchar('x'); } x, y: double; printf("Zadajte2realnecisla: "); scanf("%lf %lf", x, y); printf("%.2lf\n", (x > y) ? x : y); for (i = 1,i <= n,i++) { for (j = 2, j <=i,j++) printf("%d ", &j); putchar('\n'); }

  28. Súbory • Zo súboru, z obrazovky ( CTRL + Z – koniec súboru) • Štruktúra FILE FILE *s; var s:text; s=fopen(“meno”,”r”); assign (f,’meno’); fflush (s); fclose (s); close (s); • Režimy“r”, “w”, “rb”, “wb”, “a”, “r+”, “w+”, “a+” if (s==NULL) printf (“chyba”); EOLN = \n EOF = EOF (-1 musí byť int) feof () – true/false – používa sa pri binárnych súboroch 0xFF = EOF

  29. Súbory c = getc(f); c = getchar(); putc(c, f); putchar(c); fscanf(f, "format", argumenty); Readln (f,premenna);/read fprintf(f, "format", argumenty); Writeln (f,premenna);/write • Súbory treba zatvárať ! • funkcia fscanf() vracia počet úspešne prečítaných položiek (v prípade konca súboru vracia hodnotu EOF)

  30. Štandardný vstup a výstup • stdin, stdout, stderr • getc (stdin) == getchar() • fprintf (stdout, ....) == printf (....) • Význam – presmerovanie na iné vstupy/výstupy • Načítate znak, ktorý už viete, že nechcete ? ungetc(c, fr) -> vráti znak späť do bufferu

  31. Typové konverzie • implicitná/explicitná + funkcie atoi,.. int unsignedint unsignedint long long unsignedlong unsignedlong float float double double longdouble int i=‘a’ + 2; (int)char_vyraz- prevod znaku na ordinálne číslo (char) int_vyraz- prevod ordinálneho čísla na znak (int) double_vyraz- odrezanie desatinnej časti (double) int_vyraz- prevod celého čísla na reálne (double) float_vyraz- zväčšenie presnosti

  32. Definovanie konštánt • #define MAX 100 • #define MOD % • #define SUBOR “meno.txt” • printf (“toto je MAX”); printf (“toto je %d”,MAX); • #define cena 50 • #undefcena • #define cena 49 • #define ERROR {printf (“ejbistu ..chyba\n”);} • #define getchar() getc(stdin)

  33. Preddefinované makrá • makrá v ctype.h - makránaurčenietypuznaku • isalnum - vrátiznak, ak je znakčíslicaalebopísmeno • isalpha - vrátiznak, ak je znakmaléaleboveľképísmeno • isascii - vráti 1, ak je znak ASCII znak (0 až 127) • iscntrl - vrátiznak, ak je znak Ctrl znak (1 až 26) • isdigit - vrátiznak, ak je znakčíslica • isprint - vráti 1, ak je znaktlačiteľný (32 až 126) • isspace - vrátiznak, ak je znakbielyznak (medzera, tabulátor...) • isupper - vrátiznak, ak je znakveľképísmeno • islower - vrátiznak, ak je znakmalépísmeno • tolower - konverzia na malé písmeno • toupper - konverzia na veľké písmeno • toascii - prevod na ASCII - len najnižších 7 bitov je významných

  34. Typedef a polia • Definuje nový typ (Pascal type) • Vhodný pri definovaní vlastných/zložitejších typov typedefintinteger; typedef float *P_foat; P_float f; • typpremenna[rozsah] • Vždy indexácia od 0 po rozsah-1 • „rozsah“ musí byť známy už v čase prekladu

  35. Príklady definície polí Pascal X: array[0..9] of integer; #defineN 10 int x[N], y[N+1], z[N*2]; • x má 10 prvkov (0..9), y má 11 prvkov (0..10), z má 20 prvkov (0..19) • Inicializácia v definícií – int x [3]={1,2,3}; • Pole ako parameter funkcie – void funkcia (int pole[]) • Viacrozmerné polia – int x [5][4][5][7];

  36. Reťazce • Poliatypu char • Ukončené sú vždy \0 – ukončovací znak • Ak by chýbal tak číta reťazec až kým nenarazí naň niekde v pamäti char c [4]=“ahoj” – chyba char c [5]=“ahoj” – ok scanf (“%s”,c) – tunemusí byť & %10s – načíta 10 znakov char s[11]; for(i = 0; i < 11-1; i++) s[i] = '*'; s[10-1] = '\0';

  37. Práca s reťazcami • <string.h> • intstrlen(char *s); • char *strcpy(char *s1, char *s2); • char *strcat(char *s1, char *s2); • char *strchr(char *s, char c); • intstrcmp(char *s1, char *s2); • char *strstr(char *s1, char *s2); • char *strncpy(char *s1, char *s2, int max); • char *strrchr(char *s, char c); • intatoi(char *s); • longatol(char *s); • floatatof(char *s);

  38. Práca s reťazcami • char *gets(char *s); (fgets) • intputs(char *s); (fputs)

  39. Štruktúry typedefstructmiery{ intvyska; float vaha; } MIERY; MIERY pavol, jan, peter; TBookRec = Record Title, Author, ISBN : String; Price : Real; End; Kniha: TBookRec typedefstruct { intvyska; float vaha; }MIERY; MIERY pavol,jan, peter; struct{ intvyska[20]; float vaha; } peter,pavol,jan; struct miery { intvyska; float vaha; }; struct mierypeter; structmiery{ intvyska; float vaha; } peter,pavol,jan; Prisupnapr. peter.vyska[1]=198;

  40. Vymenované typy typedefenum{ MODRA, CERVENA, ZELENA, ZLTA } FARBY; FARBY c; c=MODRA; c=2; typedefenum{ MODRA = 0, CERVENA = 4, ZELENA = 2, ZLTA } FARBY;

  41. Príklad #include <stdio.h> int main(intargc, char *argv[]) { if(argc == 2 && !strcmp(argv[1], "-h")) printf("help\n"); else printf("program\n"); return 0; }

  42. int main(intargc,char** argv){ int o; while ((o = getopt(argc, argv, "hif:")) != -1) { switch (o) { case 'h': //help help(); exit(0); case 'f': //spracovaniesuboru printf("Using file name: %s\n",optarg); read_subor(optarg); break; case 'i': //z klavesnice createMatrix(); break; default: printf("Neznamy argument: %c\n",o); break; }}return 0;}

  43. Ďakujem za pozornosť Nabudúce pointery, základy C++, základy práce zo sieťou Úvod do sieti

More Related