Teoretické základy informatiky pro ekonomy II.

Rozměr: px
Začít zobrazení ze stránky:

Download "Teoretické základy informatiky pro ekonomy II."

Transkript

1 Evropský polytechnický institut, s.r.o. 1. soukromá vysoká škola na Moravě Kunovice Teoretické základy informatiky pro ekonomy II. Oldřich Kratochvíl Jindřich Petrucha Robert Jurča 2014

2

3 Evropský polytechnický institut, s.r.o. 1. soukromá vysoká škola na Moravě Osvobození 699, Kunovice Teoretické základy informatiky pro ekonomy II. Oldřich Kratochvíl Jindřich Petrucha Robert Jurča 2013

4 Autor: Prof. Ing. Oldřich Kratochvíl, Ph.D., CSc., MBA, Dr.h.c. Ing. Jindřich Petrucha, Ph.D. Ing. Robert Jurča, Ph.D. Název: Teoretické základy informatiky pro ekonomy II. Vydavatel: Evropský polytechnický institut, s.r.o. Kunovice 2014 ISBN

5 O autorech Oldřich Kratochvíl se narodil v ČR v krásném prostředí Moravského Slovácka. Absolvoval v roce 1971 na Vysoké škole dopravní v Žilině ve Slovenské republice. Po skončení studia vysoké školy pracoval nejprve jako asistent na této vysoké škole v Žilině, následovalo působení v telekomunikacích, odkud přešel do oblasti zavádění informačních technologií do zemědělství. Absolvoval pedagogické studium na UJEP Brno. V roce 1991 založil jednu z prvních soukromých středních odborných škol v ČR a založil také první vyšší odbornou školu v ČR. V roce 1995 vedl akreditaci první soukromé vysoké školy pod irskou legislativou v ČR a v roce 1999 založil druhou soukromou vysokou školu v ČR pod českou legislativou. Byl prvním předsedou Asociace soukromých středních škol v ČR a Asociace soukromých vysokých škol v ČR. V roce 1991 absolvoval stáž na univerzitách v Kanadě. Spolupracoval při zavádění soukromého vysokého školství v ČR s KL Transfer a PTH Eidhoven v Nizozemí. Od roku 1997 spolupracuje s REA Moskva a od roku 2006 s MOSAP Moskva a Vysokou školou v Podolsku v Rusku. Vysoká škola REA Moskva mu roku 2005 udělila čestnou vědeckou hodnost Doctor honoris causa, v roce 2007 byl jmenován Honorary Professor pro obor zahraniční obchod na MOSAP v Moskvě, kde je členem katedry zahraničního obchodu. MBA absolvoval na Rushmore university v roce V roce 2011 obhájil titul CSc na REU AP v Moskvě. V roce 2012 byl jmenován profesorem na Rushmore University v USA a Chartered Management Institute v UK. Od roku 1991 do roku 2006 zastával funkci ředitele střední školy, od roku 1991 až doposud působí jako ředitel Vyšší odborné školy právní a od roku 1991 působí jako rektor Soukromé vysoké školy EPI, s.r.o. V pedagogické práci, výzkumu a publikaci se specializuje na management, strategický management, marketing, mezinárodní marketing, komunikaci, pedagogiku, oborové didaktiky a rozvoj technologií ve školství a přímé zahraniční investice. Byl členem pléna Rady vysokých škol v ČR a členem České konference rektorův ČR. Ing. Jindřich Petrucha, PhD. se narodil v ČR v Uherském Hradišti. Absolvoval Střední průmyslovou školu strojní v Uherském Hradišti. V roce 1978 studoval na VUT Brno fakultu strojní kde se seznámil s problematikou počítačů. Po ukončení studia v roce 1983 nastupuje do praxe v podniku MESIT (Měřící a signalizační technika) jako vývojový pracovník. Zde se věnoval oblasti nasazení mikroprocesorů do řídících systémů, které tato firma vyvíjela pro letecká zařízení. Protože firma v této době vyvíjela svůj mikroprocesorový systém na bázi prvních procesorů 8080, byl vyslán na další studia na ČVUT Praha, kde na fakultě elektro absolvoval postgraduální studium v oboru mikropočítačů. Po roce 1991 odešel pracovat jako vyučující do Evropského polytechnického institutu v Kunovicích, kde stál u zrodu vyššího odborného školství. V roce 1992 se zúčastnil zahraniční stáže v Hogeschool Eidhoven v Holansku, která byly zaměřena na principy výuky v zahraničních školách a na tvorbu osnov pro různé oblasti výuky. Škola v tomto období zahájila spolupráci s irskou organizaci NCEA, která realizovala společně se školou akreditaci bakalářského studia pod irskou legislativou. V roce 1999 zahájil doktorská studia na MZLU v Brně obor ekonomická informatika pod vedením Doc. A.Motyčky, který jej odborně profiloval k vědecké činnosti. Tento směr vědecké práce se snažil udržovat v průběhu doktorského studia tak aby vyústil v jeho disertační práci. Dílčí poznatky získával na různých vědeckých konferencích (ICSC, MENDEL, NOSTRADAMUS apod.), kde také publikoval své přínosy k aplikaci simulátorů neuronových sítí. V současné době pracuje na ústavu aplikované informatiky na Evropském polytechnickém institutu, kde vede výzkumnou činnost zabývající se optimalizačními procesy. V pedagogické oblasti aplikuje výzkum do praxe v předmětech jako jsou operační systémy, programovací jazyky, internetové technologie. Zaměřuje se na zkoumání nových trendů při

6 aplikaci mobilních technologií a jejich spojení při pedagogické činnosti. Aplikuje výsledky do praxe při zavádění modulů informačního systému EPI. Ing. Robert Jurča, PhD. se narodil v ČR v Uherském Hradišti. Absolvoval Střední stavební školu ve Zlíně a Fakultu managementu a ekonomiky ve Zlíně ve studijním oboru Management a ekonomika. Po skončení vysoké školy v roce 2001 nastoupil na Soukromé gymnázium a střední odbornou školu, s.r.o. a Evropský polytechnický institut, s.r.o. v Kunovicích, kde postupně působil jako asistent a odborný asistent. V letech studoval na Slovenské technické univerzitě v Bratislavě doktorandské studium ve studijním oboru odborová didaktika. Ve své pedagogické a výzkumné práci se specializuje na informační systémy a grafiku.

7 Obsah ÚVOD PRÁCE SE SOUBORY ZÁKLADNÍ POJMY PRÁCE SE SOUBORY OPAKOVÁNÍ NĚKTERÝCH DOPOSUD ZÍSKANÝCH POZNATKŮ PRAKTICKÉ APLIKACE PRÁCE S EOF TVORBA DATABÁZÍ PRÁCE S PARAMETREM R VYTVOŘENÍ ZÁLOŽNÍHO SOUBORU ŠIFROVÁNÍ A KRYPTOGRAFIE CÍLOVÉ ZNALOSTI A DOVEDNOSTI HISTORIE ŠIFROVÁNÍ MODERNÍ KRYPTOGRAFIE Bezpečnostní cíle kryptografie Základní pojmy Symetrické a asymetrické šifry KONTROLNÍ OTÁZKY ELEKTRONICKÝ PODPIS ELEKTRONICKÝ PODPIS ELEKTRONICKÝ PODPIS A JEHO UŽITÍ CERTIFIKAČNÍ AUTORITA ZAVEDENÍ ELEKTRONICKÉHO PODPISU ZÁKON O ELEKTRONICKÉM PODPISU...88 ZÁVĚR...89

8

9 Úvod Tento studijní text navazuje na text Teoretické základy informatiky pro ekonomy I. I tento text je součástí IGS a slouží jako výstup výzkumu předmětové didaktiky vysokoškolského předmětu Teoretické základy informatiky. Úkolem tohoto výzkumu je umožnit manažerům, podnikatelům a dalším řídícím pracovníkům vybudovat si mezioborové znalosti z oblasti aplikované informatiky, které budou moci využít v těchto profesích. Očekáváme, že absolventi budou schopní nejen využívat nejnovější software pro inovaci procesů v podnikové sféře, ale dokáží také takový software projektovat. Absolventi budou specialisté v oblastech, které vyžadují tyto pracovní pozice na počátku 21. století. Zatímco v první části studia se posluchači naučili formulovat algoritmy pro řešení praktických problémů a převádět je do vývojového diagramu a jednoduchých struktur programu, v této druhé části se čtenář naučí pracovat s proměnnou typu soubor a tvořit algoritmy pro řešení takových úloh, v nichž si již čtenář začíná vytvářet praktické aplikace pro svou práci. Na tento studijní text navazují další studijní texty Úvod do programování, Operační systémy, Databázové systémy, Programování v PHP a HTML a Objektové programování. 5

10 1 Práce se soubory 1.1 Základní pojmy Doposud jsme data ukládali do proměnných typu integer, char, atd. nebo do polí. Vypnutím počítače tato data ztrácíme. Proto potřebujeme strukturu dat, která se uchová i po vypnutí počítače. Mluvíme o souborech. V textovém editoru Poznámkový blok se setkáváte se souborem.txt. Jde o textový soubor, v němž se mohou nacházet znaky, řetězce znaků i čísla. V jazyku C můžeme vytvořit textový soubor, který má předem definovanou strukturu. V praxi často potřebujeme vytvořit soubor, v němž budeme mít trvale uloženy a zpřístupněny data pro každého pracovníka např.: příjmení [0] jméno [0] mzda [0] příjmení [1] jméno [1] mzda [1] plat.txt věta Kotek Jan Janků Petra plat.txt věta věta věta Soubor má oproti poli výhodu v tom, že když ho jednou vytvoříme a uložíme, můžeme ho kdykoliv znovu přečíst, opravit, využít údaje. Do souboru můžeme data buď zapisovat (write), nebo je ze souboru číst (read). Vždy však přes aktivaci proměnné fd typu FILE, jak vidíme v následujících obrázcích. EOF plat.txt 1 w výpis plat.txt 2 fd fd fd fprintf (fd ); fd fd fd EOF r výpis fscanf (fd, "%d".."r"); naplnění p1 p1 p1 scnaf ( "w"); proměnné p1 p1 p1 proměnné Datový tok - textovy(ascii znaky) - binární Datový tok Obr. č. 1: Zápis dat do souboru Obr. č. 2: Čtení dat ze souboru Tok dat je připojený přes fd k souboru plat.txt na zápis(w). Toto ukazovátko (kanál) se posunuje vždy po provedeném zápisu dat ( 1 po provedeném načtení viz obr. č. 2 2 ) dat. Proměnnou typu FILE fd zřídíme a připojíme k souboru plat.txt příkazem: a) na zápis fd=fopen("plat.txt","w");. viz obr. č. 1 b) na čtení fd=fopen("plat.txt","r"); viz obr. č. 2 Proměnnou fd odpojíme od textového souboru (zrušíme) příkazem fclose(fd); 6

