Info2/2008tavasz/kuka
A MathWikiből
(Változatok közti eltérés)
1. sor: | 1. sor: | ||
− | === A nyelv === | + | === A C nyelv === |
− | * | + | * története |
** C programozási nyelv: Dennis Ritchie 1972, Bell Telephone Laboratories | ** C programozási nyelv: Dennis Ritchie 1972, Bell Telephone Laboratories | ||
− | ** K&R C 1978 | + | ** K&R C 1978 (Brian Kernighan, Dennis Ritchie: The C Programming Language) |
** ANSI (American National Standards Institute) 1989 -> C89 | ** ANSI (American National Standards Institute) 1989 -> C89 | ||
** ISO (International Organization for Standardization) ISO/IEC 9899:1990 -> C90 (lényegében azonos) | ** ISO (International Organization for Standardization) ISO/IEC 9899:1990 -> C90 (lényegében azonos) | ||
** ISO 9899:1999 (ANSI 2000) -> C99 | ** ISO 9899:1999 (ANSI 2000) -> C99 | ||
− | ** hatás, utódok: C++ | + | ** 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 | ** á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 | ** Unixra készült, ma szinte minden platformon | ||
16. sor: | 16. sor: | ||
− | + | ~/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 | |
− | + | ||
− | + | ~/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) | |
− | + | ||
− | + | /* 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; | |
− | + | 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; | ||
+ | } |
A lap 2008. február 15., 00:03-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
~/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
~/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)
/* 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; 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; }