Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Podobne dokumenty
Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 5. Karol Tarnowski A-1 p.

Programowanie w językach

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Program dopisujący gwiazdkę na końcu pliku tekstowego o nazwie podanej przez uŝytkownika oraz wypisujący zawartość tego pliku.

Operacje wejścia/wyjścia (odsłona druga) - pliki

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

STL Standardt Template Library (wprowadzenie)

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Programowanie i struktury danych

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Aby uzyskać zaliczenie w pierwszym terminie (do 30 stycznia 2018) rozliczyć trzeba co najmniej 8 projektów, po 4 z każdej z części: C++ oraz Python.

C++ - [3-5] Pliki i strumienie w C++

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Operacje na plikach. Informatyka. Standardowe strumienie wejścia i wyjścia

STL: Lekcja 1&2. Filozofia STL

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

Język C++ wykład VIII

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p.

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 15 kwietnia K.Grzelak (Wykład 8) Programowanie w C++ 1 / 33

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 24

1 Strumienie. 2 Pliki. 2.1 Zapis do pliku tekstowego. Programowanie w j zyku C - Adam Krechowicz, Daniel Kaczmarski

Programowanie w C++ Wykład 9. Katarzyna Grzelak. 14 maja K.Grzelak (Wykład 9) Programowanie w C++ 1 / 30

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Podstawy Programowania

Wykład 2 Operacje wejściawyjścia. Ewa Gajda

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Wejście wyjście strumieniowe

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Programowanie i struktury danych

Zasady programowania Dokumentacja

Pliki wykład 2. Dorota Pylak

Operatory na rzecz typu TString

PROE wykład 3 klasa string, przeciążanie funkcji, operatory. dr inż. Jacek Naruniec

4. Wyrzuć wyjątek jeśli zmienna ist nie istnieje bloki: try, catch i wyrzucanie wyjątku

Lab 9 Podstawy Programowania

Klasa iostream... 1 Klasy ofstream, ifstream Struktura FILE... 8

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Kompletna dokumentacja kontenera C++ vector w -

Algorytmy i Struktury Danych. Anna Paszyńska

Instrukcja do pracowni specjalistycznej z przedmiotu. Obiektowe programowanie aplikacji

Wykład PASCAL - Pliki tekstowe

Jak Windows zarządza pamięcią?

Wprowadzenie do programowania i programowanie obiektowe

Algorytmy i Struktury Danych.

Podstawy programowania skrót z wykładów:

Pliki. Operacje na plikach w Pascalu

dr inż. Jarosław Forenc

Pliki. Informacje ogólne. Obsługa plików w języku C

Spis treści OBSŁUGA PLIKÓW W JĘZYKU C++ Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Zaawansowane programowanie w C++ (PCP)

Biblioteka standardowa - operacje wejścia/wyjścia

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Pliki wykład. Dorota Pylak

Wykład 4. Tablice. Pliki

Pliki wykład. Dorota Pylak

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania. Programowanie systemów informatycznych laboratorium. Ćw. 3: Akwizycja danych. RS 232 cd.

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Operacje na plikach (niskiego poziomu) < IO.H >

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 8. Karol Tarnowski A-1 p.

Rok akademicki: 2016/2017 Kod: JFT s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Struktury Danych i Złożoność Obliczeniowa

Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

#include <iostream> #include <string> using namespace std; auto main() -> int { string s1; // pusty string. Klasa std::string

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Funkcje zawarte w bibliotece < io.h >

STL Standard Template Library

Programowanie Procedurale. Pliki w języku C++

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 6. Karol Tarnowski A-1 p.

C++. Æwiczenia zaawansowane

dr inż. Jarosław Forenc

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Pliki. Informacje ogólne. Obsługa plików w języku C

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Część 4 życie programu

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

Programowanie w językach wysokiego poziomu

Szablony klas, zastosowanie szablonów w programach