11 Hodnotu do souboru ukládáme příkazem fprintf(fd,"%d\n",p1); přes proměnnou (v našem případě p1): Hodnotu z proměnné fd načteme do proměnné p1 příkazem: fscanf(fd,"%d",&p1); Konec souboru označuje značka EOF. Obecně máme k dispozici následující režimy práce se souborem: Režim Význam "r" Otevře textový soubor pro čtení. "w" Vytvoří textový soubor pro zápis. "a" Otevře textový soubor pro přepisování. "rb" Otevře binární soubor pro čtení. "wb" Vytvoří binární soubor pro zápis. "ab" Otevře binární soubor pro přepisování. "r+" Otevře textový soubor pro čtení/zápis. "w+" Vytvoří textový soubor pro čtení/zápis. "a+" Otevře textový soubor pro čtení/přepisování. EOF Aktuální pozice (místo v souboru, kde se bude provádět další operace se souborem (čtení, zápis dat, atd.) V následujícím textu se naučíme pracovat s parametry r, w, a r+. Nové poznatky budeme získávat prostřednictvím řešení konkrétních úloh s tím, že je důraz kladen na propojení vývojového diagramu, práce paměti a řadiče, a přepis do jazyka C. 1.2 Práce se soubory V této kapitole se naučíme vytvořit soubor, zapsat do souboru a číst ze něj. Úkol č. 1 Vytvořte textový soubor plat.txt a do něj zapište hodnotu mzdy pracovníka (celočíselná hodnota). Tento soubor přečtete v textovém editoru. Metodický pokyn: Nejprve si musíme definovat proměnnou typu FILE, fd 1, dále musíme proměnnou fd připojit k souboru plat.txt na zápis (w) 2. Načteme hodnotu mzdy do proměnné p1 3. Dále potřebujeme obsah proměnné p1 zapsat do f(d). Tím se automaticky zapíše obsah p1(mzda) do souboru plat.txt. Úkol je splněn a zbývá jen fd odpojit 6 od souboru plat.txt

12 Řešení: Vývojový diagram Zápis do jazyka C Z #include <stdio.h> main () Deklarace proměnných p1.. typu INT fd.. typu FILE 1 int p1; FILE *fd; EOF Připojím fd k souboru v režimu ZÁPIS 2 připojení plat.txt odpojení fd=fopen("plat.txt","w"); fd printf("zadej mzdu:"); Načtení platu do p scanf("%d",&p1); p1 5 fprintf(fd,"%d\n",p1); Zápis p1 do fd a do souboru 4 povolení Odpojení fd od souboru + zápis eof 6 fclose(fd); system("pause"); Zastavení programu K Obr. č. 3: Vývojový diagram programu Pozn: Funkce fopen( ) používá klasický soubor studio.h. Je-li fopen ( ) neúspěšná, vrací nulový ukazatel NULL. Př: FILE *fd; if((fcp)= fopen("pracivbuci.txt", "r")) ==NULL printf ("chyba pri otevirani souboru\n"); 8

13 #include <stdio.h> main () int p1; FILE *fd; 1 Deklarujeme fd hodnota plat.txt "w" EOF fd=fopen("plat.txt","w"); 2 Připojení na zápis 1 hodnota fd scanf("%d",&p1); fprintf(fd,"%d\n",p1); p1 hodnota Zanést hodnoty 3 4 Povolit zápis fd plat.txt fclose(fd); //zrušení fd system("pause"); 6 Ukončit propojení fd na plat.txt Obr. č. 4: Vývojový diagram zápis do souboru Nově vytvořený textový soubor bude mít následující strukturu: p1 EOF označení konce souboru plat.txt O tom, že jsme soustavu plat.txt vytvořili se lze přesvědčit výpisem textového editoru: Obr. č. 6: Výpis obrazovky programu Pro ověření lze takový soubor plat.txt vypsat v textovém editoru. Obr. č. 5: Výpis programu v C Obr. č. 7: Výpis textového editoru 9

14 Úkol č. 2 V úloze č. 1 jsme vytvořili soubor plat.txt. Nyní chceme v něm uloženou hodnotu přečíst a vytisknout na obrazovku. Vytvořte vývojový diagram, převeďte do jazyka C, zkompilujte a ověřte funkčnost programu. Metodický pokyn: 1. Musíte deklarovat proměnnou fd pro čtení uložené hodnoty v plat.txt prostřednictvím p1. 2. Použijte příkazy: fd=fopen("plat.txt","r"); fscanf(fd,"%d",&p1); Řešení: Vývojový diagram Z Zápis do jazyka C #include <stdio.h> main () Deklarace proměnných p1.. typu INT Fd.. typu FILE int p1; FILE *fd; EOF Připojím fd k souboru v režimu ČTENÍ Připojení na čtení r fd=fopen("plat.txt","r"); fd Načtení fd do p1 Povolení čtení položky fscanf(fd,"%d",&p1); p1 Odpojení fd fclose(fd); Tisk p printf("%d\n",p1); Zastavení programu system("pause"); K K Obr. č. 8: Vývojový diagram programu 10

15 Obr. č. 9: Výpis souboru plat.txt na obrazovku Obr. č. 10: Výpis programu Úkol č. 3 Zadání: Vytvořte prázdný soubor pracov1.txt Metodický pokyn: Prázdný soubor je takový soubor, který obsahuje jen EOF. Následující soubor pracov1.txt je prázdný. pracov1.txt Chceme-li vytvořit prázdný soubor, stačí otevřít soubor na zápis a následně jej uzavřít. Řešení: EOF Vývojový diagram Z Otevření souboru pracov1.txt na zápis Uzavření souboru pracov1.txt Zastavení programu K Program v jazyku C main () FILE *fd; fd=fopen("pracov1.txt","w"); fclose(fd); system("pause"); Obr. č. 11: Vývojový diagram programu Obr. č. 12: Výpis programu v C 11

16 Obr. č. 13: Výpis textového editoru Úkol č. 4 Zadání: Upravte program z předcházejícího příkladu a odstraňte z něj deklaraci souboru (FILE *fd;). Jak bude program pracovat? Zdůvodněte. Metodický pokyn: Odtraníme deklaraci FILE *fd; a spustíme program. Program v C: main () fd=fopen("pracov1.txt","w"); fclose(fd); system("pause"); Obr. č. 14: Výpis programu v C Závěr: Program nebude funkční, protože jsme nedeklarovali proměnnou fd, kterou potřebuje příkaz fd=fopen( ). Úkol č. 5 Zadání: Vytvořte soubor pracov.txt o struktuře: příjmení [1] jméno [1] mzda [1] příjmení [2] jméno [2] mzda [2] EOF pracov.txt věta č. 1 věta č. 2 Soubor bude evidovat údaje o pěti pracovnících Mzda bude celočíselná hodnota. Příjmení a jméno může mít délku max 30. znaků. Tento soubor naplňte, soubor uzavřete a obsah souboru pracov.txt vypište na obrazovku a přečtěte v textovém editoru Metodický pokyn: Do souboru máme napsat 5 položek, s možností rozšířit úpravu zápisu až na 100 položek. K tomuto účelu se hodí cyklus for. I v tomtéž případě si po vytvoření souboru obsah těchto souborů vypište prostřednictvím textového editoru. Pro uložení položek si zvolíme proměnné typu pole, se kterým se dobře pracuje v cyklu postupného načítání pracovníků. 12

17 Varianta A: V této variantě načteme údaje pro každého pracovníka samostatnými příkazy. Vývojový diagram: Z Deklarace proměnných příjmení [5] [30]. char jméno [5] [30]. char mzda [5]. int FILE *fd Připojení proměnné fd k souboru pracov.txt na zápis Načtení dat o jednotlivých pracovních do proměnných Databáze v MC prijmeni1 [30] jmeno1 [30] mzda1 prijmeni2 [30] fd pracov.txt w jmenoi2 [30] mzda2 prijmeni3 [30] jmeno3 [30] mzda3 prijmeni4 [30] jmeno4 [30] mzda4 prijmeni5 [30] jmeno5 [30] mzda5 pracov.txt 4 fd fd fd Zapsání proměnných do souboru pracov.txt prijmeni1 jmeno1 Odpojení fd od souboru pracov.txt 5 mzda1 K Obr. č. 15: Vývojový diagram programu Popis práce vývojového diagramu a programu v jazyku C: V úvodní části deklarujeme všechny proměnné. Otevřeme soubor pracov.txt na zápis (připojíme fd). Načteme data jednotlivých pracovníků do příslušné proměnné. Vytvoříme databázi prijmeni1 mzda3. Zapíšeme postupně tyto proměnné do souboru pracov.txt. Soubor pracov.txt zavřeme (odpojíme fd). 13

18 Program v jazyku C: #include <stdio.h> main () char prijmeni1 [30], prijmeni2[30], prijmeni3[30], prijmeni4[30], prijmeni5[30]; char jmeno1[30], jmeno2[30], jmeno3[30], jmeno4[30], jmeno5[30]; int mzda1, mzda2, mzda3, mzda4, mzda5; FILE *fd; 1 fd=fopen("pracov.txt","w"); 2 printf("pracovnik 1:"); scanf("%s",prijmeni1); scanf("%s",jmeno1); scanf("%d",&mzda1); printf("pracovnik 2:"); scanf("%s",prijmeni2); scanf("%s",jmeno2); scanf("%d",&mzda2); printf("pracovnik 3:"); scanf("%s",prijmeni3); scanf("%s",jmeno3); scanf("%d",&mzda3); printf("pracovnik 4:"); scanf("%s",prijmeni4); scanf("%s",jmeno4); scanf("%d",&mzda4); printf("pracovnik 5:"); scanf("%s",prijmeni5); scanf("%s",jmeno5); scanf("%d",&mzda5); fprintf(fd,"%s\n",prijmeni1); fprintf(fd,"%s\n",jmeno1); fprintf(fd,"%d\n",mzda1); fprintf(fd,"%s\n",prijmeni2); fprintf(fd,"%s\n",jmeno2); fprintf(fd,"%d\n",mzda2); fprintf(fd,"%s\n",prijmeni3); fprintf(fd,"%s\n",jmeno3); fprintf(fd,"%d\n",mzda3); fprintf(fd,"%s\n",prijmeni4); fprintf(fd,"%s\n",jmeno4); fprintf(fd,"%d\n",mzda4); fprintf(fd,"%s\n",prijmeni5); fprintf(fd,"%s\n",jmeno5); fprintf(fd,"%d\n",mzda5); fclose(fd); 5 system("pause"); prijmeni1 jmeno1 mzda1 prijmeni2 jmeno2 mzda2 prijmeni3 jmeno3 mzda3 prijmeni4 jmeno4 mzda4 prijmeni5 jmeno5 mzda5 fd fd fd fd prijmeni1 jmeno1 mzda1 prijmeni2 pracov.txt věta 1 věta

19 Obr. č. 16: Vývojový diagram programu Pozn.: Funkce fcloce ( ) zavře soubor spojený s fd a odpojí datový proud od souboru. Systém většinou zapisuje data na disk po sektorech přes buffer v paměti. Buffer je vyprazdňován až po jeho naplnění. Funkce fclose ( ) zapíše na disk automaticky všechna zapsaná data v čátečně naplněném butteru. Mluvíme o tzv. vyprázdnění bufferu. Při neúspěchu vrací fclose ( ) nulu. Nastane-li chyba, vrací EOF. Obr. č. 17: Výpis obrazovky programu 15

20 Varinata B: V této variantě načteme údaje pro každého pracovníka s využitím cyklu. Řešení: Vývojový diagram Program v jazyku C: Z 1 #include <stdio.h> main () //blok 1 1 Deklarace proměnných Deklarace proměnných i, n int příjmení [100] [30]. char jméno [100] [30]. char mzda [100]. int FILE *fd int i,n; char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; FILE *fd; Stanovte počet pracovníků n = 5 2 //blok n=5; 2 2 Stanovíme si počet pracovníků, pro které chceme data evidovat (max=100) Připojení proměnné fd k souboru pracov.txt na zápis 3 //blok 3 fd=fopen("pracov.txt","w"); 3 K souboru prac.txt připojíme proměnnou fd na zápis. i=1; n; +1 Načti prijmeni, jmeno, datumnarozeni a zápis do pracov.txt i 4 //blok for(i=1;i<=n;i++) 4 V cyklu for načteme údaje o 5 pracovnících (u každého příjmení, printf("pracovnik %d:",i); scanf("%s",prijmeni[i]); jméno a mzdu) z klávesnice a přes fd zapíšeme do souboru pracov.txt. scanf("%s",jmeno[i]); scanf("%d",&mzda[i]); fprintf(fd,"%s %s %d\n",prijmeni[i],jmeno[i],mzda[i]); 4 Odpojení fd od souboru pracov.txt 5 //blok fclose(fd); K system("pause"); 5 Jakmile jsou data všech pracovníků načtena můžeme fd odpojit. Obr. č. 18: Vývojový diagram programu 16

21 Tento stručný diagram nyní rozšíříme a popíšeme, co se děje v paměti a jak pracuje řadič: Z Deklarace proměnných int i, n pole příjmení [100] [30] jméno [100] [30] mzda [100] FILE *fd 1 int i int n Příjmení [0] Příjmení [1].. Příjmení [29] Příjmení Jméno [0] Jméno [1].. Jméno [29] Jméno [100] Mzda [0] Mzda [1].. Mzda [29] Mzda fd 2 n = 5 n 5 Otevři soubor pracov.txt na zápis 3 pracov.txt w EOF 4 Načtení dat o jednotlivých pracovnících i = 1, n, 1 fd i = 1 i = 2 i = i = 6 Pracovník: 5 Příjmení [i] Louka Palus EOF prijmeni1 prijmeni2 Jméno [i] Jan Martin jmeno1 jemno2 Mzda [i] mzda1 mzda2 Zápis Příjmení [i], Jméno [i], Mzda [i] přes fd do pracov.txt Louka Jan Palus Martin EOF pracov.txt i Mzda [1] Mzda [2] Jméno[2] Příjmení [2] Uzavři soubor 5 Jméno[1] Příjmení [1] Obr. č. 19: Vývojový diagram programu Z Louka EOF Louka Jan EOF Louka Jan EOF 17

22 V tomto programu jsme po zadání dat pracovníků tyto údaje prostřednictvím proměnné fd (vidíme, že jde o strukturovanou proměnnou) zapsali do souboru pracov.txt. Jeho údaje již zůstanou k dispozici i po skončení práce programu v příslušném souboru. Dále jsme vývojový diagram doplnili při čtení dat o pracovníkovi využitím cyklu for. Jakmile cyklus for dosáhne i = 6, uzavře se soubor pracov.txt (odpojí fd, doplní EOF) a program práci ukončí. V následujícím textu vidíme výpis programu, obrazovky v průběhu práce programu a výpis souboru pracov.txt v textovém editoru. Obr. č. 20: Výpis programu v C Obr. č. 21: Výpis obrazovky programu Soubor pracov.txt lze přečíst také textovým editorem. Obr. č. 22: Výpis souboru pracov.txt v textovém editoru Samostatná práce studenta: 1. Doplňte program tak, aby při tisku na obrazovku očísloval pracovníky. 2. Doplňte program tak, aby při tisku výstupní sestavy zarovnal příjmení, jméno, mzda do sloupce. 3. Doplňte program tak, aby příjmení pracovníka bylo vždy na novém řádku. 18

23 Úkol č. 6 Máme vytvořený soubor pracov.txt pro 5 pracovníků v následující struktuře (viz Úkol č. 5). Obsah tohoto souboru chceme přečíst a vypsat na obrazovku. Metodický pokyn: V tomto případě vycházíme z úkolu č. 2 s tím, že proces čtení položky se musí opakovat až po EOF. Výhodné je využití cyklu. Program bude pracovat se souborem pracov.txt v následující struktuře: Příjmení [1] Jméno [1] Mzda [1] Příjmení [2] Jméno [2] Mzda [2] pracov.txt Příjmení [3] Jméno [3] Mzda [3] Příjmení [4] Jméno [4] Mzda [4] Příjmení [5] Jméno [5] Mzda [5] EOF V našem případě Louka Jan Palus Martin pracov.txt Jakubec Petr Jansa David Landa Pavel EOF Soubor můžeme samozřejmě vyčíst v textovém editoru. V praktických aplikacích však chceme mít možnost vyčíst soubor v rámci nabídky v MENU. Pro vyřešení tohoto úkolu bude potřeba realizovat následující vývojový program: Z Deklarace proměnných Kolik chceme načíst pracovníků? n = 5 Otevři soubor pracov.txt pro čtení r Vypiš na obrazovku Příjmení Jméno Mzda Postupně pro všechny pracovníky z pracov.txt čti Příjmení, Jméno, Mzda a tyto údaje vytiskni a obrazovku #include <stdio.h> main () int i,n; char prijmeni [100][30]; jmeno [100][30]; int mzda [100]; FILE *fd; n=5; fd=fopen("pracov.txt","r"); printf("prijmeni jmeno mzda\n"); cyklus čtení a tisku i prijmeni [0] prijmeni [1] prijmeni [2] prijmeni [99] jmeno [0] jmeno [1] jmeno [2] jmeno [99] mzda [0] mzda [1] mzda [2] mzda [99] fd pracov.txt fd n cyklus EOF r EOF Zavři soubor pracov. txt 6 fclose(fd); pracov.txt uzavření souboru Zastav program 5 system("pause"); K 8 Obr. č. 23: Vývojový diagram programu 19

24 Tento vývojový diagram je třeba rozpracovat v bodu 5: Z Deklarace proměnných 1 Kolik chceme načíst pracovníků n = 5 Otevři soubor pracov.txt pro čtení r Vypiš na obrazovku Příjmení Jméno Mzda n=5; fd=fopen("pracov.txt","r"); printf("prijmeni jmeno mzda\n"); i = 1, 5, 1 5 for(i=1;i<=n;i++) Načti z pracov.txt přes fd prijmeni [i]; jmeno [i]; mzda [i]; 5a fscanf(fd,"%s %s %d",prijmeni[i],jmeno[i], mzda[i]); Vytiskni na obrazovku prijmeni [i]; jmeno [i]; mzda [i]; 5b printf("%s %s %d\n",prijmeni[i],jmeno[i], mzda[i]); i Zavři soubor pracov. txt Zastav program 6 7 fclose(fd); system("pause"); K 8 Obr. č. 24: Vývojový diagram programu Program v jazyku C: #include <stdio.h> main () int i,n; 1 char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; FILE *fd; /*vytvoř proměnnou funkci fypu FILE*/ n=5; 2 fd=fopen("pracov.txt","r"); 3 /*otevři sobour pracov.txt na čtení*/ printf("prijmeni jmeno mzda\n"); 4 for(i=0;i<n;i++) 5 /* cyklus načtení věty z pracov.txt a její tisk*/ fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); printf("%s%s%d\n",prijmeni[i],jmeno[i],mzda[i]); fclose(fd); 6 system("pause");

25 Obr. č. 25: Výpis obrazovky programu Obr. č. 26: Výpis programu v C Samostatná práce studenta: 1. Upravte program tak, aby položky ve výstupní sestavě příjmení, jméno, mzda byly ve sloupcích zarovnány. 1.3 Opakování některých doposud získaných poznatků Data z klávesnice počítače můžeme ukládat do: a) proměnných Příjmení Mzda a ty mohou obsahovat buď znak, např.: char a; nebo řetězec, např. příjmení [30]; nebo číslo, např. int mzda; atd. 21

