Algoritmy pro učitele matematiky
 
Jitka Laitochová, Zdeněk Halas 
Univerzita Palackého, Pedagogická fakulta, Katedra matematiky  
e-mail: jitka.laitochova@upol.cz 

Abstrakt 

V tomto článku ukážeme několik algoritmů zapsaných v programovacím jazyku C, které se dají použít při výuce nově koncipovaného povinně volitelného předmětu Algoritmizace. Tento předmět je určen studentům druhého semestru bakalářského studijního programu  B7507 „Specializace v pedagogice“ studijního oboru „Matematika se zaměřením na vzdělávání“ na Pedagogické fakultě Univerzity Palackého v Olomouci. 
Nově koncipovaný povinně volitelný předmět Algoritmizace by měl u studentů učitelství matematiky 2. stupně ZŠ rozvíjet algoritmické myšlení a zprostředkovat jim představu, jak vzniká a pracuje počítačový program. Jsou vybrány jednoduché algoritmy především z učiva matematiky základních, případně středních a vysokých škol a jsou implementovány v programovacím jazyce C. Úlohy k algoritmizaci jsou zaměřeny tak, aby byly přínosné pro budoucí učitele matematiky 2. stupně ZŠ.
Uvedenou problematiku řešíme v letošním roce v rámci projektu FRVŠ č. 1045/2008.

1. Obsah předmětu Algoritmizace

Předmět Algoritmizace je vyučován formou semináře, a to dvě hodiny týdně v jednom semestru. Výuka probíhá v počítačové učebně.
Úvod semináře je věnován seznámení studentů se základními pojmy jako formální problém a algoritmus, dále s druhy akcí, které se vyskytují v algoritmech při zpracování na počítači, tj. přiřazení, větvení algoritmu, cyklus. Následuje 12 tématicky zaměřených seminářů. 
V každém jednotlivém tématu bude vždy zadán problém, kterým se budeme zabývat, k němu bude uvedeno ukázkové řešení pomocí algoritmu zapsaném v jazyku C. Budou zde uvedeny také vysvětlující poznámky týkající se příkazů jazyka. Není totiž cílem tohoto předmětu naučit se programovat v uvedeném programovacím jazyku, jen pochopit, jakým způsobem se programy vytvářejí a zapisují.
Primárně jsme se zaměřili na algoritmy ilustrující učivo základní školy a zpracováváme například následující témata:
•	Výpis tabulky druhých a třetích mocnin přirozených čísel, převrácených hodnot na 50 míst – sledování periody
•	Tvorba programů pro tvorbu typových úloh (kvadratická rovnice – zadají se kořeny a do souboru se tiskne zadání i s řešením ve zvolené úpravě, lineární rovnice a rovnice s neznámou ve jmenovateli, generování pythagorejských trojic)
•	Dělitelnost (najít všechny dělitele zadaného čísla, určování nejmenšího společného násobku, největšího společného dělitele, rozklad čísla na součin prvočísel)
•	Geometrické úlohy (Kdy je trojúhelník pravoúhlý? Lze daný trojúhelník sestrojit? Kolikrát se změní objem (obvod, obsah), zvětšíme-li hranu krychle (čtverce,…) ?
•	Odmocniny (posloupnosti zadané rekurentně)
•	Kořeny nelineárních rovnic: metoda půlení intervalu apod.

2. Zápis algoritmů 
Vhodné vybrané algoritmy z výše uvedených oblastí jsou zapisovány v programovacím jazyku C++. Při kompilaci bude používáno Dev-C++ 5.0 beta 9.2 (4.9.9.2) (9.0 MB) with Mingw/GCC , GNU GENERAL PUBLIC LICENCE C++, které lze zdarma distribuovat a kopírovat (www. bloodshed.net). 
3. Příklad

// Vypsat do souboru tabulku faktoriálů od 1 do zadaného N

#include <stdio.h>

main(){

	FILE*fw; fw=fopen("Faktorialy1.txt", "w"); //založíme a otevřeme soubor

	double i, fakt=1, N;
	scanf("%lf", &N);	//načteme číslo N, kterým bude celá tabulka končit

	for (i=1; i<=N; i++)	//tady volíme čísla od 1 do N
	{
 		fakt *= i;		// počítáme faktoriál s využitím předchozího výsledku
 			 			// je to rychlejší zápis příkazu  fakt = fakt * i;
 			 			
 		fprintf(fw,"%g! = %.17g\n", i, fakt);
	}							    //a zde vytiskneme faktoriál

	fclose(fw);	 //soubor po práci zavřeme
}

References 

[1]      R. Chalupa. 1001 tipů a triků pro Visual C++. Computer Press, a.s., 2003. ISBN 80-      7226-824-2.
[2]      V. Kadlec. Učíme se programovat v Jazyce C. Computer Press, a.s., 2005. ISBN 80- 7226-715-9.
[3]      B. Kerninghan, D. Ritchie. Programovací jazyk C. Computer Press, a.s., 2006, ISBN 80-251-0897-X.
[4]      J. Laitochová. Matematická analýza 2. Integrální počet. Olomouc: Vydavatelství UP 2001. ISBN 80-244-0288-2.
[5] 	M. Virius. Pasti a propasti jazyka C++. Computer Press, a.s., 2005, ISBN 80-251-0509-1.