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.

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

Programowanie i struktury danych

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

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

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

Język C++ wykład VIII

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

STL: Lekcja 1&2. Filozofia STL

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

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

Programowanie - wykład 4

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

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

Wzorce funkcji (szablony)

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

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

Część 4 życie programu

Programowanie w C++ Wykład 8. Katarzyna Grzelak. 7 maja K.Grzelak (Wykład 8) Programowanie w C++ 1 / 31

Szablon klasy std::vector

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

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

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

Jak Windows zarządza pamięcią?

Programowanie w językach

W przypadku STL w specyfikacji nazwy pliku nagłówkowego brak rozszerzenia tj. <string> <string.h> zamiast

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

I - Microsoft Visual Studio C++

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

Programowanie obiektowe

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

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

Wstęp do programowania

Zasady programowania Dokumentacja

Technologie cyfrowe semestr letni 2018/2019

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Programowanie w C++ Wykład 6. Katarzyna Grzelak. kwiecień K.Grzelak (Wykład 6) Programowanie w C++ 1 / 40

Kurs programowania. Wykład 9. Wojciech Macyna

Wstęp do programowania. Wykład 1

Wprowadzenie do programowania i programowanie obiektowe

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Operatory na rzecz typu TString

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Pliki wykład 2. Dorota Pylak

obiekty funkcyjne - funktory

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Wyjątki (exceptions)

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

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

Programowanie komputerowe. Zajęcia 1

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

Biblioteka standardowa C++

DYNAMICZNE PRZYDZIELANIE PAMIECI

Programowanie Obiektowo Zorientowane w języku C++ Biblioteka STL

Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ

2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy

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

TEMAT : KLASY POLIMORFIZM

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

tablica: dane_liczbowe

Programowanie i struktury danych

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Algorytmy w C++ dla opornych!

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Technologie cyfrowe semestr letni 2018/2019

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 26 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Dziedziczenie & W slajdach są materiały zapożyczone z

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

Pojemniki Pojemnik to obiekt, którego zadaniem jest przechowywanie innych obiektów.

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

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

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

Programowanie obiektowe W3

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Technologie programowania Wykład 4. Szablony funkcji Notes. Szablony funkcji Notes. Szablony funkcji Notes. Notes. Przemek Błaśkiewicz.

Wstęp do Programowania 2

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Wstęp do programowania

Programowanie w języku C++

STL Standardt Template Library (wprowadzenie)

Algorytmy i Struktury Danych.

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Pliki wykład. Dorota Pylak

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

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

Podstawy Programowania

Język C++ część 9 szablony klas. Jarosław Gramacki Instytut Informatyki i Elektroniki. szablony funkcji

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Transkrypt:

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. Pliki z rozwiązaniami projektu (wszystkie polecenia projektu skrupulatnie są zrealizowane) należy przesłać na adres danuta.makowiec@gmail.com Rozliczenie projektu musi nastąpić w terminie 2 tygodni od laboratorium, na którym dany projekt był omawiany. Rozliczenie oznacza otrzymanie listu z informacją OK. Projekty będą oceniane raz w tygodniu we wtorki. Tylko projekty przysłane do godz.18-tej będą oceniane w danym tygodniu. Możliwe jest rozliczenie ulgowe jeśli projekt wykona się na zajęciach. W terminie poprawkowym, czyli po 30 stycznia 2017, obowiązuje zaliczenie testowe każdego niezaliczonego wcześniej projektu Przygotować program wczytujący słowa z pliku tekstowego do wspólnego wektora wyszukujący wszystkie wystąpienia określonego słowa w utworzonym wektorze ( niekoniecznie na zajęciach) wybierający co dziesiąte słowo z wektora (na zajęciach) zapisujący zestaw wyszukanej informacji do pliku wynikowego. Implementacja ma być projektem modułowym być zgodna z zasadami dobrego programowania testować poprawność działania wszystkich zaimplementowanych funkcji 1

Dobre praktyki programistyczne: Program realizuje wszelkie zlecone operacje i nic ponadto. program jest zgodny ze specyfikacją program jest efektywny kodowanie jest w dobrym stylu program realizuje zlecone operacje najsprawniej jak to tylko jest możliwe 1. Projekt musi być prosty a jego kod czytelny 2. Modułowa organizacja programu - dane i operacje na nich rozmieszczone są w wydzielonych modułach, funkcjach 3. Stosowane są konsekwentnie standardy kodowania dla obliczeń, oraz nazw funkcji, plików, zmiennych, itp. Nowoczesny kod jest: Stabilny : jedna zmiana nie powoduje rozsypania się wszystkiego Reużywalny : tak podzielony, aby elementy odpowiedzialne za te same czynności nie musiały być pisane za każdym razem ponownie Testowalny: poszczególne elementy mogą być użyte (sprawdzone) w odseparowanym środowisku testowym niezależnie od całości Modyfikowalny: zmiana działania jednego elementu nie powoduje potrzeby przepisania całości Zrozumiały: zmiana właściciela nie powoduje paraliżu informacyjnego 2