26 b) do strukturované proměnné pole n Příjmení název pole V našem případě může proměnná Příjmení typu pole obsahovat jen prvky typu řetězec znaků např.: char prijmeni [100] [30]; (dvojrozměrné pole, 100 řádků, v každém 30 znaků) Platí zásada, že musí být všechny prvky jednoho pole stejného typu. K plnění pole je mimořádně vhodná struktura cyklu while, for. Nevýhodou výše uvedených proměnných je, že po skončení programu jejich obsah zmizí. c) soubor prvky pole Proto má programovací jazyk C možnost uložit vstupní data do tzv. souboru. Pracujeme se souborem typu text (.txt). Základem souboru je strukturovaná věta: příjmení [0] jméno [0] mzda [0] příjmení [1] jméno [1] mzda [1] EOF pracovnici.txt Proměnná typu pracovnici.txt je strukturovaná proměnná. Může tedy obsahovat jak řetězec znaků, tak čísla. Struktura se však musí pravidelně opakovat. Opakující se úseky nazýváme věty. Soubor pracovnici.txt má dvě věty a je zakončen znakem EOF. Číst i zapisovat do souboru můžeme sekvenčně, přes proměnnou fd, kterou deklarujeme. FILE *fd; věta č. 1 věta č. 2 Proměnná fd se posouvá sekvenčně pod prvkem souboru vždy po provedení operace zápis (w), nebo čtení (r). Pokud máme strukturu textového souboru pracovnici.txt, můžeme do souboru obecně buď data zapisovat, nebo je číst. Opakujeme si stručný popis těchto činností: Kotek Jan Janků Petra EOF pracovnici.txt věta 1 věta 2 fd r w Přes fd buď čtu ze souboru (r) do proměnné, nebo do souboru zapisuji (w). p Obr. č. 27: Mechanismus čtení a zápisu do souboru 22

27 Zápis: Kotek Kotek fd p pracovnici.txt Kotek Kotek Obr. č. 28: Zápis do prvního prvku souboru Postup zápisu do souboru: Otevřeme-li textový soubor pracovnici.txt na zápis, učiníme tak příkazem fd=fopen("narozeniny.txt","w"); Mezi fd a prvním prvkem takového souboru je vytvořený otevřený kanál, prostřednictvím něhož se do prvku pole automaticky přesune vše, co se objeví v proměnné. fd. Data z klávesnice přesuneme do proměnné p příkazem scaf() a z proměnné p do fd příkazem fprintf(fd,"%s\n",p); Jan Kotek fd p Jan Jan Jan Nyní se proměnná fd přesune před druhý prvek. Do něj chceme zapsat Jan. Tento postup se opakuje tak dlouho, dokud příkazem fclose(fd); nezapíšeme na konec souboru znak EOF (stlačením ENTER). Obr. č. 29: Zápis do druhého prvku souboru atd. fd p Čtení: Kotek Jan pracovnici.txt Obr. č. 30: Čtení prvku ze souboru Postup při čtení souboru: Otevřeme-li textový soubor pracovnici.txt na čtení, učiníme tak příkazem fd=fopen("narozeniny.txt","r"); Mezi fd a prvním prvkem takového souboru je vytvořený otevřený kanál, prostřednictvím něhož se z prvku č. 1 pole automaticky přesunou data do proměnné. fd. Data z proměnné fd se přesunou do proměnné p příkazem scanf(). Nyní se proměnná fd přesune před druhý prvek. Z něj budu číst Jan. Tento postup se opakuje tak dlouho, dokud nenarazíme na EOF. V následujícím textu si tyto dovednosti podrobněji procvičíme. 1.4 Praktické aplikace Úkol č. 7 Vypracujte program P1, který vytvoří soubor narozeniny.txt ve struktuře věty příjmení, jméno, datum narození pro Vaše blízké. Ověřte, že program pracuje správně výpisem prostřednictvím textového editoru. Datum narozenin bude řetězec znaků. Metodika řešení: Využijte při řešení systém zápisu do textového souboru: Nejprve vytvoříme vývojový diagram a program v jazyku C pro evidenci narozenin tří lidí. 23

28 Zápis: Kotek pracovnici.txt EOF Kotek fd p Kotek Kotek Obr. č. 31: Zápis do prvního prvku souboru Řešení: Vývojový diagram Program v jazyku C Z Deklarace proměnných #include <stdio.h> main () 3 char prijmeni1[30],prijmeni2[30],prijmeni3[30]; char jmeno1[30],jmeno2[30],jmeno3[30]; char datumnarozeni1[30], datumnarozeni2[30], datumnarozeni3[30]; FILE *fd; printf("zadej prijmeni jmeno a udaje oddeluj znakem MEZERA \n"); printf("zadej datum narozeni ve tvaru RRRR-MM-DD \n"); printf("zadavani kazdeho cloveka ukonci prikazem ENTER \n\n "); Otevřeme soubor narozeniny.txt na zápis 8 fd=fopen("narozeniny.txt","w"); 8 Načtení hodnot z klávesnice do proměnné prijmeni, jmeno, datumnarozeni scanf("%s%s%s",prijmeni1,jmeno1,datumnarozeni1); scanf("%s%s%s",prijmeni2,jmeno2,datumnarozeni2); scanf("%s%s%s",prijmeni3,jmeno3,datumnarozeni3); Zápis vytvořených proměnných přes fd do souboru narozeniny.txt fprintf(fd,"%s\n%s\n%s\n",prijmeni1,jmeno1, datumnarozeni1); fprintf(fd,"%s\n%s\n%s\n",prijmeni2,jmeno2, datumnarozeni2); fprintf(fd,"%s\n%s\n%s\n",prijmeni3,jmeno3, datumnarozeni3); Uzavření souboru (fd); 15 fclose(fd); 15 Zastavení programu 16 system("pause"); 16 K Obr. č. 32: Vývojový diagram programu 24

29 Popis programu: 1 2 vyvoláme knihovnu i/o main() zahájí program deklarace proměnných otevření souboru na zápis načtení příjmení z klávesnice do prijmeni1, jmeno1, datumnarození1 načtení příjmení z klávesnice do prijmeni2, jmeno2, datumnarození2 načtení příjmení z klávesnice do prijmeni3, jmeno3, datumnarození zápis proměnných prijmeni1, jmeno1, datumnarození1 do souboru přes fd zápis proměnných prijmeni2, jmeno2, datumnarození2 do souboru přes fd zápis proměnných prijmeni3, jmeno3, datumnarození3 do souboru přes fd uzavření souboru zastavení programu konec programu Obr. č. 33: Výpis programu v C 25

30 Obr. č. 34: Obrazovka programu C po zadání hodnot To, že jsme soubor vytvořili, si zkontrolujeme v textovém editoru: Obr. č. 35: Výpis souboru narozeniny.txt v textovém editoru 26

31 Úkol č. 8 Upravte program P1 z úkolu č. 7 tak, aby využil cyklus for. Metodika řešení: I v tomto případě zaneseme počet klientů tzv. natvrdo, přiřazením n = 3. Vývojový diagram Z Deklarace proměnných Otevřeme soubor narozeniny.txt na zápis w n = i=1;i<=3;+1 Načti prijmeni Program v jazyku C: #include <stdio.h> main () 1 char prijmeni [30], jmeno [30], datumnarozeni [30]; int i, n; FILE *fd; fd=fopen("narozeniny.txt","w"); printf("zadej prijmeni jmeno a udaje oddeluj znakem MEZERA \n"); printf("zadej datum narozeni ve tvaru RRRR-MM-DD \n"); printf("zadavani kazdeho cloveka ukonci prikazem ENTER \n\n"); n=3; for (i=1;i<=n;i++) 3 scanf("%s",prijmeni); 4 2 Načti jmeno scanf("%s",jmeno); Načti datumnarozeni Tisk prijmeni[i] scanf("%s",datumnarozeni); fprintf(fd,"%s\n",prijmeni); fprintf(fd,"%s\n %s\n %s\n",prijmeni, jmeno, datumnarozeni); Tisk jmeno fprintf(fd,"%s\n",jmeno); Tisk datumnarozeni fprintf(fd,"%s\n",datumnarozeni); i Uzavření souboru (fd); 5 6 Zastavení programu fclose(fd); system("pause"); 5 6 K 7 7 Obr. č. 36: Vývojový diagram programu 27

32 Obr. č. 37: Výpis obrazovky v programu v C Obr. č. 38: Obrazovka programu C po zadání hodnot Obr. č. 39: Výpis souboru narozeniny.txt v textovém editoru Samostatná práce studenta: Blok č. 3 nahraďte zadáním počtu klientů z klávesnice. 28

33 Úkol č. 9 Vypracujte program P2, který přečte data z programu P1 a vytiskne je na obrazovku. Metodika řešení: I v tomto případě postupujeme stejně jako v úkolu č. 7. Údaje ze souboru budeme načítat pro jednotlivé klienty (věty) do samostatných proměnných (příjmení, jméno, datum). Řešení: Vývojový diagram: Z Deklarace proměnných Otevři soubor narozeniny.txt na čtení 1 2 věta1 věta2 věta3 EOF fd Načtení věty 1 z fd 3 věta1 fd fd fd prijmeni1 jmeno1 datum1 proměnná soubor samostatné proměnné 4 Načtení věty 2 z fd věta2 Načtení věty 3 z fd 5 fd fd fd prijmeni2 jmeno2 datum2 věta3 EOF fd fd fd prijmeni3 jmeno3 datum3 Tisk věty 1 6 prijmeni1 jmeno1 tisk tisk datumi1 tisk Tisk věty 2 7 prijmeni2 jmeno2 tisk tisk datumi2 tisk Tisk věty 3 z fd 8 prijmeni3 jmeno3 tisk tisk 9 datumi3 tisk Uzavři soubor K 10 Obr. č. 40: Vývojový diagram programu 29

34 Program v jazyku C: #include <stdio.h> main () 1 char prijmeni1 [30], prijmeni2 [30], prijmeni3 [30]; char jmeno1 [30], jmeno2 [30], jmeno3 [30]; char datumnarozeni1 [30], datumnarozeni2 [30], datumnarozeni3 [30]; FILE *fd; 2 Kotek Jan 1997 pracovnici.txt Kotek fd Kotek prijmeni1 fd=fopen("narozeniny.txt","r"); fscanf(fd,"%s %s %s",prijmeni1, jmeno1, datumnarozeni1); fscanf(fd,"%s %s %s",prijmeni2, jmeno2, datumnarozeni2); fscanf(fd,"%s %s %s",prijmeni3, jmeno3, datumnarozeni3); printf("vypis obsahu souboru narozeniny.txt:\n"); printf("%s\n%s\n%s\n",prijmeni1, jmeno1, datumnarozeni1); printf("%s\n%s\n%s\n",prijmeni2, jmeno2, datumnarozeni2); printf("%s\n%s\n%s\n",prijmeni3, jmeno3, datumnarozeni3); fclose(fd); system("pause"); Kotek Jan 1997 pracovnici.txt Jan fd Jan jmeno1 Kotek Jan 1997 pracovnici.txt fd datumnarozeni1 Obr. č. 41: Výpis obrazovky v programu v C Obr. č. 42: Obrazovka programu C po vypsání hodnot 30

35 Úkol č. 10 Zadání: Upravte program P2 tak, aby využil cyklus for. Metodika řešení: V tomto řešení budeme opakovat postup z úkolu č. 8. Vývojový diagram: Z Deklarace proměnných Otevřeme soubor narozeniny.txt na čtení w Program v jazyku C: #include <stdio.h> main () char prijmeni [30], jmeno [30], datumnarozeni [30]; int i, n; FILE *fd; fd=fopen("narozeniny.txt","r"); n = 3 vyčtu 3 věty n=3; i=1;i<=n;+1 Načti prijmeni for (i=1;i<=n;i++) Načti jmeno Načti datumnarozeni fscanf(fd,"%s %s %s",prijmeni, jmeno, datumnarozeni); printf("%s\n%s\n%s\n",prijmeni, jmeno, datumnarozeni); Načti datumnarozeni i Uzavření souboru (fd); fclose(fd); Zastavení programu system("pause"); K Obr. č. 43: Vývojový diagram programu 31

36 Obr. č. 44: Výpis obrazovky v programu v C Obr. č. 45: Obrazovka programu C po vypsání hodnot Úkol č. 11 Zadání: Spojte programy P1 a P2 do jednoho programu P3 a popište funkci celého programu. Metodika řešení: Z P1 V úkolu č. 11 vyřešíme zadání bez použití cyklu. V úkolu č. 12 vyřešíme problém s využitím cyklu. P2 K 32

37 Program v jazyku C #include <stdio.h> main () char prijmeni1 [30], prijmeni2 [30], prijmeni3 [30]; char jmeno1 [30], jmeno2 [30], jmeno3 [30]; char datumnarozeni1 [30], datumnarozeni2 [30], datumnarozeni3 [30]; FILE *fd; fd=fopen("narozeniny.txt","w"); /*naplnění souboru narozeniny.txt*/ scanf("%s %s %s",prijmeni1, jmeno1, datumnarozeni1); scanf("%s %s %s",prijmeni2, jmeno2, datumnarozeni2); scanf("%s %s %s",prijmeni3, jmeno3, datumnarozeni3); P1 fprintf(fd,"%s\n %s\n %s\n",prijmeni1, jmeno1, datumnarozeni1); fprintf(fd,"%s\n %s\n %s\n",prijmeni2, jmeno2, datumnarozeni2); fprintf(fd,"%s\n %s\n %s\n",prijmeni3, jmeno3, datumnarozeni3); fclose(fd); system("pause"); system ("CLS"); fd=fopen("narozeniny.txt","r"); /*vytištění souboru narozeniny.txt*/ fscanf(fd,"%s %s %s",prijmeni1, jmeno1, datumnarozeni1); fscanf(fd,"%s %s %s",prijmeni2, jmeno2, datumnarozeni2); fscanf(fd,"%s %s %s",prijmeni3, jmeno3, datumnarozeni3); P2 printf("%s\n%s\n%s\n",prijmeni1, jmeno1, datumnarozeni1); printf("%s\n%s\n%s\n",prijmeni2, jmeno2, datumnarozeni2); printf("%s\n%s\n%s\n",prijmeni3, jmeno3, datumnarozeni3); fclose(fd); system("pause"); Obr. č. 46: Výpis obrazovky v programu v C 33