Opus Magnum C++11 : programowanie w języku C++. T. 2 / Jerzy Grębosz. Gliwice, cop Spis treści

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Język C++ Różnice między C a C++

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Funkcje zawarte w bibliotece < io.h >

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

C++: STL. STL: kontenery. STL: kontenery. STL: kontenery. STL: kontenery. Programowanie Obiektowe C++: Standard Template Library

Wykład 8: klasy cz. 4

Transkrypt:

Techniki programowania INP001002Wl rok akademicki 2017/18 semestr letni Wykład 5 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Standardowa biblioteka szablonów (Standard Template Library STL) Operacje plikowego wejścia/wyjścia Na podstawie: A. Allain, Przewodnik dla początkujących C++ S. Prata, Szkoła programowania C++

Standardowa biblioteka szablonów Standardowa biblioteka szablonów udostępnia zestaw szablonów reprezentujących kontenery, iteratory, obiekty funkcyjne oraz algorytmy. Kontener to jednostka, która pozwala przechowywać grupę wartości ustalonego typu podobnie jak tablica.

Standardowa biblioteka szablonów Wykorzystanie standardowej biblioteki szablonów może wykluczyć potrzebę tworzenia niestandardowych struktur danych. Aby korzystać z biblioteki STL należy poznać interfejsy szablonów.

Wektor Wektor dostępny w bibliotece STL przypomina tablicę z dynamicznym zarządzaniem pamięcią.

Wektor Deklaracja wektora

Wektor W wektorze można przechowywać dane dowolnego typu. Deklarując wektor należy określić typ danych. vector<typ> Wektor znajduje się w przestrzeni nazw std.

Wektor Szablon wektora udostępnia wiele różnych metod, np.: at zwraca wartość na podanej pozycji, insert wstawia podaną wartość na podanej pozycji, push_back dopisuje podaną wartość na końcu wektora, pop_back usuwa ostatni element wektora, shrink_to_fit - dostosowuje zaalokowaną pamięć do wypełnienia wektora, clear usuwa wszystkie elementy wektora, size zwraca liczbę elementów w wektorze, capacity zwraca liczbę elementów, które można przechowywać w wektorze bez realokacji pamięci

Wektor Dla wektorów przeciążono także operator[], dzięki czemu do elementów wektora można się odwoływać jak do elementów tablicy

Mapa Struktura danych mapa z biblioteki STL pozwala przechowywać wartości w układzie: klucz/wartość. Klucz i wartość mogą być dowolnych typów. Mapa znajduje się w przestrzeni nazw std. Deklaracja mapy: map<typ_klucza, typ_wartosci> mapa;

Mapa Przykładowa deklaracja mapy:

Mapa Dodanie wartości do mapy: Dostęp do elementu w mapie:

Mapa Szablon mapy udostępnia wiele różnych metod, np.: at zwraca wartość dla podanego klucza, erase usuwa wartość o podanym kluczu, clear usuwa wszystkie elementy mapy, size zwraca liczbę elementów w mapie, empty zwraca informację, czy mapa jest pusta.

Iteratory Do przejścia po wszystkich elementach mapy można wykorzystać iterator. Deklaracja iteratora dla mapy z przykładu: map<string, string>::iterator itr;

Iteratory Również szablon wektor udostępnia iterator. Wykorzystując metody begin() oraz end() możemy iteracyjnie przejść przez wszystkie elementy wektora

Iteratory O iteratorze można myśleć jako o ulepszonym wskaźniku. Dla iteratorów zaimplementowano operatory inkrementacji ++ oraz dereferencji *.

Iteratory Zmodyfikowana pętla z poprzedniego przykładu dzięki zapamiętaniu iteratora dla końca wektora (koniec) nie trzeba wywoływać metody end(), przy sprawdzaniu warunku kontynuacji pętli.

Iteratory Podobnie można wyświetlić zawartość mapy:

Iteratory Dostęp do klucza i wartości uzyskuje się przez pola first i second

