Info2/2008tavasz/kuka
A MathWikiből
(Változatok közti eltérés)
14. sor: | 14. sor: | ||
** alacsony szintű memóriahozzáférés, hatékonyan fordul gépi kódra | ** alacsony szintű memóriahozzáférés, hatékonyan fordul gépi kódra | ||
** támogatja a gépfüggetlen programozást | ** támogatja a gépfüggetlen programozást | ||
+ | |||
+ | ==== Fogalmak ==== | ||
+ | |||
+ | * változók, aritmetikai kifejezések | ||
+ | * konstans | ||
+ | * műveletek | ||
+ | * relációk | ||
+ | * if, if else, for, while, do while | ||
+ | * karakteres adatok be és kivitele | ||
==== Példák ==== | ==== Példák ==== |
A lap 2008. február 15., 00:57-kori változata
A C nyelv
- története
- C programozási nyelv: Dennis Ritchie 1972, Bell Telephone Laboratories
- K&R C 1978 (Brian Kernighan, Dennis Ritchie: The C Programming Language)
- ANSI (American National Standards Institute) 1989 -> C89
- ISO (International Organization for Standardization) ISO/IEC 9899:1990 -> C90 (lényegében azonos)
- ISO 9899:1999 (ANSI 2000) -> C99
- hatás, utódok: Objective-C, C++, C#
- tulajdonságai
- általános célú, blokkstruktúrált, imperatív (utasításokból áll, melyek megváltoztatják a program állapotát), procedurális (az előbbi megvalósítása eljáráshívásokkal) nyelv
- Unixra készült, ma szinte minden platformon
- rendszerprogramok, beágyazott rendszerek, alkalmazási programok
- alacsony szintű memóriahozzáférés, hatékonyan fordul gépi kódra
- támogatja a gépfüggetlen programozást
Fogalmak
- változók, aritmetikai kifejezések
- konstans
- műveletek
- relációk
- if, if else, for, while, do while
- karakteres adatok be és kivitele
Példák
Állománymásoló három változatban:
~/info2/allomanymasolo1.c
#include <stdio.h> int main (void) { int c; c = getchar(); while (c != EOF) { putchar(c); c = getchar(); } return 0; }
~/info2/allomanymasolo2.c
#include <stdio.h> int main (void) { int c; while ((c = getchar()) != EOF) putchar(c); return 0; }
~/info2/allomanymasolo3.c
#include <stdio.h> main () { int c; while ((c = getchar()) != EOF) putchar(c); }
Bájtszámláló
~/info2/bajtszamlalo.c:
/* Megszámolja és kiírja, hogy a bemenet hány bájtból áll. * `n=n+1' helyett `n++'-ot írtunk. */ #include <stdio.h> int main(void) { int n=0; while (0<=getchar()) n++; printf("%d\n", n); return 0; }
Kipróbálás:
$ echo sok | ./bajtszamlalo 4 $ echo -n sok | ./bajtszamlalo 3
Sorszámláló
~/info2/sorszamlalo.c:
/* Megszámolja és kiírja, hogy a bemenet hány sorból áll. * Az utolsó sor nem számít, ha nincs a végén soremelés. */ #include <stdio.h> int main(void) { int c, n=0; while (0<=(c=getchar())) { if (c=='\n') n++; } printf("%d\n", n); return 0; }
Kipróbálás:
$ ls /bin/bash /usr/bin/id /dev/null /etc/inputrc | ./sorszamlalo 4
~/info2/szoszamlalo.c (ld. K&R alapján)
/* Megszámolja és kiírja, hogy a bemenet hány bájtból, * hány szóból és hány sorból áll. Szó a bemenet olyan * maximális része, melyben nincs szóköz, tabulátor és * újsor karakter. */ #include <stdio.h> #define KINN 0 #define BENN 1 int main(void) { int c, bajtok_sz, szavak_sz, sorok_sz, allapot=KINN; bajtok_sz=szavak_sz=sorok_sz=0; while ((c=getchar()) != EOF) { ++bajtok_sz; if (c == '\n') sorok_sz++; if (c == ' ' || c == '\n' || c == '\t') allapot = KINN; else if (allapot == KINN) { allapot = BENN; szavak_sz++; } } printf("%d %d %d\n", bajtok_sz, szavak_sz, sorok_sz); return 0; }