38 Obr. č. 47: Výpis obrazovky v programu v C Obr. č. 48: Obrazovka programu C po zadání hodnot Obr. č. 49: Výpis souboru narozeniny.txt na obrazovku Samostatná práce studenta: Nakreslete vývojový diagram. 34

39 Úkol č. 12 Upravte program P3 tak, aby využil cyklus for. Metodika řešení: Cílem tohoto úkolu je, aby student pochopil, jak využití cyklu významně zjednoduší zápis algoritmu a jak jej zprůhlední. Řešení: Vývojový diagram Z Deklarace prijmeni, jmeno, datum narozeni, i, n, *fd Otevřeme soubor narozeniny.txt na zápis w Program v jazyku C #include <stdio.h> main () char prijmeni [30]; jmeno [30]; datumnarozeni [30]; int i,n; FILE *fd; fd=fopen("narozeniny.txt","w"); /*naplnění souboru*/ n = 3 n=3; i=1;i<=n;i++ for (i=1;i<=n;i++) Načti prijmeni, jmeno, datumnarozeni Zapiš prijmeni, jmeno, datumnarozeni přes fd do narozeniny.txt scanf("%s %s %s",prijmeni, jmeno, datumnarozeni); fprintf(fd,"%s\n %s\n %s\n",prijmeni, jmeno, datumnarozeni); i Uzavři narozeniny.txt fclose(fd); Zastav program system("pause"); CLS system ("CLS"); Otevřeme soubor narozeniny.txt na čtení r fd=fopen("narozeniny.txt","r"); /*tisk obsahu souboru*/ n = 3 Cyklus tisku obsahu souboru Uzavři narozeniny.txt n=3; for (i=1;i<=n;i++) fscanf(fd,"%s %s %s",prijmeni, jmeno,datumnarozeni); printf("%s\n%s\n%s\n",prijmeni, jmeno,datumnarozeni); fclose(fd); Zastav system("pause"); Obr. č. 50: Vývojový diagram programu K 35

40 Obr. č. 51: Výpis programu v C Obr. č. 52: Výpis souboru narozeniny.txt na obrazovku Úkol č. 14 Nakreslete vývojový diagram, který vytvoří soubor třída.txt ve struktuře věty příjmení, jméno, věk, počet sourozenců pro každého žáka (položku) a následně tato zadaná data na obrazovku vypíše. Program pojmenujte P4. Ověřte jeho funkci textovým editorem. Metodický pokyn: Nejprve deklarujeme proměnné. Příjmení a jméno může mít 30 znaků, i, n, věk, součet sourozenců jsou celá čísla. Otevřeme soubor trida.txt na zápis. P4 má evidovat data pro 3 žáky n = 3. V cyklu for načtu z klávesnice příjmení, jméno, věk a počet sourozenců do příslušné proměnné přes scanf ( ) Lauko Pavel 22 1; Dufko Ivan 23 3; Pardova Jana

41 7 8 V příkazu printf( ) vypíši hodnoty z těchto proměnných do souboru postupně v následujícím pořadí: příjmení, jméno, věk, počet sourozenců. Soubor uzavřeme. Pozn.: V souboru máme zapsáno: Lauko Pavel 22 1 Dufko Ivan 23 3 Pardova Jana Zastavíme program. Soubor otevřeme na čtení. V cyklu for načteme postupně první hodnotu souboru (příjmení) do proměnné příjmení, druhou hodnotu do proměnné jméno a třetí hodnotu do proměnné věk. Příkazem printf ( ) vytiskneme, atd. Po vyčtení všech dat soubor uzavřeme. 37

42 Vývojový diagram Z Deklarace proměnných Otevřeme soubor trida.txt na zápis 1 2 Program v jazyku C #include <stdio.h> main () char prijmeni [30];char jmeno [30]; int i,n,vek,pocetsourozencu; FILE *fd; fd=fopen("trida.txt","w"); 2 1 n = 3 3 n=3; 3 i=1;i<=n;i++ 4 for (i=1;i<=n;i++) 4 Načtení hodnot z klávesnice do proměnné prijmeni, jmeno, vek, pocet sourozencu Zápis vytvořených proměnných přes fd do souboru trida.txt 5 scanf("%s %s %d %d",prijmeni, jmeno, &vek, &pocetsourozencu); fprintf(fd,"%s\n%s\n%d\n%d\n",prijmeni, jmeno, vek, pocetsourozencu); 5 i Uzavření souboru (fd); 6 fclose(fd); 6 Zastavení programu Smaž obrazovku 7 system("pause"); system ("CLS"); 7 Otevřeme soubor trida.txt na čtení r 8 fd=fopen("trida.txt","r"); 8 i=1;i<=n;+1 Načtení údajů ze souboru do proměnných Tisk údajů i for (i=1;i<=n;i++) fscanf(fd,"%s %s %d %d",prijmeni, jmeno, &vek, &pocetsourozencu); 10 printf("%s\n%s\n%d\n%d\n",prijmeni, jmeno, vek, pocetsourozencu); 11 9 Uzavření souboru 12 fclose(fd); 12 Zastavení programu K system("pause"); Obr. č. 53: Vývojový diagram programu 38

43 Obr. č. 54: Výpis programu v C Obr. č. 55: Obrazovka programu C po zadání údajů Obr. č. 56: Kontrolní výpis údajů v soubor pracov.txt textovým editorem Úkol č. 15 Nakreslete vývojový diagram pro výpočet průměrného věku a průměrného počtu sourozenců ve třídě z programu P4 (z úkolu č. 14). Metodický popis: Chceme-li vypočítat průměrný věk a průměrný počet sourozenců na žáka, musíme si vytvořit proměnné, do nichž budeme věk a počet sourozenců načítat. Nakonec jejich hodnoty podělíme počtem žáků. 39

44 věk = 0 počet = 0 Lauko Pavel 18 2 Dufko Ivan 19 3 Mala Jana 18 2 EOF Příjmení jméno věk počet Příjmení jméno věk počet trida.txt sourozenců sourozenců p 1 p 1 p 1 věk = věk + p 1 věk=0 18 věk = 18 věk = věk = 37 věk = věk = 55 Počet = počet + p 1 Počet = 2 Počet = počet + p 1 Počet = Počet = 7 Počet = věta 1 věta 2 věta 3 Obr. č. 57: Grafický popis řešení úkolu č. 14 Ze souboru tedy vyčteme u prvního záznamu příjmení, vyčteme jméno. Když načteme věk do proměnné p1, připočteme p1 k proměnné věk. (v našem případě = 18) Vyčteme počet sourozenců do p1 a tuto hodnotu přičteme k počet (v našem případě počet = 2). Toto opakujeme po větě 1 o i pro větu 2 a větu 3. Pro výpočet průměrného věku žáků podělíme výslednou proměnnou věku jejich počtem n = 3. Pro výpočet průměrného počtu sourozenci podělíme výslednou proměnnou věku počtem žáků n = 3. 40

45 Vývojový diagram: Z Deklarace proměnných Otevřeme soubor trida.txt na zápis Sour1 = sour1 + pocetsourozencu i n = 3 suma = vek1/n i=1;i<=n;i++ Načtení hodnot z klávesnice do prijmení, jmeno, vek, pocet sourozencu suma2 = sour1/n Průměrný věk je prumer1 Zápis vytvořených proměnných přes fd do souboru trida.txt Průměrný počet sourozenců je prumer2 Uzavři soubor trida.txt i Uzavření souboru (fd); Zastav program K Zastavení programu Otevřeme soubor trida.txt na čtení r i=1;i<=n;+1 Načtení údajů ze souboru trida.txt do proměnných vek1=vek1+vek 3 1 Načti ze souboru trida.txt přes fd do pocetsourozencu 2 Pozn.: Pokud potřebujeme přerušit vývojový diagram, ukončíme čáru kroužkem, do něhož napíšeme číslo. Na jiném místě, kde má vývojový diagram pokračovat, začneme stejným číslem v kroužku. Obr. č. 58: Vývojový diagram programu 41

46 Program v jazyku C #include <stdio.h> main () int vek,i,n,pocetsourozencu; char jmeno[30], prijmeni[30]; double prumer1,vek1,sour1,prumer2; FILE *fd; vek1=0; printf("kolik studentu chcete zadat?... "); scanf("%d",&n); fd=fopen("trida.txt","w"); for(i=0;i<n;i++) printf("jmeno studenta c.%d: ",i+1); scanf("%s",jmeno); fprintf(fd,"%s\n",jmeno); printf("prijmeni studenta c.%d: ",i+1); scanf("%s",prijmeni); fprintf(fd,"%s\n",prijmeni); printf("vek studenta c.%d: ",i+1); scanf("%d",&vek); fprintf(fd,"%d\n",vek); printf("pocet sourozencu studenta c.%d: ",i+1); scanf("%d",&pocetsourozencu); fprintf(fd,"%d\n",pocetsourozencu); fclose(fd); system("pause"); system("cls"); fd=fopen("trida.txt","r"); for(i=0;i<n;i++) fscanf(fd,"%s",jmeno); printf("%s\n", jmeno); fscanf(fd,"%s",prijmeni); printf("%s\n",prijmeni); fscanf(fd,"%d",&vek); printf("%d\n",vek); vek1=vek1+vek; fscanf(fd,"%d",&pocetsourozencu); printf("%d\n",pocetsourozencu); sour1=sour1+pocetsourozencu; deklarace vek i n pocetsourozencu jmeno prumer1 vek1 sour1 prumer2 fd prumer1=vek1/n; prumer2=sour1/n; printf("prumerny vek je: %0.2lf\n",prumer1); printf("prumerny pocet sourozencu je: %0.2lf\n",prumer2); fclose(fd); system("pause"); 42

47 Obr. č. 59: Obrazovka programu C 43

48 Obr. č. 61: Obrazovka programu C po zadání údajů Obr. č. 62: Obrazovka programu C po provedení výpočtů programem 1.5 Práce s EOF Úkol č. 16 Zadání: Vypracujte vývojový diagram a napište v jazyku C řešení následujícího úkolu: V úkolu č. 6 jsme vytvořili a naplnili soubor pracov.txt. Tento soubor obsahuje věty o struktuře: příjmení, jméno, mzda. Deklarujte proměnné následovně: char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; Vaším úkolem je otevřít tento soubor na čtení, zjistit, zda je naplněný a pokud ano vytisknout soubor (až po EOF). Využijte cyklus s while (!fscanf(fd)) a příkaz break v cyklu, pokud narazíme na EOF. 44

49 Metodika řešení: Nově použité pojmy: 1. fd==null Pokud není soubor vytvořený, je fd==null. Vytvořený soubor má fd NULL. Př.: if (fd==null) //jestliže soubor není vytvořen printf("soubor neexistuje"); //vytiskni zprávu return; //ukonči práci 2. RETURN v jednoduchém pojetí znamená ukončení prací. 3.!feof(fd) funkce feof( ) vrací nenulovou hodnotu, pokud soubor spojený s fd dosáhl svého konce. Jinak vrací nulu. Pokud je feof(fd) 0, dosáhl ukazatel na konec souboru. Znamená to, že existuje konec souboru. Př.: while (!feof(fd)) //dokud nenarazíme na EOF realizujte. 4. Příkaz break Pokud umístíme tento příkaz uvnitř cyklu, umožňuje ukončení cyklu v libovolném místě těla tohoto cyklu. Jakmile narazí program na break, je cyklus okamžitě ukončen a program pokračuje prvním příkazem následujícím za tímto cyklem. Př.: main ( ) int i; for(i=1;i 100; i++) printf("%d",i ); if (i==10) break; // pokud se i bude rovnat 10, ukončí se cyklus Tento program vypisuje na obrazovku čísla 1, 2 až

50 Pro řešení se nabízí využít cyklus while. Vývojový diagram Program v jazyku C Z Deklarace proměnných Otevřeme soubor trida.txt na čtení #include <stdio.h> main () //deklarace int i,n; char prijmeni [100][30], jmeno [100][30]; int mzda [100]; FILE *fd; fd=fopen("pracov.txt","r"); //otevři soubor fd== NULL? i = 0 ANO if(fd==null) Soubor neexistuje K if (fd==null) //Pokud soubor neexistuje, fd==null printf ("soubor neexistuje");return; i=0; EOF while (!feof(fd)) je while(!feof(fd))//dokud nenarazíš na EOF opakuj není Načti do pracov.txt prijmeni[1],jmeno[1], mzda[1] fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); cyklus while Stojím na EOF? ne i = i + 1 ano break Uzavři soubor Tisk prijmeni[0], jmeno[0], mzda[0], prijmeni[1], jmeno[1], mzda[1], prijmeni[2], jmeno[2], mzda[2].. if (feof(fd))break; i=i+1; fclose(fd); //uzavři soubor //blok tisk printf("%s %s %d\n",prijmeni[0],jmeno[0],mzda[0]); printf("%s %s %d\n",prijmeni[1],jmeno[1],mzda[1]); printf("%s %s %d\n",prijmeni[2],jmeno[2],mzda[2]); printf("%s %s %d\n",prijmeni[3],jmeno[3],mzda[3]); printf("%s %s %d\n",prijmeni[4],jmeno[4],mzda[4]); Zastavení programu system("pause"); Obr. č. 63: Vývojový diagram programu K 46

51 Obr. č. 64: Výpis programu v C Obr. č. 65: Výpis údajů ze souboru pracov.txt na obrazovku Samostatná práce studenta: Upravte výstupní sestavu tak, aby byla data zarovnána do sloupců: Janal Petr Mazal Jan Palouk Ivan Janza Radim Pavelec Radovan