Iteratory Wykorzystanie metody find() do wyszukania w mapie elementu o podanym kluczu

Iteratory Poprawiona funkcja wyswieltmape() pobiera mapę jako referencję zadeklarowaną jako const W funkcji wykorzystywany jest iterator const_iterator

Dostęp do plików Odczyt i zapis plików przypomina korzystanie z obiektów cin oraz cout. Dwie klasy ifstream oraz ofstream pozwalają obsługiwać strumienie wejściowy oraz wyjściowy.

Otwieranie pliku do odczytu Konstruktor klasy ifstream pobiera jako argument nazwę pliku. Nazwa pliku może być podana z pełną ścieżką dostępu. Jeżeli nie będzie ścieżki dostępu to plik będzie poszukiwany w katalogu roboczym.

Otwieranie pliku do odczytu Przykładowe wywołanie konstruktora:

Otwieranie pliku do odczytu Pracując z plikami należy sprawdzać, czy przebieg programu jest zgodny z oczekiwaniami. Do sprawdzenia, czy plik jest prawidłowo otwarty służy metoda is_open().

Otwieranie pliku do odczytu

Odczyt pliku Jeżeli plik jest otwarty to z obiektu klasy ifstream można korzystać jak z obiektu cin

Odczyt pliku

Odczyt pliku Pracując z plikami należy sprawdzać, czy przebieg programu jest zgodny z oczekiwaniami. Wartość zwracana przez operator >> można wykorzystać do sprawdzenia, czy dane są prawidłowo wczytane.

Odczyt pliku

Odczyt pliku Przykład odczytu pliku czytany plik zawiera 10-elementową listę z wynikami

Odczyt pliku koniec pliku Przykład odczytu pliku przerywamy jeśli nie udało się wczytać kolejnej liczby

Odczyt pliku Do sprawdzenia, czy w trakcie odczytu wystąpił błąd można wykorzystać metodę fail(). Do sprawdzenia, czy w trakcie odczytu osiągnięto koniec pliku można wykorzystać metodę eof(). Po osięgnięciu końca pliku należy użyć metody clear(), aby przeprowadzać inne operacje plikowe.

Zapis pliku Do zapisu pliku służy klasa ofstream. Obiektu klasy ofstream używamy jak obiektu cout.

Zapis pliku

Zapis pliku Konstruktor klasy ofstream przyjmuje jako drugi argument określający sposób obsługi pliku ios::app ios::ate ios::trunc ios::out ios::binary dołączanie do pliku ustawienie bieżącej pozycji na końcu usunięcie całej zawartości pliku umożliwia zapis umożliwia operacje binarne Przykładowo: ofstream file("nazwa", ios::app ios::binary )

Pozycja w pliku Do odczytania pozycji w pliku służą funkcje tellg oraz tellp. Do ustawienia pozycji w pliku służą funkcje seekg oraz seekp.

Pozycja w pliku Trzy opcje dotyczące zmiany pozycji w pliku: ios_base::beg ios_base::cur ios_base::end początek pozycja bieżąca koniec

Pozycja w pliku Przykładowy program ilustrujący odczyt i ustawienie pozycji w pliku. Odczyt i zapis następuje do jednego pliku, zatem korzystamy z klasy fstream.

Pozycja w pliku

Pozycja w pliku

Pozycja w pliku

Pozycja w pliku

Pliki binarne Wykorzystanie plików binarnych pozwala znacząco zmniejszyć ich objętość (względem plików tekstowych).

Pliki binarne Otwarcie pliku w trybie binarnym: ofstream file( "data.bin", ios::binary ); Rzutowanie na typ char* umożliwia zapis bajt po bajcie Metoda write zapisuje dane (traktowane jako tablica char) o podanym rozmiarze (w bajtach)

Pliki binarne

Pliki binarne

Pliki binarne

Pliki binarne

Podsumowanie Standardowa biblioteka szablonów (Standard Template Library STL) Operacje zapisu/odczytu plików