Programowanie komputerowe. Zajęcia 5

Podobne dokumenty
Programowanie komputerowe. Zajęcia 3

Podstawy Programowania

dr inż. Jarosław Forenc

Język C++ wykład VIII

Programowanie komputerowe. Zajęcia 4

STL: Lekcja 1&2. Filozofia STL

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

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

Programowanie komputerowe. Zajęcia 1

Jak Windows zarządza pamięcią?

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

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

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

ZASADY PROGRAMOWANIA KOMPUTERÓW

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

DYNAMICZNE PRZYDZIELANIE PAMIECI

Zmienne i struktury dynamiczne

Podstawy Programowania C++

Język C++ zajęcia nr 2

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

Część 4 życie programu

Zajęcia 4 procedury i funkcje

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

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

Języki programowania obiektowego Nieobiektowe elementy języka C++

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Programowanie w języku C++

Zadania z podstaw programowania obiektowego

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

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

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

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

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

Programowanie obiektowe W3

Deklaracja struktury w C++

VII. Ciągi znaków łańcuchy

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

Programowanie i struktury danych

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Programowanie w języku C++

Podstawy programowania

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

Podstawy programowania w języku C++

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Podstawy Programowania

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

Projektowanie klas c.d. Projektowanie klas przykład

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

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

I - Microsoft Visual Studio C++

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:

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

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Podstawy programowania w języku C++

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

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

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

Ćwiczenie 3 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

tablica: dane_liczbowe

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

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Podstawy i języki programowania

lekcja 8a Gry komputerowe MasterMind

Lab 9 Podstawy Programowania

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

Programowanie i struktury danych

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

Programowanie - wykład 4

Wykład 1: Wskaźniki i zmienne dynamiczne

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.

Wykład 8: klasy cz. 4

Stałe i zmienne znakowe. Stała znakowa: znak

Struktury, unie, formatowanie, wskaźniki

Programowanie obiektowe w C++ Wykład 12

Zaawansowane programowanie w C++ (PCP)

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

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Zaawansowane programowanie w C++ (PCP)

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Dynamiczne struktury danych

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

do instrukcja while (wyrażenie);

Wstęp do programowania

Podstawy Programowania Podstawowa składnia języka C++

1 Powtórzenie wiadomości

Transkrypt:

Programowanie komputerowe Zajęcia 5

Tablice wielowymiarowe Tablicę dwuwymiarową możemy deklarować statycznie: typ nazwa[rozmiar1][rozmiar2]; Ma ona elementy nazwa[i][j] dla i=0,,rozmiar1-1, j=0,...,rozmiar2-1. Dynamicznie: dwuwymiarowa tablica jest skonstruowana jako tablica wskaźników do tablic jednowymiarowych, np. tak: int** t; t=new int*[m]; for(int i=0; i<m; i++) t[i]=new int[n];

Tablice wielowymiarowe (2) Żeby usunąć tablicę, musimy usunąć najpierw tablice z wartościami, a następnie tablicę wskaźników: for(int i=0; i<m; i++) delete[] t[i]; delete t; Analogicznie tworzy się tablice o większej ilości wymiarów. Można tworzyć dynamicznie tablice, które nie są kwadratowe do tablicy ze wskaźnikami można podpiąć tablice różnej długości.

Klasa string Przechowywanie napisów jako ciągów znaków zakończonych zerem nie zawsze jest wygodne. Alternatywną metodą jest użycie klasy string. Żeby z niej korzystać, należy na początku pliku umieścić dyrektywę #include <string> Tworzenie napisów: string s; // tworzy pusty napis "" string s("napis"); // tworzy napis "Napis" string s(7, 'A'); // tworzy napis "AAAAAAA" string s(t, 5, 3); // t powinno być napisem, s stanie się równe // podciągowi t od piątego znaku o długości max 3

Klasa string (2) Drukowanie przy pomocy cout. Wczytywanie: cin >> s; wczytuje całą linię. Dostęp do poszczególnych znaków: przy pomocy [] s[2]='a'; lub przy pomocy metody at: s.at(2)='a'; Ta druga metoda jest bezpieczniejsza program sprawdzi czy indeks jest poprawny.

Klasa string metody Zmienne typu string to obiekty, tj. takie zmienne mogą wykonywać funkcje (nazywane też metodami). Metody dla obiektu s wywołujemy s.nazwa_funkcji(parametry) Przykładem metody klasy string jest at z poprzedniej strony. Inne są wymienione poniżej: size_t length() Zwraca długość napisu. size_t oznacza typ służący do przechowywania liczn naturalnych (można zakładać, że jest to int). Przykład użycia: cout << s.length();