52 Úkol č. 17 Zadání: Máme vytvořený soubor pracov.txt viz Úkol č. 16. Vaším úkolem je otevřít soubor pro čtení, zjistit zda je naplněný, a pokud ano, vytisknout soubor (až po EOF). Využijte cyklus do-while. Metodika řešení: Z Deklarace proměnných Otevřeme soubor pracov.txt na čtení i = 0 cyklus while!feof(fd) není EOF Načti ze souboru data do prijmeni[i],jmeno[i], mzda[i] je EOF Soubor neexistuje K i = i + 1 ne Je EOF? je EOF Uzavři soubor i=0;i<=4;1 Tisk prijmeni[i], jmeno[i], mzda[i] i Zastavení programu K Obr. č. 66: Vývojový diagram programu 48

53 Janal Petr Mazal Jan EOF pracov.txt Janal fd Petr fd fd Mazal fd Jan fd fd Janal prijmeni[0] Mazal prijmeni[1] A Petr jmeno [0] mzda[0] Jan jmeno[1] mzda[1] prijmeni[0], jmeno [0] mzda[0] prijmeni[1] jmeno[1] mzda[1] B Obr. č. 67: Mechanismus čtení pracov.txt Program v C: #include <stdio.h> main () int i,n; char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; FILE *fd; fd=fopen("pracov.txt","r"); i=0; if(!feof(fd)) do fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); A i=i+1; while(!feof(fd)); fclose(fd); for(i=0;i<=4;i++) printf("%s%s%d\n",prijmeni[i],jmeno[i],mzda[i]); system("pause"); B 49

54 Obr. č. 68: Výpis programu v C Obr. č. 69: Výpis údajů ze souboru pracov.txt na obrazovku 50

55 Úkol č. 18 Vývojový diagram a program v jazyku C z úkolu č. 16 upravte tak, aby samostatného cyklu for pro tisk příjmení, jméno a mzdy nebylo vůbec potřeba. Metodika řešení: Řešení tohoto úkolu je velmi jednoduché. Využijeme příkaz printf viz následující. Program v C: #include <stdio.h> main () int i,n; char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; FILE *fd; fd=fopen("pracov.txt","r"); i=0; 3 while(!feof(fd)) //dokud nenarazíš na eof opakuj 4 fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); if(!feof(fd)) i=i+1; 8 fclose(fd); 9 system("pause"); printf("%s %s %d\n",prijmeni[i],jmeno[i],mzda[i]); 10 Pozn.: Soubor pracov.txt je textový soubor. Na posledním řádku proto může být jen ENTER a nejsou tam žádná data. Program by nic nenačetl, zůstala by poslední data v proměnných, a proto by program realizoval znovu výpis posledních dat. Narazí-li 6 na EOF, projde na konec cyklu a tisk již nevyvolá. 5 7 Obr. č. 70: Výpis programu v C Obr. č. 71: Výpis programu v C 51

56 Úkol č. 19 Zadání: Máte soubor pracov.txt o zadané struktuře. Vypracujte vývojový diagram a program v C, který zjistí, zda je soubor pracov.txt prázdný nebo naplněný. Pokud nejde o prázdný soubor, v následující části programu jej vyčteme. Metodický pokyn: Pokud je soubor pracov.txt prázdný, pokračujeme prvním načtením do pomocné proměnné CH CH=fgetc(fd) EOF. Pozor tímto vyčtením první položky ze souboru pracov.txt jsme se posunuli na položku druhou, a proto musíme soubor znovu otevřít, abychom se vrátili na položku č. 1. Touto operací zjišťujeme, zda se nepokoušíme číst prázdný soubor. Vývojový diagram Program v jazyku C: Z Deklarace Otevřeme soubor pracov.txt na čtení Nastavení počítadla i =0 Načtení prvního údaje ze souboru do proměnné ch ch ==EOF? ne Soubor není prázdný Otevři znovu soubor pracov.txt na čtení i=1;i<=4;i+1 Načti z fd doprijmeni[i], jmeno[i], mzda[i] ano Soubor je prázdný #include <stdio.h> main () int i,n; char prijmeni [100][30]; char jmeno [100][30]; int mzda [100]; char ch; FILE *fd; fd=fopen("pracov.txt","r"); i=0; ch=fgetc(fd); if(ch==eof) printf("soubor je prazdny\n"); else printf("soubor neni prazdny\n"); fd=fopen("pracov.txt","r"); //nutno znovu otevřít soubor, abychom se vrátili na začátek souboru for(i=0;i<=4;i++) fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); printf("%s%s%d\n",prijmeni[i],jmeno[i],mzda[i]); Vytiskni prijmeni[i], jmeno[i], mzda[i] i Uzavření souboru fclose(fd); system("pause"); Zastavení programu K Obr. č. 72: Vývojový diagram programu 52

57 Obr. č. 73: Výpis programu v C Obr. č. 74: Výpis údajů ze souboru pracov.txt Úkol č. 20 Aplikujte tento program na soubor pracov1.txt vytvořený v Úkolu č. 3 (tam jsme vytvořili prázdný soubor), tak abyste ověřili, zda program funguje i pro jiný soubor (má ukázat, že soubor je prázdný). K řešení v jazyku C nakreslete vývojový diagram. Program v jazyku C: #include <stdio.h> main () int i,n; char prijmeni [100][30], char jmeno [100][30]; int mzda [100]; char ch; FILE *fd; fd=fopen("pracov1.txt","r"); i=0; ch=fgetc(fd); if(ch==eof) printf("soubor je prazdny\n"); else printf("soubor neni prazdny\n"); for(i=0;i<=4;i++) fscanf(fd,"%s%s%d",prijmeni[i],jmeno[i],&mzda[i]); printf("%s%s%d\n",prijmeni[i],jmeno[i],mzda[i]); fclose(fd); Obr. č. 75: Výpis programu v C system("pause"); 53

58 Obr. č. 76: Výpis programu v C Nakreslete vývojový diagram 54

59 Úkol č. 21 Zadání: Realizujte úkol č. 19 s využitím cyklu while. Metodický pokyn: V tomto případě vycházíme z úkolu č. 19 s využitím cyklu while. Po počátečním ověření, zda soubor není prázdný, použijeme konstrukci if((fd=fopen("pracov.txt", "r"))=null return; která při načtení souboru zjistí, že fd je prázdná a program ukončí. Vývojový diagram Program v jazyku C Z Deklarace proměnných i = 0 Otevři soubor pracov.txt na čtení #include <stdio.h> main() char prijmeni[100][30]; char jmeno[100][30]; int mzda[100]; int i,n; FILE *fd; EOF? fd==null ANO return i=0; if((fd=fopen("pracov.txt","r"))==null) return; //pokud je soubor prázdný, ukončí práci NE K EOF? ANO while(!feof(fd)) //cteni souboru NE Načti data fcanf(fd,"%s%s%d",prijmeni[i],jmeno[i],& mzda[i]); EOF ANO brake if (feof(fd)) break; //pokud fd stojí na EOF, přejdi na konec cyklu NE i = i + 1 Zavři soubor i = n i=i+1; fclose(fd); i=n; i=1; n; +1 Vypiš data i i Zastavení programu for (i = 0;i < n; i++) printf("%s%s%d",prijmeni[i],jmeno[i], &mzda[i]); system("pause"); //ceka stisk klavesy K Obr. č. 77: Vývojový diagram programu 55

60 Obr. č. 78: Výpis programu v C Obr. č. 79: Výpis údajů ze souboru pracov.txt 56

61 Úkol č. 22 Zadání: Vypracujte vývojový diagram na evidenci termínů narozenin blízkých a spolužáků. Počet účastníků databáze nesmí být větší než 100. Program bude mít MENU z zadání dat, c čtení dat. Metodický pokyn: V tomto příkladě vytváříme MENU, které dovolí operátorovi volit jednu ze dvou variant zápis (vytvoření databáze) nebo čtení databáze. Rozhodování v MENU děláme podle proměnné POVEL. Protože příkaz getchar činí často potíže, uložíme si v tomto případě volbu (povel) do nultého prvku pole povel [2] typ char. Vývojový diagram: Z Deklarace proměnných 1 n Zadej počet položek n =? MENU Z zadání dat C čtení dat Načti zvolenou variantu do povel Povel =? 5 c 5b 5a Otevři soubor svatky.txt na zápis z 6 Otevři soubor svatky.txt na čtení 14 i = 1, n, i++ 7 i = 1, n, i++ 15 Pořadí pracovníka [i]; Zadej Příjmení [i]; 8 9 Přečti Příjmení [i]; Jméno [i]; Datum narození [i] ze souboru pracov.txt 16 Zadej Jméno [i]; 10 Zadej Datum narození [i]; 11 Zapiš Příjmení [i]; Jméno [i]; Datum narození [i] do souboru pracov.txt 12 Vytiskni Příjmení [i]; Jméno [i]; Datum narození [i] 17 i 13 i 18 Zavři soubor svatky.txt 19 Vytiskni Konec 20 Samostatná práce studenta: Zastav program 21 Podrobněji rozpracuj bloky 12 a 17. Obr. č. 80: Vývojový diagram programu K 22 57

62 Program v jazyku C: Varianta A #include <stdio.h> main () int n,i; 1 char prijmeni [100][30]; char jmeno [100][30]; char datum_narozeni [100][30]; char povel[2]; FILE *fd; printf("zadej pocet polozek:"); 2 scanf("%d",&n); printf("chcete zapisovat...z\n"); 3 printf("chcete tisknout... T\n"); scanf("%s",povel); 4 //načtení povelu T(čtení) nebo Z (zápis) if(povel[0]=='z') 5a fd=fopen("svatky.txt","w"); 6 for(i=1;i<=n;i++) 7 printf("zadej pracovnika %d\n",i); 8 scanf("%s",prijmeni[i]); 9 scanf("%s",jmeno[i]); 10 scanf("%s",datum_narozeni[i]); 11 fprintf(fd,"%s %s %s",prijmeni[i],jmeno[i], datum_narozeni[i]); fclose(fd); 19 if(povel[0]=='t') 5b fd=fopen("svatky.txt","r"); 14 for(i=1;i<=n;i++) 15 fscanf(fd,"%s %s %s",prijmeni[i],jmeno[i],datum_narozeni[i]); printf("%s %s %s\n",prijmeni[i],jmeno[i],datum_narozeni[i]); 18 fclose(fd); 19 printf("konec"); 20 system("pause");

63 Výpis programu a obrazovky jsou v následujícím textu. Obr. č. 81: Výpis programu v C Obr. č. 82: Obrazovka v programu C po zadání údajů Obr. č. 83: Obrazovka v programu C se zadáním údajů pro zobrazení dat ze souboru 59

64 Obr. č. 84: Výpis souboru svatky.txt na obrazovku Výpis souboru v textovém editoru: věta 1 věta 2 věta 3 Obr. č. 85: Výpis souboru svatky.txt v textovém editoru Varianta B V této variantě si ukážeme, že getch lze pro načtení volby použít také. #include <stdio.h> main () int n,i; char prijmeni [100][30]; char jmeno [100][30]; char datum_narozeni [100][30]; char p; FILE *fd; printf("zadej pocet polozek:"); scanf("%d",&n); printf("chcete zapisovat...z\n"); printf("chcete tisknout... T\n"); p=getch(); 1 60 if(p=='z') fd=fopen("svatky.txt","w"); for(i=1;i<=n;i++) printf("zadej pracovnika %d\n",i); scanf("%s",prijmeni[i]); scanf("%s",jmeno[i]); scanf("%s",datum_narozeni[i]); fprintf(fd,"%s %s %s ",prijmeni[i],jmeno[i],datum_narozeni[i]); fclose(fd); if(p=='t') fd=fopen("svatky.txt","r"); for(i=1;i<=n;i++) fscanf(fd,"%s %s %s",prijmeni[i],jmeno[i],datum_narozeni[i]); printf("%s %s %s\n",prijmeni[i],jmeno[i],datum_narozeni[i]); fclose(fd);

65 1 printf("konec"); system("pause"); Velkou nevýhodou tohoto programu je, že při režimu T stisknout, musíme v úvodu uvést, kolik vět soubor obsahuje. Potřebujeme program, který načte a zapíše do databáze takový počet vět (pracovníků), jaký vyžadujeme. Následně v režimu T vytiskneme celý soubor (větu po větě, až po EOF). V dalším textu si ještě procvičíme vytváření a čtení jednoduché databáze. 1.6 Tvorba databází Úkol č. 23 Zadání: Vytvořte personální databázi pracovníků útvaru. Počet pracovníků je zadán a nepřekročí 100. V této databázi bude o každém pracovníkovi uloženo: 1. Příjmení 2. Jméno 3. Bydliště město 4. Bydliště ulice 5. Bydliště číslo domu 6. Datum narození Program Vám nabídne: a) vytvoření databáze, b) čtení databáze. Data uložte do textového souboru personalistika.txt Metodický pokyn: Tato úloha procvičí dovednosti, které jsme získali v předešlém studiu: - práce s MENU, - práce se souborem. Jedná se o standardní software, který využije každý ekonom, manažer, účetní nebo personalista ve své práci. Soubor personalistika.txt bude mít strukturu: věta 1: Příjmení [0] jméno [0] město [0] ulice[0] číslo domu [0] personalistika.txt Příjmení [1] jméno [1] město [1] ulice[1] číslo domu [1] Datum narození - den [0] Datum narození - den [1] Datum narození - měsíc [0] Datum narození - měsíc [1] Datum narození rok [0] Datum narození rok [1] Příjmení [2] jméno [2] město [2] ulice[2] číslo domu [2] Datum narození - den [2] Datum narození - měsíc [2] Datum narození rok [2] 61

66 Tuto strukturu lze také zobrazit následujícím grafem (jiné zobrazení této databáze): Personalistika.txt Pracovník [0] Pracovník [1] Pracovník [2] Pracovník [99] Příjmení [0] Jméno [0] Bydliště - město [0] Bydliště ulice [0] Bydliště číslo domu [0] Datum narození den [0] Datum narození měsíc [0] Datum narození rok [0] Řešení: Vývojový diagram Deklarace Z Zadat počet položek MENU: Zadat data o pracovníkovi.. Z Tisknout data o pracovníkovi.. T Načtení volby do Povel = Z Povel Povel = T Otevřít soubor personalistika.txt na zápis Řešíme "w" Otevři soubor personalistika.tx. na čtení Řešíme "r" i=1;i<=n;i++) i=1;i<=n;i++) Zadat data Příjmení [i] Jméno [i] Bydliště - město [i] Bydliště ulice [i] Bydliště číslo domu [i] Datum narození den [i] Datum narození měsíc [i] Datum narození rok [i] Načtení dat o pracovníkovi z personalistika.txt přes fd do proměnných Vytiskni proměnné i Zavři soubor Načtení dat přes fd do personalistika.txt PAUSE i Konec Obr. č. 86: Vývojový diagram programu 62 Z

