VÝUKOVÝ MATERIÁL
Transkript
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
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:
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)
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...
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...
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...
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...