Klasa string metody (2) size_t size() Zwraca długość, synonim length. string& append(const string& str) dołącza parametr na końcu napisu. Zwraca napis dla którego wywołaliśmy metodę dzięki temu można napisać np. s.append("abc").append("def"); Modyfikator const w przy parametrze oznacza, że funkcja na pewno nie zmieni parametru (przekazanego przez zmienną). Można też użyć operatora +=, np. tak: s+="abcdef";

Klasa string metody (3) string& insert(size_t pos, const string& str) Wstawia napis str przed znakiem o indeksie pos. string substr(size_t pos=0, size_t len=npos) Tworzy nowy napis który zawiera podciąg od pozycji pos o długości (co najwyżej) len. Jeśli pominiemy drugi parametr, kopiuje się podciąg do końca napisu. Jeśli pominiemy oba, tworzy się kopia. Przykład: string s("abcdef"); cout << s.substr(2,2) << endl << s.substr(3) << endl; drukuje CD DEF

Metody jak je znaleźć Klasa string posiada jeszcze wiele innych metod. Nie warto się ich uczyć na pamięć, ale trzeba wiedzieć jak je znaleźć. w książce w dokumentacji (w Code::Blocks nie ma, ale jest np. w Visual Studio) w internecie, np. na www.cplusplus.com

Klasa vector Klasa vector umożliwia obsługę tablic. Tak naprawdę vector nie jest klasą, ale wzorcem umożliwiającym tworzenie klas uzależnionych od typu elementów, tak więc mamy np. vector<int> tablica liczb typu int vector<string> tablica napisów vector<vector<int> > tablica tablic liczb (tablica dwuwymiarowa) Żeby używać klasy vector należy użyć dyrektywy #include <vector>

Konstruktory klasy vector vector<t>() pusta tablica przykład: vector<int> v; vector<t>(size_t n) tablica o zadanej długości przykład: vector<int> v(10); vector<t>(size_t n, T val) tablica o zadanej długości wypełniona wartością przykłady: vector<string> v(10, "ABC"); vector<vector <int> > v(5,vector<int>(5,7)); vector<t>(const vector<t>& v) kopia tablicy

Metody klasy vector<t> T& at(size_t n) element o indeksie n przykład: v.at(5); T& operator[](size_t n) jak wyżej przykład v[5]; vector<t>& operator=(const vector<t>& v) przypisanie przykład: vector<int> v(5,3); vector<int> w; w=v;

Metody klasy vector<t> (2) size_t size() długość tablicy void resize(size_t n) zmienia długość tablicy void resize(size_t n, const T& val) zmienia długość, dodatkowe elementy ustawia na val void push_back(const T& val) dodaje element na końcu, tablica się wydłuża o 1 void pop_back() usuwa ostatni element void clear() usuwa wszystkie elementy

Ćwiczenia 1. Napisać funkcję void rejestr() która wczytuje liczby z klawiatury aż zostanie wpisane 0. Następnie drukuje wszystkie te liczby na ekranie. 2. Napisać funkcję vector<int> czynniki(int n) która zwraca tablicę z czynnikami pierwszymi liczby n. 3. Napisać funkcję bool anagram(char* s, char* t) która zwraca true jeśli napisy s i t składają się z tych samych znaków.

Ćwiczenia (2) 4. Napisać program, który prosi użytkownika o wpisanie tekstu. Tekst może składać się z wielu linii; wczytywanie kończy się gdy zostanie wpisana pusta linia. Następnie należy: a. wydrukować wpisany tekst b. wypisać liczbę wpisanych linii c. wypisać liczbę wpisanych wyrazów; wyraz to ciąg znaków pomiędzy spacjami d. wydrukować listę znaków, które występują w tekście przynajmniej raz

Zadanie domowe (2) Zadanie domowe znajduje się pod adresem http://www.mimuw.edu.pl/~ziemians/pk2016/zd2.cpp Należy uzupełnić funkcje zastępując części oznaczone /*( )*/ Rozwiązania odesłać na adres kziemianski.edu@gmail.com do czwartku, 10 października, g.12:00. W temacie e-maila wpisać pk2-xxxxx, gdzie XXXXXX jest numerem indeksu.