/* 4 pazdziernika 2017: pobierz_slowa.cpp wczytywanie slow z pliku tekstowego o zadanej nazwie o nieustalonej strukturze zapisywanie slow w formie ponumerowanej kolumny */ #include <iostream> //biblioteka obslugi strumieni cout i cin #include <fstream> // biblioteka obslugi plikow #include <string> // biblioteka obslugi slow #include <vector> // biblioteka obslugi kontenera vector using namespace std; int main() { ifstream file_2_read("python4biologists.txt"); ofstream file_2_write("python.txt"); if ( file_2_read.is_open()) { cout << "plik jest dostepny do analiz \n\n"; else { cout << "plik jest niedostepny. Koncze \n"; return -1; string one_word; while (!file_2_read.eof()) { file_2_read >> one_word; words.push_back(one_word); int size_of_words = words.size(); for (int i = 0; i < size_of_words; ++i) file_2_write <<endl<< i<< ": " << words[i] ; return 0; cout << kolejne slowa sa zapisane w pliku \n"; file_2_read.close(); file_2_write.close(); pobierz_slowa.cpp Obiekty klasy vector tak, jak tablice zajmują ciągły obszar pamięci. Pamięć jest przydzielana dynamicznie, zazwyczaj większa niż deklarowana, aby uniknąć drogiej czasowo alokacji. Przy inicjowaniu obiektu nie trzeba podawac rozmiaru. Metoda obiektu klasy vector: dopisywanie kolejnego elementu do wektora. Metoda obiektu klasy vector: ustalenie ilości elementów w wektorze. Przeciążenie operatora [] dla obiektów klasy vector - umożliwia obsługę wektora jak tablicy Deklaracja obiektu kontenera vector #include <vector> vector<type> variable_name (number_of_elements); vector<type> variable_name; Przykłady: Wektor ma number_of_elements składowych zainicjowanych 0!! Wektor vector<int> students_marks (5); vector<double> values (20,0); vector<string> name; Korzyści: Dostęp do metod klasy vector : push_back() pop _back() insert() remove() // deklaracja wektora z 5 int // deklaracja wektora z danymi typu double, o // rozmiarze 20 i wartosciach zaincjowanych 0 // deklaracja wektora z łańcuchami // na razie pusty (zawiera 0 łańcuchów) Dostęp do bibliotek STL: sort() reverse() find() 3

Iterator: popularna zmienna umosliwiająca alternatywny dostęp do elementów wektora Zmienną iterator it typu iterator trzeba zadeklarować. vector<string>::iterator it; Zmienna it może obsługiwać dowolną zmienną typu vector<string > Iterator wskazuje na it-ty element wektora. //... (ustalenie własnosci wektora) for (vector<string>::iterator it = words.begin(); it!= words.end(); ++it) { cout << *it << endl; // it to jakby wskaźnik do i-tego elementu wektora values cout << distance(words.begin(), it); <<endl; Dostęp do zawartości wektora przez *it lub distance() pobierz_slowa_iterator.cpp 4

/* 4 pazdziernika 2017: pobierz_slowa.cpp wczytywanie slow z pliku tekstowego o zadanej nazwie o nieustalonej strukturze zapisywanie slow w formie ponumerowanej kolumny */ #include <iostream> #include <fstream> #include <string> #include <vector> using namespace std; int main() { ifstream file_2_read("python4biologists.txt"); ofstream file_2_write("python.txt"); if ( file_2_read.is_open()) { cout << "plik jest dostepny do analiz \n\n"; else { cout << "plik jest niedostepny. Koncze \n"; return -1; string one_word; while (!file_2_read.eof()) { file_2_read >> one_word; words.push_back(one_word); int size_of_words = words.size(); for (int i = 0; i < size_of_words; ++i) file_2_write <<endl<< i<< ": " << words[i] ; return 0; cout << "slowa sa zapisane. Koncze \n"; file_2_read.close(); file_2_write.close(); wielomodułowość to rozwój czytaj_slowa.cbp Zmienne główne przetwarzania powinny być dostępne w programie głównym void read_words_from_file ( ifstream &, vector<string> &, int = EOF); void write_words_to file ( ofstream &, vector<string> &, int = EOF); Biblioteka Standard Template Library STL algorithm.h Przykłady standardowych funkcji z biblioteki <algorithm> działających na obiektach klasy vector sort ( values.begin(), values.end()); //sortuje wartości wektora od początku //do końca reverse (values.begin(), values.end()); // odwraca kolejność elementów w //wektorze random_shuffle (values.begin(), values.end()); // tasuje losowo wartości //wektora int num_zeros = count (values.begin(), values.end(), 0); // zlicza ile jest 0 wśród wartości wektora find (words.begin(), words.end(), word) szukaj.cbp // zwraca iterator gdzie znajduje //się word, przeszukanie jest od //words.begin() do words.end() 5