VÝUKOVÝ MATERIÁL

Transkript

VÝUKOVÝ MATERIÁL
VÝUKOVÝ MATERIÁL
Identifikační údaje školy
Číslo projektu
Název projektu
Číslo a název šablony
Autor
Tematická oblast
Číslo a název materiálu
Anotace
Vytvořeno
Určeno pro
Přílohy
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
CZ.1.07/1.5.00/34.1076
Pro vzdělanější Šluknovsko
32 – Inovace a zkvalitnění výuky prostřednictvím ICT
0207 Mgr. Bc. Jan Škoda
Programování
VY_32_INOVACE_0207_0210
Standardní vstup a výstup
Žák si upevní učivo o standardních vstupech a výstupech v programovacím
jazyku C
20. 7. 2013
3. ročník oboru Informační technologie
Bez příloh
Metodický list
• Učitel:
•
•
•
•
Výklad s projekcí elektronického učebního materiálu.
Demonstrace v reálném prostředí.
Ukázka obecného postupu činností.
Monitorování činnosti žáků.
• Žák:
• Sleduje výkladovou projekci a demonstraci učitele.
• Procvičuje na reálném prostředí softwaru.
c++
Standardní vstup a výstup
Datové proudy
• Datové proudy jsou ve skutečnosti specializované třídy
dostupné ve standardní knihovně jazyka C++.
• Poskytují metody a operátory pro zápis a čtení dat.
• V záhlaví zdrojového souboru deklarovat
#include <iostream> a
using namespace std;
Datové proudy
• Standardní knihovna obsahuje následující třídy:
• ios - pro vstupní a výstupní operace,
• istream – pro vstupní operace,
• ostream – pro výstupní operace.
• A jsou definovány proměnné:
•
•
•
•
istream cin – pro standardní vstup (z klávesnice),
ostream cout – pro standardní výstup (na obrazovku),
ostream cerr – pro chybový výstup (na obrazovku),
ostream clog - pro chybový výstup po řádcích (na obrazovku).
Souborový vstup a výstup
• Pro zápis do souboru a čtení ze souboru používáme následující
třídy:
• fstream - pro vstupní a výstupní souborové operace,
• ifstream – pro vstupní souborové operace,
• ofstream – pro výstupní souborové operace.
• Pro práci se soubory je třeba v záhlaví deklarovat:
#include <fstream>
Zápis do souboru
• Pro výstup do souboru vytvoříme proměnnou typu ofstream.
• Soubor otevřeme metodou open(), které předáme jméno
souboru.
• Úspěšnost otevření souboru ověříme pomocí metody fail(),
která vrací pravdivou hodnotu pokud bylo otevření souboru
neúspěšné.
• Pro zápis dat používáme operátor <<.
• Na konci soubor uzavřeme pomocí metody close().
Příklad
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <fstream>
using namespace std;
int main()
{
ofstream soubor; // Definujeme proměnnou proudu
soubor.open("test.dat"); // Otevřeme soubor
if (soubor.fail())
{
cout << "Nelze otevrit soubor!\n";
return 1;
}
soubor << "Text zapsaný do souboru." << endl;
soubor.close();
return 0;
}
Čtení ze souboru
• Pro čtení dat ze souboru vytvoříme proměnnou typu ifstream.
• Soubor otevřeme metodou open(), které předáme jméno
souboru.
• Úspěšnost otevření souboru ověříme pomocí metody fail().
• Pro čtení dat používáme operátor >>.
• Na konci soubor uzavřeme pomocí metody close().
Příklad
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#include <fstream>
using namespace std;
int main()
{
double a1 = 0.0, a2 = 0.0;
ifstream soubor;
soubor.open("test.dat");
if (soubor.fail())
{
cout << "Nelze otevrit soubor!\n";
return 1;
}
soubor >> a1 >> a2;
soubor.close();
return 0;
}
Argument metody open()
• Argument, který předáváme do metody open() musí být typu
char*, nelze mu tedy předat přímo proměnnou typu string.
• Z proměnné typu string získáme řetězec char* pomocí metody
c_str().
string fileName = "test.dat";
ofstream soubor;
soubor.open(fileName.c_str());
// Nejake operace pro zapis do proudu ofile
soubor.close();
Diagnostika I/O chyb
• Po otevření souboru a také po načtení nebo zápisu znaku
potřebujeme zjistit, zdali byla operace úspěšná.
• K tomu používáme následující metody:
• fail() – vrací true, pokud byla operace neúspěšná,
• good() – vrací true, pokud byla operace úspěšná, tedy opačnou
hodnotu než fail(),
• eof() – vrací pravdivou hodnotu, pokud se proud nachází na konci
souboru (týká se jen čtení ze souboru).
Příklad
ifstream soubor;
soubor.open("test.dat");
if (soubor.fail()) // testujeme úspešnost otevření souboru
{
cout << "Nelze otevrit soubor!\n";
return 1;
}
double a = 0;
soubor >> a; // Načítani hodnoty do proměnné a
if (soubor.fail()) // testujeme uspesnost nacteni
{
cout << "Nepodarilo se nacist hodnotu!" << endl;
}
fopen
Zdroj: Autor
r
Otevře textový soubor pro čtení
w
Vytvoří textový soubor pro zápis
a
Otevře textový soubor pro připisování
rb
Otevře binární soubor pro čtení
wb
Otevře binární soubor pro zápis
ab
Otevře binární soubor pro připisová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í / zápis
rb+
Otevře binární soubor pro čtení / zápis
wb+
Vytvoří binární soubor pro čtení / zápis
ab+
Otevře binární soubor pro čtení / zápis
fopen
FILE *fopen(const char *filename, const char *mode);
• funkce fopen() dostává jako parametry dva řetězce:
• první určuje cestu k souboru (může být relativní i absolutní),
• druhý určuje, jak se má soubor otevřít.
Příklad
FILE *proud; proud = fopen("soubor.txt", "r");
if (!proud)
cout << "Soubor se nepodarilo otevrit";
• Použili jsme pro parametr mode hodnotu "r", která znamená,
že soubor má být otevřen pouze pro čtení.
Příklad
• #include <stdio.h>
int main(int argc, char *argv[])
{
FILE *fout;
char c = 123;
fout = fopen("out.txt", "w");
if(!fout)
{ printf("Nelze otevrit soubor pro zapis"); return 1; }
fprintf(fout, "%d", c);
fclose(fout);
fout = fopen("out.bin", "wb");
if(!fout)
{ printf("Nelze otevrit soubor pro zapis"); return 1; }
fwrite(&c, sizeof(char), 1, fout);
fclose(fout);
return 0;
}
fgetc, fputc
• Na načítání jednoho znaku ze souboru se používá příkaz:
fgetc
• Na zápis jednoho znaku do souboru se používá příkaz :
fputc
Příklad
#include <stdio.h>
int main( void )
{
FILE *fp;
int c;
fp = fopen( "test.txt", "w" );
c = 32;
while( c < 128 )
fputc( c++, fp );
fclose( fp );
}
Příklad
#include <stdio.h>
int main( void )
{
FILE *fp;
fp = fopen( "test.txt", "r" );
while( !feof(fp) )
putchar( fgetc(fp) );
fclose( fp );
}
Zdroje
• BERAN, Martin. Učebnice Borland C: učebnice programování v
Borland C 4. generace. Praha: BEN - technická literatura, 1995, 442 s.
ISBN 80-238-0304-2.
• HEROUT, Pavel. Učebnice jazyka C. 3. vyd. České Budějovice: Kopp,
1994, 269 s. ISBN 80-858-2821-9.
• HEROUT, Pavel. Učebnice jazyka C: 2. díl. 1. vyd. České Budějovice:
KOPP, 1995, 236 s. ISBN 80-858-2850-2.
• SCHILDT, Herbert. Nauč se sám C. Překlad Jiří Grée, Adéla Gréeová.
Praha: SoftPress, 2001, 623 s. ISBN 80-864-9713-5.