67 Zápis v jazyku C: #include <stdio.h> main () int i,n; int ch; /*udaje ze souboru */ char prijmeni[100][30]; char jmeno[100][30]; char mesto[100][30]; char ulice[100][30]; char cislo[100][20]; char datum[100][11]; //datum bereme jako řetězec /*ukazka dat*/ /*Novak Jan Brno Veveri 145/c */ FILE *fd; i=0; printf("zadejte pocet pracovniku:"); scanf ("%d",&n); printf("menu Z zapis T tisk:\n"); printf("zadejte prvni pismeno:\n"); ch=getch(); if(ch=='z') fd=fopen("personalistika.txt","w"); //otevření pro zápis údajů o pracovnících for (i=0;i<n;i++) printf("zadejte prijmeni:");scanf ("%s",prijmeni[i]); printf("zadejte jmeno:");scanf ("%s",jmeno[i]); printf("zadejte mesto:");scanf ("%s",mesto[i]); printf("zadejte ulici:");scanf ("%s",ulice[i]); printf("zadejte cislo domu:");scanf ("%s",cislo[i]); printf("zadejte datum [den.mesic.rok]:");scanf ("%s",datum[i]); fprintf(fd,"%s ",prijmeni[i]); fprintf(fd,"%s ",jmeno[i]); fprintf(fd,"%s ",mesto[i]); fprintf(fd,"%s ",ulice[i]); fprintf(fd,"%s ",cislo[i]); fprintf(fd,"%s\n",datum[i]); fclose(fd);//uzavření souboru printf("data zapsana do souboru\n"); //Zápis if(ch=='t') fd=fopen("personalistika.txt","r"); //otevření pro čtení printf("data ze souboru\n"); 63

68 2 1 3 for (i=0;i<n;i++) fscanf(fd,"%s%s%s%s%s%s",prijmeni[i],jmeno[i],mesto[i],ulice[ i],cislo[i],datum[i]);//čtení dalších řádků souboru printf("%6d ",i+1); //zarovnání zprava printf("%-15s",prijmeni[i]); //zarovnání zleva printf("%-15s",jmeno[i]); printf("%-10s",mesto[i]); printf("%-10s",ulice[i]); printf("%-8s",cislo[i]); printf("%-10s\n",datum[i]); fclose(fd);//uzavření souboru system("pause"); Obr. č. 87: Výpis programu v C 64

69 Obr. č. 88: Výpis programu v C Obr. č. 89: Výpis programu v C Obr. č. 90: Výpis databáze v textovém editoru Obr. č. 91: Výpis programu v C 65

