Wykład 4. Tablice. Pliki

Podobne dokumenty
Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy i języki programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

Strumienie, pliki. Sortowanie. Wyjątki.

Pliki. Operacje na plikach w Pascalu

Tablice. Jones Stygar na tropie zmiennych

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

OPERACJE NA PLIKACH. Podstawowe pojęcia:

Lab 9 Podstawy Programowania

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Wykład PASCAL - Pliki tekstowe

Zasady programowania Dokumentacja

Wykład 1: Wskaźniki i zmienne dynamiczne

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

Strumienie, pliki. Sortowanie. Wyjątki.

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

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

Podstawy i języki programowania

Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Oracle PL/SQL. Paweł Rajba.

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Lista, Stos, Kolejka, Tablica Asocjacyjna

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

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

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

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

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

System plików warstwa logiczna

Programowanie w językach

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

STRUMIENIE TEKSTOWE WEJŚCIOWE WPROWADZANIE DANYCH STRUMIENIE BAJTOWE, STRUMIENIE TEKSTOWE

Wykład 2: Podstawy Języka

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

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

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

Laboratorium 5: Tablice. Wyszukiwanie binarne

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Podstawy programowania. Podstawy C# Tablice

Funkcje zawarte w bibliotece < io.h >

7 Przygotował: mgr inż. Maciej Lasota

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Klasa 2 INFORMATYKA. dla szkół ponadgimnazjalnych zakres rozszerzony. Założone osiągnięcia ucznia wymagania edukacyjne na. poszczególne oceny

4. Pliki Informacje ogólne o dostępie do plików w PHP Sprawdzanie istnienia pliku file_exists()

XML i nowoczesne technologie zarządzania treścią 2007/08

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

Argumenty wywołania programu, operacje na plikach

Programowanie 3 - Funkcje, pliki i klasy

Funkcje zawarte w bibliotece < io.h >

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

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

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania w języku C++

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

Programowanie i struktury danych

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Komunikacja między sterownikami przez protokół ADS

PRZYKŁADY OPERACJI PLIKOWYCH z wykorzystaniem biblioteki <stdio.h>

PoniŜej znajdują się pytania z egzaminów zawodowych teoretycznych. Jest to materiał poglądowy.

XV. Wskaźniki Odczytywanie adresu pamięci istniejących zmiennych Wskaźniki pierwsze spojrzenie.

Metodyka i Technika Programowania 1

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

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

Zaliczenie przedmiotu:

Podstawy Programowania C++

Pliki. Funkcje tworzące pliki i operujące na nich opisane są w części 2 pomocy systemowej. Tworzenie i otwieranie plików:

Biblioteka standardowa - operacje wejścia/wyjścia

KURS C/C++ WYKŁAD 6. Wskaźniki

Ćwiczenie: JavaScript Cookies (3x45 minut)

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

EGZAMIN MATURALNY Z INFORMATYKI

Podstawy i języki programowania

Podstawy programowania w języku C++

Podstawy programowania w języku C++

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

dr inż. Jarosław Forenc