Podobné dokumenty

otevirani_zapis_soubory _3

otevirani_zapis_soubory _3 Předcházet musí fstream.h Objekty iostream spravují příznaky, které hlásí stav vašeho vstupu a výstupu. Jednotlivé příznaky můžete testovat logickými funkcemi:

Více

pdf 190kB

pdf 190kB pole – návaznost na ukazatel, řetězce C (typ string) alokace paměti – automatické proměnné, dynamické proměnné (kde leží), globální proměnné, definice a deklarace (inicializace)

Více

Objektové programování 1 - Starší publikace a seriály

Objektové programování 1 - Starší publikace a seriály v úvahu – bylo by totiž nutno znovu otestovat všechny starší programy, které modifikované podprogramy využívaly, a to bylo většinou mnohem nákladnější než napsat všechny podprogramy znovu. Tyto vše...

Více

1. Úvod www.uamt.feec.vutbr.cz/~richter

1. Úvod www.uamt.feec.vutbr.cz/~richter explicit Trida(int j) Trida::Metoda(Trida & a) int i; a.Metoda ( i ); // nelze, // implicitní konverze se neprovede b.Metoda ( Trida(i)); // lze, // explicitní konverze je povolena - dynamická dat...

Více

Objektové programování 2 - Starší publikace a seriály

Objektové programování 2 - Starší publikace a seriály — umějí dobře zacházet s procedurami a funkcemi a znají jednotlivé způsoby předávání parametrů a vracení vypočtené hodnoty (např. funkce, které v C++ vracejí reference), — dobře znají standardní da...

Více

Detekce tautologie pomocí BDD Michal Navrkal

Detekce tautologie pomocí BDD Michal Navrkal Jak je vidět z Obrázku 2 první pravidlo zredukovalo počet terminálních uzlů z 8 na 2. Druhé pravidlo odstranilo dva uzly označené proměnnou x3 a nakonec třetí pravidlo odstranilo dva redundantní uz...

Více

VÝUKOVÝ MATERIÁL

VÝUKOVÝ MATERIÁL VÝUKOVÝ MATERIÁL Identifikační údaje školy

Více