TDP004 Objektorienterad Programmering Fö 4 Strömmar.

Slides:



Advertisements
Liknande presentationer
INTRODUKTION TILL PROGRAMMERING
Advertisements

void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 1 ( ) Innehåll: -Introduktion av kursen -Program och processer -Fildeskriptorer -Filhantering.
Programstruktur: C för enchipsdatorer
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 3 ( ) Innehåll: -Namngivna rörledningar -Signaler -Signalhantering.
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Filhantering Grundprincipen för filhantering Öppna filen
PC-teknik Repetition enligt önskemål som inkommit via mail. (täcker alltså inte alla moment i kursen)
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik K och Media
Programmeringsteknik för K och Media
Att programmera i språket Java
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 4 Python: Definiering av egna funktioner Parametrar
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Strömmar Vid läsning och skrivning används något som kallas strömmar.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 13: I/O-system.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Konstruktor Ser till att objektets data är korrekt initierade MinKlass::MinKlass(); MinKlass::MinKlass(int.
Föreläsning 5.  Idag  Kap 7 i Dawson  Filer  Felhantering med try…except.
Föreläsning 11 Arrayer.
OOP F4:1 Marie Olsson OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT C++ - förbättrat C?  Procedurellt program ser ut som C: sekvens, selektion, iteration  /* kommentar.
Sid 1 CD5250 OOP med C++ Daniel Flemström MDH/IDT CD5250 OOP med C++
Programmering i C# 3. Klasser.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 7 ( ) Innehåll: -Datakanaler och datakanalpar -Kommunikation på samma dator med datakanaler.
Pekare och speciell programstruktur i inbyggda system
Programmering B PHP Lektion 2
Programmeringsteknik
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 4 ( ) Innehåll: -Programmerade rörledningar -Namngivna rörledningar.
Sid period2CD5250 OOP med C++ Mats Medin MDH/IDT Multipelt arv Drawable draw() move() position bitmap Persistent save() restore() storage_file_name.
Föreläsning 14 ”Enkel” Filhantering.
Objektorienterad Programmering i C++ I
Föreläsning 10 Stränghantering.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.
Abelli, B. (2004). Programmeringens Grunder – med exempel i C#. Lund: Studentlitteratur 11 C# I/O Streams C# använder “strömmar” för in- och utmatningsoperationer.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 2 ( ) INNEHÅLL: -Variabler och datatyper -Tilldelning av variabler -Aritmetiska.
Kenneth Wilhelmsson 1 Logikprogrammering 10 P Onsdag 20 november 2002.
Problemlösningsmetodik
1 Sockets Traditionellt har UNIX varit svag på IPC, InterProcess Communication. I augusti 1983 kom en ny IPC-mekanism i 4.2BSD som var enkel om konsistent.
ITK:P1 Föreläsning 2 Introduktion till objektorientering DSV Marie Olsson.
INTRODUKTION TILL PROGRAMMERING
Anders Sjögren Filer - långtidslagring. Anders Sjögren Filtyper i DOS talet ett ( intx=1; ) lagrat i en –textfil, (en sekvens av tecken ( bytes )) enligt.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
2D1311 Programmeringsteknik med PBL Föreläsning 4 Skolan för Datavetenskap och kommunikation.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
Jonny Karlsson PROCESSPROGRAMMERING Föreläsning 2 ( ) Innehåll: -Fildeskriptorer -Filhantering -Felhantering.
William Sandqvist Funktionsbibliotek När man utvecklat en funktion så långt att den är "färdigutvecklad" kan man lika gärna spara den på.
Föreläsning 9 Inläsning och utskrift på fil –SimpleTextFileReader –SimpleTextFileWriter Felsökning Java API.
Kronljusströmställaren 0, 1, 2, 3
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
1 Föreläsning 2 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
OOP&M - teori1 OOP – Föreläsning 7 (Sista oop I) Konstruktioner för att hantera upprepningar Kapitel 11.
C++ som ett bättre C Sid 1 6/23/2015CD5250 OOP med C++ Mats Medin MDH/IDT C++ kurs CD5250, vårterminen 2000 Lärare: Mats Medin,
Föreläsning 3 Väsentliga delar i ett Javaprogram Input i paketet extra
Anders Sjögren Programmering i ANSI-C Ett första program för att se vart vi ska...
TDP004 Objektorienterad Programmering Fö 2 Objektorientering grunder.
TDP004 Objektorienterad Programmering Fö 5 Minneshantering.
Lektion 4.
Objektorienterad programmering forts
Presentationens avskrift:

TDP004 Objektorienterad Programmering Fö 4 Strömmar

Introduktion Strömmar används för in- och utmatning. En ström är en sekvens av värden, tex teckenström ”byte-ström”. Formatterad och oformatterad in/utmatning. Samtliga i namespace std. Laboration på strömmar.

Översiktbild över streams

Fördefinierade streams // Generella typer för läsning/skrivning. –istream –ostream –iostream // Läs/skriv i fil. –ifstream –ofstream –fstream // Läs/skriv i string. –istringstream –ostringstream –stringstream

In- och utmatning Exempel: #include using namespace std; int value; cout << ” Input a value” << endl; cin >> value; cout << ”Value was ”<< value << endl;

Formatterad - oformatterad Vid formatterad läsning omvandlas och tolkas texten. White spaces hoppas över (kan styras) och det går att välja vad som läses. –char, string, int : ett tecken, ett ord, ett heltal läses in. –operatorn >> gör formatterad läsning. Vid oformatterad läsning läses data precis som den lagras i strömmen, inget hoppas över eller omvandlas. –Alla läsfunktioner utom >>. c = is.get(); getline(cin, is); c = cin.peek();

cin För att läsa från konsollen. Med ”cin >> variabel” lagras värdet i variabel. Det som matas in måste vara av rätt typ, annars avbryts inmatningen och inget lagras. En inmatning kan avbrytas med Ctrl-Z (Windows) respektive Ctrl-D (Unix).

cin Ex: char inputData[100]; cin >> inputData; Anropas med ”Preparing lectures takes a long time.” Vad innehåller inputData? Preparing\0

cout Skriver ut till konsolllen cout << variabel Flera anrop kan göras på samma rad: Ex: #include int i = 1, j = 5, k = 10; cout << i << j << k << endl;

IO Condition State För att kontrollera fel, etc finns olika flaggor och funktioner. strm::iostate badbit s.bad() strm::iostatefailbit s.fail() strm::iostate eofbit s.eof() s är den stream som man kontrollera. Tillståndet kan sättas med s.setstate(flag) och resetas med s.clear(). Flag av typen strm::iostate enligt ovan.

Teckenströmmar Ostream – ofstream – ostringstream. Formatterad skrivning –<< används vid skrivning. –Data tolkas om vid behov, text och tecken skrivs ut som de är. Bool kan skrivas ut som 0/1 eller false/true. –failbit sätts om en skrivning misslyckas. –Vi kan använda sk manipulatorer vid formatterad skrivning.

Manipulatorer Finns i. boolalpha/noboolalpha anger hur bool ska skrivas ut. left/right vänster- högerjusterat. dec/oct/hex anger talbasen vid utskriften. setprecision(n) anger antalet decimaler vid utskrift. mfl.

Felhantering #include int main() { vector v; int x; while(cin>>x) { v.push_back(x); } for(unsigned int i = 0; i < v.size(); ++i) { cout<<v[i]<<endl; } return 0; }

String stream Skriver till/läser från en std::string. Ex: #include ostringstream message; int number = 100; message << ”Fill with both text and numbers like ” << number << ”and more text.” << endl; istringstream source(”Test to copy data”); string dest; source >> dest;

File stream #include. När man ska läsa eller skriva en fil så öppnas denna med open(). open kan ta flera argument, bla om existerande fil ska skrivas över, om data ska läggas till sist, om filen enbart ska läsas, etc. Detta görs med ”file open modes”.

file open modes Används för att avgöra hur en fil ska hanteras: in – infil. Öppna filen för läsning. out – utfil. Öppna filen för skrivning. app – utfil. Öppna filen för skrivning, data läggs till sist i filen. Om filen inte finns skapas den. trunc – utfil. Tömmer filen om den finns. ate – utfil. Lägger till data på slutet. binary – binärfil.

file open modes, forts. Flera flaggor kan kombineras mha | (bitvis eller). fstream f(”file.bin”, ios:in | ios::out | ios:binary); Filer ska stängs med close().

Filtyper Text eller binär. En textfil innehåller tecken (char). –Skrivs/läses mha cin/cout. En binärfil innehåller en följd av bytes (8 bitar). –Skrivs/läses mha read/write. –Öppnas med ios::binary.

Binärfiler Läsning och skrivning görs med read och write. read(char* s, streamsize n); write(const char* s, streamsize n); s är en adress i minnet. n anger hur mycket som ska läsas/skrivas. storleken på en typ fås genom sizeof.

Ex. kopiering av binärfil som innehåller int. #include using namespace std; int main() { ifstream in(”infile.bin”, ios::binary); ofstream out(”outfile.bin”, ios::binary); int x; while(in.read(reinterpret_cast (&x), sizeof(int) ) ) { out.write(reinterpret_cast (&x), sizeof(int) ); } in.close(); out.close(); return 0; }

Ex tentauppgift Du ska göra en del av ett ramverk för att hantera testfall. Gör en funktion enligt följande: bool WriteTestCaseResult(const unsigned int testCaseNumber, const std::string testCaseName, const bool testCaseResult) const; När funktionen anropas ska en.txt-fil skapas. Denna ska ha namnet testCaseNumber_testCaseName. I filen ska numret, namnet och resultatet skrivas på en rad. Inget mer ska göras med filen. Testfallsresultatet ska skrivas som en bool, och detta ska göras med existerande funktionalitet, dvs du ska inte skriva en egen if-sats som skriver strängen ”false” resp ”true” i filen. Ingenting mer ska skrivas i filen. Om funktionen misslyckas med att skapa filen ska funktionen returnera false, annars ska funktionen returnera true. Om det redan finns en fil med samma namn ska denna skrivas över. Exempel: WriteTestCaseResult(10, testsearch, true) -> I filen 10_testsearch.txt 10 testsearch true

Ex tentauppgift, lösningsförslag bool Uppg2::WriteTestCaseResult(const unsigned int testCaseNumber, const std::string testCaseName, const bool testCaseResult) const { std::stringstream ss; ss << testCaseNumber << "_“ << testCaseName << ".txt"; std::string fileName = ss.str(); std::ofstream saveFile(fileName.c_str()); if(NULL == saveFile) { return false; } saveFile << testCaseNumber << " " << testCaseName << " " << std::boolalpha << testCaseResult << '\n'; saveFile.close(); return true; }

Användande av stream Används för in- utmatning. Debuggning – det är inte specificerat i vilken ordning olika objekt initieras, cout kan initieras efter alla dina objekt. Om cout anropas i en konstruktor är resultatet odefinierat.

Sammanfattning Olika sorters strömmar: –filestreams –stringstreams –Iostreams Möjligt att specificera om en ström ska användas för in/utmatning eller båda. Manipulatorer. File open modes.