Info2/2008tavasz/kuka

A MathWikiből
(Változatok közti eltérés)
15. sor: 15. sor:
 
** támogatja a gépfüggetlen programozást
 
** támogatja a gépfüggetlen programozást
  
 +
==== 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:
 
~/info2/bajtszamlalo.c:
35. sor: 73. sor:
 
  $ echo -n sok | ./bajtszamlalo
 
  $ echo -n sok | ./bajtszamlalo
 
  3
 
  3
 +
 +
Sorszámláló
  
 
~/info2/sorszamlalo.c:
 
~/info2/sorszamlalo.c:

A lap 2008. február 14., 23:35-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

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;
}
Személyes eszközök