Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.

1/1

Zdrojové soubory z výuky

Na této stránce jsou k dispozici zdrojové soubory, které jsem vytvářel při výkladu během výuky. Nejsou to ukázkové a bezchybné zdrojové soubory. Ba naopak, jsou to pracovní neučesané verze, které vznikaly interaktivně ve výuce, často s cílem ukázat, že "takto se to nemá".

Makefile
   1 # Makefile
   2 # Makefile: Obsah nalezen porůznu na webu a upraven. (říjen 2010)
   3 # 	http://kvik.sh.cvut.cz/~fidlej/cecko/makefile/referat.html (Ivo Danihelka)
   4 #   http://dce.felk.cvut.cz/por/cv1/#id2510407
   5 #	http://www-kiv.zcu.cz/~herout/html_sbo/make/toc.htm (Jan Valášek)
   6 #	http://www.fit.vutbr.cz/~martinek/clang/make.html (David Martinek)
   7 #------------------------------------------------------------------------
   8 # Datum: 15.06.2011 13:13
   9 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
  10 # Úloha: 
  11 #------------------------------------------------------------------------
  12 #Funkce pro zpracování textu
  13 #
  14 #Volají se podobně jako proměnné
  15 #$(funkce argumenty)
  16 #
  17 #$(subst from,to,text)	substituce
  18 #$(patsubst pattern,replacement,text)
  19 #	% v pattern představuje lib. posloupnost znaků
  20 #	% v replacement odpovídá této množině
  21 #	
  22 #	př.: $(patsubst %.c,%.o,main.c bar.c)
  23 #$(var:pattern=replacement)
  24 #	je ekvivalentní
  25 #$(patsubst pattern,replacement,$(var))
  26 #        př.: CLASSES = $(SOURCES:.java=.class)
  27 #
  28 #$(wildcard pattern)
  29 #	názvy souborů odpovídají pattern, jako v shellu
  30 #        př.: SOURCES = $(wildcard *.java)
  31 #------------------------------------------------------------------------
  32 # Užitečné přepínače
  33 #
  34 #-f soubor
  35 #	použije se `soubor` namísto Makefile
  36 #-n 
  37 #	nevykonává, jen vypisuje průběh
  38 #-p 
  39 #	současně vypíše kompletní nastavení proměnných,
  40 #	implicitních pravidel, ...
  41 #------------------------------------------------------------------------
  42 #cíl: [závislost] [závislost]
  43 #<tab>příkazy
  44 #                          pro každý radek se spouští nový shell
  45 #<tab>cd neco; ./neco
  46 #
  47 #Automatické proměnné
  48 #$@		jméno cíle
  49 #$<		jméno první závislosti
  50 #$?		jména závislostí, které jsou novější než cíl
  51 #$^		jména všech závislostí oddělená mezerami
  52 #
  53 # Příklad implicitního pravidla
  54 # %.o: %.c
  55 #	$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
  56 #------------------------------------------------------------------------
  57 # 
  58 
  59 ## překladač
  60 CC=gcc
  61 ## volby překladače
  62 CFLAGS=-std=c99 -Wall -pedantic -lm 
  63 #CPPFLAGS=
  64 .PHONY: all build clean again autodep debub
  65 #
  66 # všechna *.c zavisi na *.h
  67 #OBJ=soubor1.o soubor2.o souborN.o
  68 #HEAD=soubor1.h soubor2.h souborN.h
  69 #${OBJ}: ${HEAD} # hromadné nastavení závislostí, žádná akce
  70 #program= 
  71 #$(program): $(program).c
  72 #	$(CC) $(CFLAGS) -o $(program) $(program).c
  73 #hello:hello.c helo.h
  74 #	gcc -Wall -o hello hello.c
  75 
  76 ###############################################
  77 
  78 
  79 build: revkal
  80 
  81 
  82 revkal: revkal.o zasobnik.o
  83 	$(CC) -o $@ $^
  84 #    $(CC) -o revkal revkal.o zasobnik.o
  85 
  86 revkal.o: revkal.c zasobnik.h
  87 	$(CC) $(CFLAGS) -c -o $@ $<
  88 #   $(CC) $(CFLAGS) -c -o revcal.o revcal.c
  89 
  90 zasobnik.o: zasobnik.c zasobnik.h
  91 	$(CC) $(CFLAGS) -c -o $@ $<
  92 
  93 
  94 #debug: $(program)
  95 #    $(CC) $(CFLAGS) -g -o $(program) $(program).c
  96 
  97 again: clean build 
  98 
  99 clean:
 100 	rm -f ./*.o
 101 	rm -f revkal
`--> stáhnout

revkal.c
   1 /*
   2  * Soubor:  revkal.c
   3  * Datum:   01.06.2011 13:58
   4  * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5  * Licence: GNU/GPL 
   6  * Úloha: 
   7  * Popis:   
   8  ****************************************************/
   9 #define _ISOC99_SOURCE
  10 #define _GNU_SOURCE
  11 
  12 #include <stdio.h>
  13 
  14 #include "zasobnik.h"
  15 
  16 /****************************************************
  17  *               Hlavní program.
  18  ****************************************************/
  19 int main(void) {
  20 
  21     push(54);
  22     push(3.1415);
  23     push(7);
  24 
  25     printf("%g\n",pop());
  26     printf("%g\n",pop());
  27     printf("%g\n",pop());
  28 
  29     return 0;
  30 }
`--> stáhnout

zasobnik.c
   1 /*
   2  * Soubor:  zasobnik.c
   3  * Datum:   01.06.2011 13:21
   4  * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5  * Licence: GNU/GPL 
   6  * Úloha:   imlementuje zásobník
   7  */
   8 
   9 /***********************************
  10  *   Hlavičkové soubory
  11  ***********************************/
  12 #include "zasobnik.h"
  13 
  14 /*********************************** 
  15  *  Globální proměnné a datové struktury
  16  ***********************************/
  17 
  18 double stack[64];  // zásobník
  19 int stackCount=0;  // počet čísel v zásobníku
  20 
  21 
  22 /*********************************** 
  23  *  Implementace funkcí
  24  ***********************************/
  25 
  26 void push(double cislo) //%.h  
  27 {
  28     stack[stackCount]=cislo;
  29     stackCount++;
  30 }
  31 
  32 double pop(void) //.h
  33 {
  34     return stack[--stackCount];
  35 }
`--> stáhnout

zasobnik.h
   1 /*
   2  * Soubor:  zasobnik.h
   3  * Datum:   01.06.2011 13:22
   4  * Autor:   Marek Nožka, nozka <@t> spseol <d.t> cz
   5  * Licence: GNU/GPL 
   6  * Úloha: 
   7  * Popis:   hlavičkový soubor pro zasobnik.c
   8  */
   9 
  10 #ifndef __ZASOBNIK_H__
  11 #define __ZASOBNIK_H__
  12 
  13 void push(double cislo);
  14 double pop(void);
  15 
  16 #endif
`--> stáhnout

Licence Creative Commons Valid XHTML 1.0 Strict Valid CSS! Antispam.er.cz Blog: Tlapicka.net