ang. file) Pojęcie pliku (ang( Typy plików Atrybuty pliku Fragmentacja wewnętrzna w systemie plików Struktura pliku

Wykład 3 Składnia języka C# (cz. 2)

Programowanie w języku Java

Język C zajęcia nr 11. Funkcje

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej. Laboratorium cyfrowej techniki pomiarowej. Ćwiczenie 4

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Podstawowe części projektu w Javie

Wprowadzenie Tablica jednowymiarowa Tablice wielowymiarowe Algorytmy Rekordy Pliki Zadania Bibliografia

Programowanie w językach wysokiego poziomu

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

INFORMATYKA Studia Niestacjonarne Elektrotechnika

Transkrypt:

Informatyka I Wykład 4. Tablice. Pliki Dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017

Tablice Tablica uporządkowany zbiór elementów określonego typu Każdy element tablicy posiada własną wartość oraz unikatowy indeks wartość T[0] T[1] T[2] T[n-1] indeks 0 1 2 n-1

Deklaracja tablicy Obowiązkowo: Nazwa tablicy (zmienna) Typu danych elementów tablicy Opcjonalnie: Liczba elementów tablicy Wartości elementów tablicy Tablicowy typ danych jest złożonym typem danych

Tworzenie obiektu tablicy Tablice są złożonym typem danych Przy tworzeniu obiektu tablicy należy posłużyć się konstrukcją new oraz wskazać jej rozmiar Rozmiar tablicy może być obliczany w trakcie działania programu (!)

Diagram deklaracji tablicy Typ danych [ ] Nazwa zmiennej ; = new Typ danych [ Rozmiar ]

Tworzenie obiektu tablicy przez wskazanie wartości jej elementów Tablica może być zadeklarowana poprzez podanie wartości jej elementów ale wyłącznie w momencie deklarowania zmiennej tablicowej

Rozmiar tablicy Liczbę elementów w tablicy można uzyskać poprzez pole.length zmiennej tablicowej

Elementy tablicy Wszystkie elementy tablicy reprezentują jednakowy typ danych Typem danych może być dowolny typ języka Java (prosty lub złożony) Elementy tablicy są numerowane od zera Dla tablicy z N elementów: Indeks pierwszego elementu = 0 Indeks ostatniego elementu = (N 1) Próba wykroczenia poza granice tablicy skutkuje błędem typu ArrayIndexOutOfBoundsException

Adresacja elementów tablicy Adresacja elementu tablicy odbywa się poprzez jego indeks w tablicy [w nawiasach kwadratowych] oraz nazwę tablicy Element tablicy zachowuje się jako zwykła zmienna, tj. może wystąpić po obu stronach instrukcji przypisania T [ i ] Nazwa tablicy Indeks elementu

Typowe operacje na tablicach Zapis lub odczyt wartości elementu Wyświetlanie zawartości całej tablicy Zmienna tablicowa może być użyta np. w instrukcji System.out.println() Wynik zależy od typu danych elementów tablicy Operacja przypisania wartości A=B dla zmiennych typu tablicowego (złożonego) działa inaczej niż w przypadku zmiennej typu prostego: obie zmienne będą wskazywały na tę samą tablicę w pamięci

Tablice wielowymiarowe Tablica może posiadać wiele wymiarów Każdy wymiar ma własny indeks T [n] [m] [k] Adresacja pojedynczej wartości odbywa się za pomocą konstrukcji T [ indeks 1] [indeks 2].. [indeks n]

Deklaracja tablicy wielowymiarowej poprzez wartości jej elementów

Tablice dynamiczne Rozmiar zwykłej tablicy nie może być zmieniony po jej zadeklarowaniu Jeśli z algorytmu wprost nie wynika maksymalna liczba elementów, można zastosować tablicę dynamiczną zbudowaną z użyciem klasy ArrayList Typ tablicowy Typ elementu tablicy Zmienna tablicowa

Rozmiar tablicy dynamicznej Bieżący rozmiar tablicy dynamicznej (liczbę elementów) można pobrać za pomocą funkcji.size()

Dodanie elementu do tablicy dynamicznej Dodanie elementu odbywa się za pomocą metody.add zmiennej tablicowej

Pobranie lub modyfikacja wartości elementu tablicy dynamicznej Pobranie wartości elementu poprzez indeks Zmiana wartości elementu wskazanego

Usunięcie elementu tablicy dynamicznej Wybrany element można usunąć wskazując jego indeks lub wartość Wszystkie elementy można usunąć stosując funkcję

Przejście iteracyjne po wszystkich elementach tablicy Zmienna przechowuje wartość kolejnego elementu z tablicy TS Tablica dynamiczna elementów typu String

Często wykonywane operacje na tablicach Wyszukiwanie elementu tablicy o wskazanej / minimalnej / maksymalnej wartości Sortowanie elementów tablicy Złączenie tablic

Typ danych String Jest złożonym typem danych tablica elementów typu char Różnice pomiędzy typem String a Char[] Funkcja Char[] String Liczba elementów Operacja konkatenacji + Wybrany element o indeksie k.length Zawsze taka sama Nie.size() zmienna Tak [ k ].charat( k )

Operacje typu danych String Pobranie wskazanego elementu charat( n ) Porównanie wartości metoda.compareto metoda.equals Wycinanie Metoda substring Wyszukiwanie i zamiana metody startswith, endswith metoda indexof metoda replace Inne metoda trim

Pliki Plik struktura o sekwencyjnym dostępie przeznaczona do przechowania danych w zewnętrznej pamięci komputera Zmienne w programie są przechowywane w pamięci operacyjnej RAM komputera i nie istnieją po jego wyłączeniu Plik istnieje niezależnie od stanu komputera (wł./wył.) Rozmiar pliku jest nieograniczony (maksymalny rozmiar jest narzucany przez system operacyjny) Wniosek: do operowania na plikach wymagane są odrębne mechanizmy dostępu sekwencyjnego.

Organizacja pliku Segment danych Segment danych Segment danych Segment danych. Segment danych Początek pliku Koniec pliku EOF (End Of File) Bieżąca pozycja odczytu / zapisu danych SEEK POSITION

Organizacja pliku (c.d.) Plik z punktu widzenia programu jest strumieniem danych Odczyt lub zapis danych odbywa się w pozycji bieżącej Jednocześnie można wykonać jedną z operacji: odczyt, zapis, przesunięcie pozycji bieżącej Po dokonaniu operacji bieżąca pozycja jest przesuwana o liczbę wczytanych bajtów

Format pliku Plik może zawierać dane o dowolnym typie Podział plików na tekstowe (txt, csv, cmd, xml, ) oraz binarne (com, exe, dll, bmp, jpg, ) istnieje wyłącznie z punktu widzenia użytkownika Wniosek: ten sam plik może być traktowany w zależności od potrzeb, na różne sposoby

Operacje na plikach open Otwarcie pliku read write seek Odczyt danych Zapis danych Zmiana pozycji bieżącej close Zamknięcie pliku

Zapis danych do pliku Utworzyć zmienną typu FileWriter Podać nazwę pliku Zapisać dane metodą write Obsłużyć wyjątki Zamknąć plik

Tworzenie pliku do zapisu Przy tworzeniu zmiennej typu FileWriter należy wskazać nazwę pliku wyjściowego który ma zostać utworzony, oraz opcjonalnie tryb nadpisania istniejącej zawartości System operacyjny powinien umożliwiać zapis we wskazanej lokalizacji, w przeciwnym razie zostanie zgłoszony wyjątek IOException

Zapis danych do pliku Zapis tekstu Zapis pozostałych typów jest możliwa po konwersji na String Zapis danych w postaci binarnej

Odczyt danych z pliku Otworzyć plik (nazwa, tryb) Obsłużyć wyjątki (brak pliku, dostęp zabroniony, etc.) Odczytać dane z pliku Zamknąć plik Obsłużyć wyjątki (niewłaściwy format, brak danych, koniec pliku)

Klasa FileReader Klasa FileReader realizuje odczyt danych z pliku w postaci binarnej (bajt po bajcie) Metoda read() zwraca kolejną wartość wczytaną z pliku, lub -1 jeśli plik został wczytany w całości Metoda ready() zwraca false w momencie kiedy wszystkie dane z pliku zostaną wczytane

Klasa FileReader: odczyt zawartości pliku w postaci binarnej

Klasa Scanner Klasa Scanner realizuje odczyt z pliku dla danych określonego typu Za pomocą metody hasnext () sprawdzamy, czy dana jest dostępna do odczytu hasnextint() hasnextstring() etc. Następnie za pomocą metody next...() wczytujemy ją

Klasa Scanner: odczyt danych typu String z pliku tekstowego

Przyczyny wyjątków przy odczycie z pliku Brak pliku we wskazanej lokalizacji Brak możliwości otwarcia pliku do odczytu Format wczytanych danych różni się od oczekiwanego Osiągnięto koniec pliku

Zamknięcie pliku Plik raz otwarty koniecznie musi zostać zamknięty przed rozpoczęciem kolejnej operacji Zamknięcie pliku zwalnia zasoby w programie przeznaczone do obsługi pliku, oraz pozwala na dostęp do pliku innym użytkownikom Brak instrukcji zamknięcia pliku prowadzi do błędów na różnych etapach wykonania programu, dlatego należy pilnować wykonania instrukcji close()