70 Úkol č. 24 Zadání: Vypracujte vývojový diagram a přepište do jazyka C následující zadání: Máme vytvořit databázi pracovníků, do níž můžeme zapsat (v MENU..Z) nebo z ní číst (v MENU.T). Struktura věty souboru personalistika.txt je: Příjmení, jméno, bydliště-město, bydliště - ulice, bydliště - číslo domu, datum narození. Program má odstranit všechny nedostatky řešení úkolu č. 23: a) při zadávání údajů bude čtení dat z klávesnice ukončen po dotazu na pokračování, b) při čtení vět proběhne čtení souboru automaticky až po EOF. Metodický pokyn: Vycházíme z příkladu č. 23. V tomto případě provedeme načtení dat ze souboru personalistika.txt pomocí cyklu do-while s tím, že pro rozhodování připravíme speciální menu a proměnnou pokračovat typu int. scanf ("%d",pokracovat); while(pokracovat==1); načti pracovníka Načtení dat ze souboru personalistika.txt realizuje sekvence příkazů B: while(!eof(fd)); Načtení dat ze souboru personalistika.txt přes fd do proměnných prijmeni[i],jmeno[i].. Ukončení cyklu v případě, že se narazí na EOF (if (feof(fd)break;) do 66

71 Vývojový diagram: Z Deklarace proměnných MENU Z zadání dat T tisk A CH = Z Načti CH CH Otevři soubor personalistika.txt na zápis načti z klávesnice CH = T B prijmeni [i] jmeno [i] mesto [i] ulice [i] Otevři soubor personalistika.txt na čtení cislo [i] datum [i] prijmeni [i] jmeno [i] mesto [i] ulice [i] cislo [i] datum [i] pokračovat = 1 konec = 0 Zápis do souboru EOF Načtení z fd do proměnných prijmeni [i], jmeno [i]., mesto [i] ulice [i], cislo [i], datum [i] stojím na EOF CH EOF ANO vystup z cyklu CH == 1 NE Tisk prijmeni [i], jmeno [i]., mesto [i], ulice [i], cislo [i], datum [i] Zavři soubor i = i + 1 Data zapsaná do souboru Zavři soubor zastav K Obr. č. 92: Vývojový diagram programu 67

72 Program v jazyku C: #include <stdio.h> main () int i,n; int ch,pokracovat; /*udaje ze souboru */ char prijmeni[100][30]; char jmeno[100][30]; char mesto[100][30]; char ulice[100][30]; char cislo[100][20]; char datum[100][11]; /*ukazka dat*/ /* Novak Jan Brno Veveri 145/c */ FILE *fd; i=0; printf("menu Z zapis T tisk:\n"); printf("zadejte prvni pismeno:\n"); ch=getch(); if(ch=='z') fd=fopen("personalistika.txt","w"); //otevreni pro cteni A do printf("zadejte prijmeni:");scanf ("%s",prijmeni[i]); printf("zadejte jmeno:");scanf ("%s",jmeno[i]); printf("zadejte mesto:");scanf ("%s",mesto[i]); printf("zadejte ulici:");scanf ("%s",ulice[i]); printf("zadejte cislo domu:");scanf ("%s",cislo[i]); printf("zadejte datum [den.mesic.rok]:");scanf ("%s",datum[i]); fprintf(fd,"%s ",prijmeni[i]); fprintf(fd,"%s ",jmeno[i]); fprintf(fd,"%s ",mesto[i]); fprintf(fd,"%s ",ulice[i]); fprintf(fd,"%s ",cislo[i]); fprintf(fd,"%s\n",datum[i]); i++; printf("pokracovat ano=1 / ne=0:"); scanf ("%d",&pokracovat); while(pokracovat==1); fclose(fd);//uzavreni souboru printf("data zapsana do souboru\n"); //Zapis if(ch=='t') B fd=fopen("personalistika.txt","r"); //otevreni pro cteni printf("data ze souboru\n"); 2 while(!feof(fd)) 1 fscanf(fd,"%s%s%s%s%s%s",prijmeni[i],jmeno[i],mesto[i],ulice[i],cislo[i],datum[i]); //cteni dalsich radku souboru 68

73 2 jj 1 if ( feof(fd) ) break; printf("%6d ",i+1); printf("%-15s",prijmeni[i]); printf("%-15s",jmeno[i]); printf("%-10s",mesto[i]); printf("%-10s",ulice[i]); printf("%-8s",cislo[i]); printf("%-10s\n",datum[i]); i++; fclose(fd);//uzavreni souboru system("pause"); Obr. č. 93: Výpis programu v C++ 69

74 Úkol č. 25 Nakreslete vývojový diagram a program v jazyku C z úlohy č. 24 tak, aby čtení vět z klávesnice bylo ukončeno po stisknutí klávesy ENTER. Metodický pokyn: V tomto případě použijeme malý trik. Pokud při zadávání příjmení zadáme do nulté pozice nulu v bloku 1 v následujícím bloku testujeme tuto pozici na nulu v příkazu if (prijmeni[i] [0] == brak; vyskočíme z cyklu, soubor personalistika.txt se zavře a program se zastaví. Podobně také v odcházíme z cyklu příkazem if (feof (fd)) break; 2 70

75 Vývojový diagram: Z Deklarace proměnných i = 0 MENU Z zadání dat T tisk Načti CH ANO zápis CH = Z Otevři soubor personalistika.txt na zápis Zadej prijmeni [i] Prijmeni [i] [0] 1 == "0" vystup z cyklu Otevři soubor personalistika.txt na čtení načti prijmeni [i] načti jmeno [i] načti mesto [i] načti ulice [i] načti cislo [i] načti datum [i] zapiš prijmeni [i], jmeno [i] mesto [i], ulice [i], cislo [i] datum [i] do souboru personalistika.txt i = i + 1 stojím na EOF prázdný soubor EOF nestojím na EOF while (1) Načtení z fd do proměnných prijmeni [i], jmeno [i]., mesto [i] ulice [i], cislo [i], datum [i] Zavři soubor zastav ANO vystup z cyklu EOF tisk NE K Tisk: prijmeni [i], jmeno [i] mesto [i], ulice [i], cislo [i] datum [i] Obr. č. 94: Vývojový diagram programu i = i

76 Program v jazyku C: #include <stdio.h> main () int i,n; int ch,pokracovat; /*udaje ze souboru */ char prijmeni[100][30]; char jmeno[100][30]; char mesto[100][30]; char ulice[100][30]; char cislo[100][20]; char datum[100][11]; /*ukazka dat*/ /*Novak Jan Brno Veveri 145/c */ FILE *fd; i=0; printf("menu Z zapis T tisk:\n"); printf("zadejte prvni pismeno:\n"); ch=getch(); if(ch=='z') fd=fopen("personalistika.txt","w"); //otevreni pro cteni do printf("zadejte prijmeni:");scanf ("%s",prijmeni[i]); //pokud nezadame prijmeni, cyklus se ukonci if (prijmeni[i][0]=='0') break; //pokud se první písmeno prijmeni = nule, brake //naplnení proměnných z klávesnice printf("zadejte jmeno:");scanf ("%s",jmeno[i]); printf("zadejte mesto:");scanf ("%s",mesto[i]); printf("zadejte ulici:");scanf ("%s",ulice[i]); printf("zadejte cislo domu:");scanf ("%s",cislo[i]); printf("zadejte datum [den.mesic.rok]:");scanf ("%s",datum[i]); //naplnení proměnných do souboru personalistika.txt přes fd fprintf(fd,"%s ",prijmeni[i]); fprintf(fd,"%s ",jmeno[i]); fprintf(fd,"%s ",mesto[i]); fprintf(fd,"%s ",ulice[i]); fprintf(fd,"%s ",cislo[i]); fprintf(fd,"%s\n",datum[i]); i++; while(1); fclose(fd);//uzavreni souboru printf("data zapsana do souboru\n"); //Zapis if(ch=='t') fd=fopen("personalistika.txt","r"); //otevreni pro cteni printf("data ze souboru\n"); while(!feof(fd))

77 3 2 1 fscanf(fd,"%s%s%s%s%s%s",prijmeni[i],jmeno[i],mesto[i],ulice[i],cislo[i],datum [i]);//cteni dalsich raku souboru if ( feof(fd) ) break; printf("%6d ",i+1); printf("%-15s",prijmeni[i]); printf("%-15s",jmeno[i]); printf("%-10s",mesto[i]); printf("%-10s",ulice[i]); printf("%-8s",cislo[i]); printf("%-10s\n",datum[i]); i++; fclose(fd);//uzavreni souboru system("pause"); 1.7 Práce s parametrem r+ V následujícím textu se budeme zabývat tím, jak do vytvořeného souboru dopsat za poslední větu další data (věty). Máme například databázi narozenin přátel prijmeni jmeno datum prijmeni jmeno datum narození narození svatky.txt věta 1 věta 2 EOF a ukázala se potřeba zapsat za poslední větu další dva přátele. Pro takový případ můžeme soubor svatky.txt otevřít s parametrem (r+), který lze použít následovně: 1. Otevřeme soubor svatky.txt s parametrem r+. 2. Postupně čteme všechny věty až po EOF. 3. Zapíšeme nové věty. 4. Soubor uzavřeme. Použití r+ parametru ukazuje následující úkol č. 26. Jak tuto konstrukci využijeme v praxi? Máme například soubor personalistika.txt a máme v něm evidováno 5 pracovníků malého podniku. Podnik nyní přijme dalších 7 pracovníků a soubor personalistika.txt potřebuje tyto pracovníky doplnit. K řešení této úlohy využíváme parametr r+ pro práci se soubory. V takovém případě nejprve přečteme 5 stávajících vět (fd se posune od první věty za 5 větu). Následuje zápis dalších 7 vět přes fd. Stávající položky Nově zapsané položky Kotek Malík Fisko Karda Blaza EOF personalistika.txt 73

78 Úkol č. 26 Zadání: Soubor plat.txt, který vznikl v úkolu č. 2, nejprve přečtěte a následně do něj zapište 3 nové položky. Zobrazte v textovém editoru. Metodický pokyn a vývojový diagram: Z příkladu č. 2 máme vytvořený soubor plat.txt s jednou konkrétní hodnotou EOF plat.txt Tento soubor lze přečíst v textovém editoru: Obr. č. 95: Data uložená v souboru plat.txt r+ znamená, že musíme přečíst všechny položky souboru plat.txt a teprve potom můžeme připisovat nová data. Konec souboru je označen EOF. Pokud máme dopsat do souboru další tři položky, bude mít po skončení práce následující strukturu: EOF první položka druhá položka plat.txt Ukazatel souboru upozorňuje na začátek souboru. Postup vidíme na následujícím vývojovém diagramu. Ve 4 a 5 načteme první položku do proměnné p1 a p1 vytiskneme na obrazovku. Ukazovátko se posune na druhou položku. Protože máme nastavený režim r+, máme právo do druhé položky zapisovat. To provedeme načtením hodnoty z klávesnice (v našem případě ) do p1 a p1 zapíšeme p1 přes fd do plat.txt na druhou pozici 6 ( 7 7a 7b 7c ). Nyní má soubor plat.txt následující strukturu: EOF Plat.txt Načtení další položky činíme podobně v Nyní má soubor následující strukturu: 8 8a 9 9a 9b 9c EOF Načtení další položky činíme podobně v 10 10a 11 11a 11b 11c Ve uzavřeme soubor a zrušíme.

79 Tento soubor bude mít následující strukturu: EOF Z Deklarace proměnných Otevři soubor plat.txt na r fd EOF plat.txt 3a 3b 3c 7c 9c 11c EOF EOF EOF EOF 4 4a Načteme první (jedinou) Položku do p1 Vytiskni p1 5 p a 7b 9b 11b Načti další položku do p1 6 6a Zapiš p1 do plat.txt 7 p1 7a Načti další položku do p1 8a Zapiš p1 do plat.txt 9 p1 9a Načti další položku do p a p1 Zapiš p1 do plat.txt 11a Uzavři soubor plat.txt Zastav obrazovku Obsah nově vytvořeného souboru EOF plat.txt Z Obr. č. 96: Vývojový diagram programu 75

80 Program v jazyku C: #include <stdio.h> main () int p1; 2 FILE *fd; fd=fopen("plat.txt","r+"); 3 fscanf(fd,"%d",&p1); printf("%d\n",p1); 4 5 Načtení první položky do souboru p1, posun fd. //jsme na konci souboru scanf("%d",&p1); 6 fprintf(fd,"\n%d\n",p1); scanf("%d",&p1); 8 fprintf(fd,"%d\n",p1); 9 7 Zápis druhé položky do souboru p1, posun fd. Zápis třetí položky do souboru p1, posun fd. scanf("%d",&p1); 11 fprintf(fd,"%d\n",p1); 11 Zápis čtvrté položky do souboru p1, posun fd. fclose(fd); //zruseni fd system("pause"); Uzavření souboru plat.txt 76

81 Obr. č. 97: Původní soubor plat.txt Obr. č. 98: Obrazovka programu C Obr. č. 99: Obrazovka programu C po zadání první hodnoty Obr. č. 100: Obrazovka programu C po zadání druhé hodnoty Obr. č. 101: Obrazovka programu v C po zadání všech hodnot Obr. č. 102: Výpis výsledku v textovém editoru 77

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru

Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Programování v jazyce C pro chemiky (C2160) 4. Textové řetězce, zápis dat do souboru Textové řetězce V jazyce C neexistuje typ proměnné, který by byl určen výhradně pro ukládání textu V jazyce C používáme

Více

11b Další příklady operací vstupu a výstupu (úvod viz 10)

11b Další příklady operací vstupu a výstupu (úvod viz 10) 11b Další příklady operací vstupu a výstupu (úvod viz 10) V souboru budu mít uloženo:....... ahoj - čtu tečky pomocí c = getc(fr) až po 'a', ale potom volám funkci, která má zpracovat celé slovo ahoj a

Více

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16

Jazyk C práce se soubory. Jan Hnilica Počítačové modelování 16 Jazyk C práce se soubory 1 Soubory Použití souborů pro vstup většího množství dat do programu (uživatel nezadává z klávesnice ručně tisíce údajů...) pro uložení většího množství výsledků, např. k pozdějšímu

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce.

2 Základní funkce a operátory V této kapitole se seznámíme s použitím funkce printf, probereme základní operátory a uvedeme nejdůležitější funkce. Vážení zákazníci, dovolujeme si Vás upozornit, že na tuto ukázku knihy se vztahují autorská práva, tzv copyright To znamená, že ukázka má sloužit výhradnì pro osobní potøebu potenciálního kupujícího (aby

Více

- jak udělat konstantu long int: L long velka = 78L;

- jak udělat konstantu long int: L long velka = 78L; Konstanty (konstatní hodnoty) Např.: - desítkové: 25, 45, 567, 45.678 - osmičkové: 045, 023, 03 vždy začínají 0 - šestnáctkové: 0x12, 0xF2, 0Xcd, 0xff, 0xFF - jak udělat konstantu long int: 245566553L

Více

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: 1. lekce 1. Minimální program do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme: #include #include int main() { printf("hello world!\n"); return 0; 2.

Více

VISUAL BASIC. Práce se soubory

VISUAL BASIC. Práce se soubory VISUAL BASIC Práce se soubory Práce se soubory 1/2 2 Vstupní data pro programy bývají uloženy do souborů Vstupy pro výpočet, nastavení vzhledu aplikace Výsledky práce programu je potřeba uchovat uložit

Více

Práce se soubory. Základy programování 2 Tomáš Kühr

Práce se soubory. Základy programování 2 Tomáš Kühr Práce se soubory Základy programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup

Více

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek

8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 8. lekce Úvod do jazyka C 3. část Základní příkazy jazyka C Miroslav Jílek 1/41 Základní příkazy Všechny příkazy se píšou malými písmeny! Za většinou příkazů musí být středník (;)! 2/41 Základní příkazy

Více

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu }

for (i = 0, j = 5; i < 10; i++) { // tělo cyklu } 5. Operátor čárka, - slouží k jistému určení pořadí vykonání dvou příkazů - oddělím-li čárkou dva příkazy, je jisté, že ten první bude vykonán dříve než příkaz druhý. Např.: i = 5; j = 8; - po překladu

Více

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr Práce se soubory Úvod do programování 2 Tomáš Kühr Soubory z pohledu C u Soubor chápeme jako posloupnost bytů uložených na disku u Datový proud (anglicky stream) u Ještě obecnější přístup u Sjednocuje

Více

Práce s binárními soubory. Základy programování 2 Tomáš Kühr

Práce s binárními soubory. Základy programování 2 Tomáš Kühr Práce s binárními soubory Základy programování 2 Tomáš Kühr Binární soubory Mohou mít libovolnou strukturu Data jsou uložena ve stejné podobě jako v paměti za běhu programu Výhody: Pro uložení je potřeba

Více

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců.

Zadání: TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců. TÉMA: Zápis algoritmu, čtení textového souboru, porovnání řetězců. Zadání: V textovém souboru text.txt je uloženo několik řádků textu. Vytvořte makro, které určí nejdelší řádek z daného souboru. 1. Název

Více

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru

Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Programování v jazyce C pro chemiky (C2160) 5. Čtení dat ze souboru Čtení dat ze souboru FILE *f = NULL; char str[10] = ""; float a = 0.0, b = 0.0; Soubor otevíráme v režimu pro čtení "r" f = fopen("/home/martinp/testdata/test1.txt",

Více

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h>

9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include <stdio.h> 9.3.2010 Program převod z desítkové na dvojkovou soustavu: /* Prevod desitkove na binarni */ #include int main(void) { int dcislo, kolikbcislic = 0, mezivysledek = 0, i; int vysledek[1000]; printf("zadejte

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

10 Práce s řetězci - pokračování

10 Práce s řetězci - pokračování 10 Práce s řetězci - pokračování Máme deklarováno: char retez[50]; - čtení z klávesnice: scanf("%s", retez); - čtení zadané počtu znaků z klávesnice scanf("%10s", retez); // přečti řetězec z klávesnice,max

Více

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++

Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Pokročilé programování v jazyce C pro chemiky (C3220) Vstup a výstup v C++ Proudy pro standardní vstup a výstup V jazyce C++ provádíme textový vstup a výstup prostřednictvím tzv. datových proudů Datové

Více

Vyúčtování daně z příjmu ve Mzdách Profi 2015

Vyúčtování daně z příjmu ve Mzdách Profi 2015 Vyúčtování daně z příjmu ve Mzdách Profi 2015 Rozsáhlý formulář Vyúčtování daně se dosud podával klasicky na tištěném formuláři, přičemž program Mzdy Profi pro něj sestavil a vytisknul podklad pro vyplnění.

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Textové soubory

Více

Práce se soubory. Úvod do programování 2 Tomáš Kühr

Práce se soubory. Úvod do programování 2 Tomáš Kühr Práce se soubory Úvod do programování 2 Tomáš Kühr Soubory z pohledu C Soubor zjednodušeně chápeme jako posloupnost bytů uložených někde na disku Datový proud (anglicky stream) Ještě obecnější přístup

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Čtvrté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 4.

Více

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů

Začínáme vážně programovat. Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Začínáme vážně programovat Řídící struktury Přetypování Vstupně výstupní operace Vlastní tvorba programů Podmínky a cykly Dokončení stručného přehledu řídících struktur jazyka C. Složený příkaz, blok Pascalské

Více

Algoritmy a datové struktury

Algoritmy a datové struktury Algoritmy a datové struktury 1 / 34 Obsah přednášky Základní řídící struktury posloupnost příkazů podmínka cyklus s podmínkou na začátku cyklus s podmínkou na konci cyklus s pevným počtem opakování Jednoduchá

Více

Poslední nenulová číslice faktoriálu

Poslední nenulová číslice faktoriálu Poslední nenulová číslice faktoriálu Kateřina Bambušková BAM015, I206 Abstrakt V tomto článku je popsán a vyřešen problém s určením poslední nenulové číslice faktoriálu přirozeného čísla N. Celý princip

Více

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek

9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 9. lekce Úvod do jazyka C 4. část Funkce, rekurze Editace, kompilace, spuštění Miroslav Jílek 1/24 Editační prostření Kód programu lze editovat v jakémkoli textovém editoru. 2/24 Editační prostření Kód

Více

IMPORT DAT DO DATABÁZE

IMPORT DAT DO DATABÁZE Úvod do problematiky IMPORT DAT DO DATABÁZE Databázové tabulky lze naplňovat i již dříve pořízenými údaji. Můžeme tak snadno načíst do databáze data pořízená v textovém editoru WORD nebo v tabulkovém procesoru

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK;

Např.: // v hlavičkovém souboru nebo na začátku // programu (pod include): typedef struct { char jmeno[20]; char prijmeni[20]; int rok_nar; } CLOVEK; Struktury - složený datový typ. - datový typ jehož položky jsou jiné proměnné: - používá obvykle dohromady s příkazem typedef nechci vypisovat opakovaně složitou deklaraci pomocí typedef udělám nový datový

Více

Základy PERLu snadno a rychle

Základy PERLu snadno a rychle Základy PERLu snadno a rychle Začínáme Začneme tak, že si vytvoříme třeba soubor hellopl, do souboru napíšeme: print "Hello world\n"; Pak soubor nastavíme jako spustitelný: $ chmod +x hellopl A teď si

Více

PROGRAMOVÁNÍ V SHELLU

PROGRAMOVÁNÍ V SHELLU PROGRAMOVÁNÍ V SHELLU Prostředí, jazyk, zdrojový kód chceme-li posloupnost jistých příkazů používat opakovaně, případně z různých míst adresářové struktury, můžeme tuto posloupnost uložit souboru, který

Více

10 Algoritmizace Příklad 2 Word 2007/ VBA

10 Algoritmizace Příklad 2 Word 2007/ VBA TÉMA: Zápis algoritmu, cyklus se známým počtem opakování Prostředí aplikace Wordu je možné doplnit v rámci využití maker o automatizaci složitějších posloupností příkazů. Vedle záznamu makra je možno makra

Více

C# konzole Podíl dvou čísel, podmínka IF

C# konzole Podíl dvou čísel, podmínka IF C# konzole Podíl dvou čísel, podmínka IF Tematická oblast Datum vytvoření 2013 Ročník 3 Stručný obsah Způsob využití Autor Kód Internetové technologie, programování Výpočet podílu v konzolové aplikaci

Více

Stručný návod k programu Octave

Stručný návod k programu Octave Stručný návod k programu Octave Octave je interaktivní program vhodný pro technické výpočty. Je nápadně podobný programu MATLAB, na rozdíl od něho je zcela zadarmo. Jeho domovská vebová stránka je http://www.octave.org/,

Více

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Druhé počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz Verze

Více

vstup a výstupv jazyce C

vstup a výstupv jazyce C vstup a výstupv jazyce C - funkce vstupu a výstupu nejsou součástí jazyka, jsou především v knihovně stdio.h (její obsah je dán normou) - pro práci se soubory (lépe streamy "sériový vstup/výstup", tj.

Více

www.zlinskedumy.cz Pracovní list VY_32_INOVACE_33_19 Databáze Databáze Databáze Ing. Petr Vilímek

www.zlinskedumy.cz Pracovní list VY_32_INOVACE_33_19 Databáze Databáze Databáze Ing. Petr Vilímek VY_32_INOVACE_33_19 Pracovní list Škola Název projektu, reg. č. Vzdělávací oblast Vzdělávací obor Tematický okruh Téma Tematická oblast Střední průmyslová škola Zlín Inovace výuky prostřednictvím ICT v

Více

2 Datové typy v jazyce C

2 Datové typy v jazyce C 1 Procedurální programování a strukturované programování Charakteristické pro procedurální programování je organizace programu, který řeší daný problém, do bloků (procedur, funkcí, subrutin). Původně jednolitý,

Více

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové soubory

Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové soubory Střední průmyslová škola a Vyšší odborná škola technická Brno, Sokolská 1 Šablona: Název: Téma: Inovace a zkvalitnění výuky prostřednictvím ICT Základy programování a algoritmizace úloh Typové a netypové

Více

Základy programování (IZP)

Základy programování (IZP) Základy programování (IZP) Páté počítačové cvičení Brno University of Technology, Faculty of Information Technology Božetěchova 1/2, 612 66 Brno - Královo Pole Petr Veigend, iveigend@fit.vutbr.cz 5. týden

Více

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Maturitní otázky z předmětu PROGRAMOVÁNÍ Wichterlovo gymnázium, Ostrava-Poruba, příspěvková organizace Maturitní otázky z předmětu PROGRAMOVÁNÍ 1. Algoritmus a jeho vlastnosti algoritmus a jeho vlastnosti, formy zápisu algoritmu ověřování správnosti

Více

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí

Základní datové typy, proměnné - deklarujeme předem - C je case sensitive rozlišuje malá a velká písmena v názvech proměnných a funkcí 02 Jazyk C - je imperativní říkáme, co se má udělat, voláme příkazy - další imperativní jazyky: Pascal, Java, C/C++ apod. - na rozdíl od jazyků deklarativních např. Prolog, Haskell, Scheme, Lisp (funkcionální

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus

Pracovní listy - programování (algoritmy v jazyce Visual Basic) Algoritmus Pracovní listy - programování (algoritmy v jazyce Visual Basic) Předmět: Seminář z informatiky a výpočetní techniky Třída: 3. a 4. ročník vyššího stupně gymnázia Algoritmus Zadání v jazyce českém: 1. Je

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Projekt: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Příjemce: Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; }

for (int i = 0; i < sizeof(hodnoty) / sizeof(int); i++) { cout<<hodonoty[i]<< endl; } cin.get(); return 0; } Pole Kdybychom v jazyce C++chtěli načíst větší počet čísel nebo znaků a všechny bylo by nutné všechny tyto hodnoty nadále uchovávat v paměti počítače, tak by bylo potřeba v paměti počítače alokovat stejný

Více

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016

Martin Flusser. Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague. December 7, 2016 ZPRO cvičení 8 Martin Flusser Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague December 7, 2016 Outline I 1 Outline 2 Dynamické alokování paměti 3 Dynamická alokace

Více

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP

Základy programování. Úloha: Eratosthenovo síto. Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Základy programování Úloha: Eratosthenovo síto Autor: Josef Hrabal Číslo: HRA0031 Datum: 28.11.2009 Předmět: ZAP Obsah 1 Zadání úkolu: 3 1.1 Zadání:............................... 3 1.2 Neformální zápis:.........................

Více

vstup a výstupy jazyce C

vstup a výstupy jazyce C vstup a výstupy jazyce C - funkce vstupu a výstupu nejsou součástí jazyka, jsou především v knihovně stdio.h (její obsah je dán normou definující standardní knihovny) - pro práci se soubory (lépe streamy

Více

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání Čtvrtek 3. listopadu Makra v Excelu Obecná definice makra: Podle definice je makro strukturovanou definicí jedné nebo několika akcí, které chceme, aby MS Excel vykonal jako odezvu na nějakou námi definovanou

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Operační systémy. Cvičení 3: Programování v C pod Unixem

Operační systémy. Cvičení 3: Programování v C pod Unixem Operační systémy Cvičení 3: Programování v C pod Unixem 1 Obsah cvičení Editace zdrojového kódu Překlad zdrojového kódu Základní datové typy, struktura, ukazatel, pole Načtení vstupních dat Poznámka: uvedené

Více

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole

Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Programování v jazyce C pro chemiky (C2160) 3. Příkaz switch, příkaz cyklu for, operátory ++ a --, pole Příkaz switch Příkaz switch provede příslušnou skupinu příkazů na základě hodnoty proměnné (celočíselné

Více

Standardní vstup a výstup

Standardní vstup a výstup Standardní vstup a výstup Trochu teorie S pojmy standardní vstup/výstup (I/O, input/output) jste se již pravděpodobně setkali, pokud ale ne, zde je krátké vysvětlení. Standardní vstup a výstup jsou vlastně

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 07. Základní příkazy vstup a výstup hodnot Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284

Více

Úvod do programování 8. hodina

Úvod do programování 8. hodina Úvod do programování 8. hodina RNDr. Jan Lánský, Ph.D. Katedra informatiky a matematiky Fakulta ekonomických studií Vysoká škola finanční a správní 2015 Umíme z minulé hodiny Algoritmy Hornerovo schéma

Více

E+034 = ; = e E+034

E+034 = ; = e E+034 Formátovaný textový výstup fprintf Příklad: m = 123.3456; fprintf('%f\n', m); 123.345600 fprintf('%e\n', m); 1.233456e+002 fprintf('%e\n', m); 1.23456E+002 fprintf('%g\n', m); 123.346 fprintf('%g\n', m);

Více

Řídicí struktury. alg3 1

Řídicí struktury. alg3 1 Řídicí struktury Řídicí struktura je programová konstrukce, která se skládá z dílčích příkazů a předepisuje pro ně způsob provedení Tři druhy řídicích struktur: posloupnost, předepisující postupné provedení

Více

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace

Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Střední škola pedagogická, hotelnictví a služeb, Litoměříce, příspěvková organizace Předmět: Vývoj aplikací Téma: Programovací jazyky Vyučující: Ing. Milan Káža Třída: EK3 Hodina: 8 Číslo: V/5 Programování

Více

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty.

Proměnná. Datový typ. IAJCE Cvičení č. 3. Pojmenované místo v paměti sloužící pro uložení hodnoty. Proměnná Pojmenované místo v paměti sloužící pro uložení hodnoty. K pojmenování můžeme použít kombinace alfanumerických znaků, včetně diakritiky a podtržítka Rozlišují se velká malá písmena Název proměnné

Více

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele

Strukturu lze funkci předat: (pole[i])+j. switch(výraz) velikost ukazatele Strukturu lze funkci předat: hodnotou i pomocí ukazatele pouze pomocí ukazatele (reference na strukturu) pouze hodnotou (kopie struktury) (pole[i])+j adresa prvku na souřadnicích i, j adresa i-tého řádku

Více

Seznam úloh v rámci Interního grantového systému EPI

Seznam úloh v rámci Interního grantového systému EPI Evropský polytechnický institut, s.r.o. Kunovice Seznam úloh v rámci Interního grantového systému I rok/p ořadí Číslo úlohy Název Obor 2008 B1/2008 Vývojové tendence globalizujícího se podnikatelského

Více

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Číslo a název šablony Číslo didaktického materiálu Druh didaktického materiálu Autor Jazyk Téma sady didaktických materiálů Téma didaktického materiálu Vyučovací předmět Cílová skupina (ročník) Úroveň

Více

Pole a Funkce. Úvod do programování 1 Tomáš Kühr

Pole a Funkce. Úvod do programování 1 Tomáš Kühr Pole a Funkce Úvod do programování 1 Tomáš Kühr (Jednorozměrné) pole u Datová struktura u Lineární u Homogenní = prvky stejného datového typu u Statická = předem určený počet prvků u Pole umožňuje pohodlně

Více

Lekce 01 Úvod do algoritmizace

Lekce 01 Úvod do algoritmizace Počítačové laboratoře bez tajemství aneb naučme se učit algoritmizaci a programování s využitím robotů Lekce 01 Úvod do algoritmizace Tento projekt CZ.1.07/1.3.12/04.0006 je spolufinancován Evropským sociálním

Více

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto

Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Gymnázium Vysoké Mýto nám. Vaňorného 163, 566 01 Vysoké Mýto Registrační číslo projektu Šablona Autor Název materiálu / Druh CZ.1.07/1.5.00/34.0951 III/2 INOVACE A ZKVALITNĚNÍ VÝUKY PROSTŘEDNICTVÍM ICT

Více

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D.

Programování 2 (NMIN102) Soubory. RNDr. Michal Žemlička, Ph.D. Programování 2 (NMIN102) Soubory RNDr. Michal Žemlička, Ph.D. Soubor abstrakce vstupního, výstupního či vstupně výstupního zařízení textová, typovaná a netypovaná varianta základní operace: otevření, čtení/zápis,

Více

Formátové specifikace formátovací řetězce

Formátové specifikace formátovací řetězce 27.2.2007 Formátové specifikace formátovací řetězce - je to posloupnost podle které překladač pozná jaký formát má výstup mít - posloupnosti začínají znakem % a určující formát vstupu/výstupu - pokud chcete

Více

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr

Funkce pokročilé možnosti. Úvod do programování 2 Tomáš Kühr Funkce pokročilé možnosti Úvod do programování 2 Tomáš Kühr Funkce co už víme u Nebo alespoň máme vědět... J u Co je to funkce? u Co jsou to parametry funkce? u Co je to deklarace a definice funkce? K

Více

Aktualizace Dlouhodobého záměru vzdělávací a vědecké, výzkumné, vývojové, umělecké a další tvůrčí činnosti soukromé vysoké školy pro rok 2007

Aktualizace Dlouhodobého záměru vzdělávací a vědecké, výzkumné, vývojové, umělecké a další tvůrčí činnosti soukromé vysoké školy pro rok 2007 Evropský polytechnický institut, s.r.o. Osvobození 699, 686 04 Kunovice, tel./fax: 572 549 018, 572 549 018, http://www.vos.cz/epi, e-mail: epi@vos.cz Aktualizace Dlouhodobého záměru vzdělávací a vědecké,

Více

Import zboží ve formátu CSV

Import zboží ve formátu CSV Import zboží ve formátu CSV Asistent, Deník Profi a Sklad Profi vydané po 8. říjnu 2018, obsahují novou funkci - import zboží ve formátu CSV. Díky ní je možné snadno importovat celé sklady, případně faktury,

Více

Implementace LL(1) překladů

Implementace LL(1) překladů Překladače, přednáška č. 6 Ústav informatiky, FPF SU Opava sarka.vavreckova@fpf.slu.cz Poslední aktualizace: 30. října 2007 Postup Programujeme syntaktickou analýzu: 1 Navrhneme vhodnou LL(1) gramatiku

Více

Vstup a výstup datové proudy v C

Vstup a výstup datové proudy v C Vstup a výstup datové proudy v C Petr Šaloun katedra informatiky FEI VŠB-TU Ostrava 24. října 2011 Petr Šaloun (katedra informatiky FEI VŠB-TU Ostrava) Vstup a výstup 24. října 2011 1 / 37 Přehled, rozdělení

Více

1 Uživatelská dokumentace

1 Uživatelská dokumentace 1 Uživatelská dokumentace Systém pro závodění aut řízených umělou inteligencí je zaměřen na závodění aut v prostředí internetu. Kromě toho umožňuje testovat jednotlivé řidiče bez nutnosti vytvářet závod

Více

Celostátní kolo soutěže Mladý programátor 2016, kategorie C

Celostátní kolo soutěže Mladý programátor 2016, kategorie C Pokyny: 1. Řešení úloh ukládejte do složky, která se nachází na pracovní ploše počítače. Její název je stejný, jako je kód, který váš tým dostal přidělený (C05 apod.). Řešení, uložené v jiné složce, nebude

Více

KIV/ZIS cvičení 5. Tomáš Potužák

KIV/ZIS cvičení 5. Tomáš Potužák KIV/ZIS cvičení 5 Tomáš Potužák Úvod do SQL (1) SQL (Structured Query Language) je standardizovaný strukturovaný dotazovací jazyk pro práci s databází Veškeré operace v databázi se dají provádět pomocí

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Návod na používání Digitálního povodňového plánu povodňové komise

Návod na používání Digitálního povodňového plánu povodňové komise Návod na používání Digitálního povodňového plánu povodňové komise Obsah: 1. Spuštění programu 2. Změny údajů v povodňových komisích 3. Další možnost editace změn u osob 4. Zápis nových členů povodňových

Více

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19

Algoritmy I. Cvičení č. 2, 3 ALGI 2018/19 Algoritmy I Cvičení č. 2, 3 1 ALG I, informace Cvičící RNDr. Eliška Ochodková, Ph.D., kancelář EA439 eliska.ochodkova@vsb.cz www.cs.vsb.cz/ochodkova Přednášející doc. Mgr. Jiří Dvorský, Ph.D., kancelář

Více

Úvod do programování. Lekce 3

Úvod do programování. Lekce 3 Úvod do programování Lekce 3 Řízení běhu programu - pokračování /2 příklad: program vypisuje hodnotu sin x dx pro různé délky integračního kroku 0 #include #include // budeme pouzivat funkci

Více

Algoritmizace a programování

Algoritmizace a programování Algoritmizace a programování Jazyk C řízení běhu programu České vysoké učení technické Fakulta elektrotechnická Ver.1.10 J. Zděnek 2015 Šest zákonů programování 1. V každém programu je alespoň jedna chyba

Více

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ;

int t1, t2, t3, t4, t5, t6, t7, prumer; t1=sys.readint();... t7=sys.readint(); prume pru r = r = ( 1+t 1+t t3+ t3+ t4 t5+ t5+ +t7 +t7 )/ ; Pole Příklad: přečíst teploty naměřené v jednotlivých dnech týdnu, vypočítat průměrnou teplotu a pro každý den vypsat odchylku od průměrné teploty Řešení s proměnnými typu int: int t1, t2, t3, t4, t5,

Více

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory

Jazyk C Program v jazyku C má následující strukturu: konstanty nebo proměnné musí Jednoduché datové typy: Strukturované datové typy Výrazy operátory Jazyk C Program v jazyku C má následující strukturu: Direktivy procesoru Globální definice (platné a známé v celém programu) Funkce Hlavička funkce Tělo funkce je uzavřeno mezi složené závorky { Lokální

Více

VYÚČTOVÁNÍ DANĚ ZE ZÁVISLÉ ČINNOSTI, SRÁŽKOVÉ DAŃE

VYÚČTOVÁNÍ DANĚ ZE ZÁVISLÉ ČINNOSTI, SRÁŽKOVÉ DAŃE , VYÚČTOVÁNÍ DANĚ ZE ZÁVISLÉ ČINNOSTI, SRÁŽKOVÉ DAŃE Návod lze analogicky použít i pro ostatní podání na Českou daňovou správu (DPH, výpis z evidence 92, souhrnné hlášení, ). 1) Postavte se do firmy roku,

Více

Základy algoritmizace a programování

Základy algoritmizace a programování Základy algoritmizace a programování Přednáška 1 Olga Majlingová Katedra matematiky, ČVUT v Praze 19. září 2011 Obsah Úvodní informace 1 Úvodní informace 2 3 4 Doporučená literatura web: http://marian.fsik.cvut.cz/zapg

Více

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write("\nPrumerna teplota je {0}", tprumer);

IAJCE Přednáška č. 8. double tprumer = (t1 + t2 + t3 + t4 + t5 + t6 + t7) / 7; Console.Write(\nPrumerna teplota je {0}, tprumer); Pole (array) Motivace Častá úloha práce s větším množstvím dat stejného typu o Př.: průměrná teplota za týden a odchylka od průměru v jednotlivých dnech Console.Write("Zadej T pro.den: "); double t = Double.Parse(Console.ReadLine());

Více

Sada 1 - Základy programování

Sada 1 - Základy programování S třední škola stavební Jihlava Sada 1 - Základy programování 13. Práce s řetězci - palindrom Digitální učební materiál projektu: SŠS Jihlava šablony registrační číslo projektu:cz.1.09/1.5.00/34.0284 Šablona:

Více

Digitální učební materiál

Digitální učební materiál Digitální učební materiál Projekt: Digitální učební materiály ve škole, registrační číslo projektu CZ.1.07/1.5.00/34.0527 Příjemce: Střední zdravotnická škola a Vyšší odborná škola zdravotnická, Husova

Více

Profilová část maturitní zkoušky 2017/2018

Profilová část maturitní zkoušky 2017/2018 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2017/2018 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

Operační systémy. Cvičení 4: Programování v C pod Unixem

Operační systémy. Cvičení 4: Programování v C pod Unixem Operační systémy Cvičení 4: Programování v C pod Unixem 1 Obsah cvičení Řídící struktury Funkce Dynamická alokace paměti Ladění programu Kde najít další informace Poznámka: uvedené příklady jsou dostupné

Více

Úvod do programování. Lekce 1

Úvod do programování. Lekce 1 Úvod do programování Lekce 1 Základní pojmy vytvoření spustitelného kódu editor - psaní zdrojových souborů preprocesor - zpracování zdrojových souborů (vypuštění komentářů atd.) kompilátor (compiler) -

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje

Správné vytvoření a otevření textového souboru pro čtení a zápis představuje f1(&pole[4]); funkci f1 předáváme hodnotu 4. prvku adresu 4. prvku adresu 5. prvku hodnotu 5. prvku symbolická konstanta pro konec souboru je eof EOF FEOF feof Správné vytvoření a otevření textového souboru

Více

Střední odborná škola a Střední odborné učiliště, Hořovice

Střední odborná škola a Střední odborné učiliště, Hořovice Kód DUM : VY_32_INOVACE_DYN.1.14 Název materiálu: Anotace Autor Jazyk Očekávaný výstup 14 PHP- práce se soubory v PHP (3.část) Komplexní řešený příklad DUM je žáků průvodcem pro pochopení principu použití

Více