Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1/1
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á".
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
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 }
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 }
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