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

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

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

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

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

Część 4 życie programu

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

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

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

Wskaźniki. Informatyka

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

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

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

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

Techniki Programowania wskaźniki 2

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

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

Zajęcia 6 wskaźniki i tablice dynamiczne

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

Podstawy Programowania C++

Programowanie komputerowe. Zajęcia 4

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

Materiał. Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Funkcje Wskaźniki Referencje Tablice dynamiczne Typ string Przeładowania funkcji

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

Laboratorium nr 9. Temat: Wskaźniki, referencje, dynamiczny przydział pamięci, tablice dynamiczne. Zakres laboratorium:

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

Techniki Programowania wskaźniki

Wykład 1: Wskaźniki i zmienne dynamiczne

Lab 9 Podstawy Programowania

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

Zmienne i struktury dynamiczne

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:

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

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

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

I - Microsoft Visual Studio C++

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

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

Programowanie w języku C++

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

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

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

Język C, tablice i funkcje (laboratorium)

4. Tablica dwuwymiarowa to jednowymiarowa tablica wskaźników do jednowymiarowych tablic danego typu.

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Programowanie komputerowe. Zajęcia 1

Wstęp do programowania obiektowego. Przekazywanie parametrów do funkcji w C++ Metody i funkcje operatorowe Strumienie: standardowe, plikowe, napisowe

C++ wprowadzanie zmiennych

Programowanie komputerowe. Zajęcia 5

Co to jest sterta? Sterta (ang. heap) to obszar pamięci udostępniany przez system operacyjny wszystkim działającym programom (procesom).

Programowanie obiektowe W3

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

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

Podstawy Programowania

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

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Tablice i funkcje. Marcin Makowski. 26 listopada Zak lad Chemii Teoretycznej UJ

Wstęp do programowania

Języki i metodyka programowania. Wprowadzenie do języka C

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

tablica: dane_liczbowe

Wskaźniki, funkcje i tablice

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

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

Wstęp do Programowania, laboratorium 02

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Algorytmy i język C++

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

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

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

Wstęp do wskaźników w języku ANSI C

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

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

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

W dowolnym momencie można zmienić typ wskaźnika.

Wykład 4: Klasy i Metody

Konstruktor kopiujacy

Techniki Programowania przeładowanie funkcji

Podstawy i języki programowania

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

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

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

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

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

Podstawy programowania w języku C++

Argumenty wywołania programu, operacje na plikach

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

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

Podstawy programowania

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

Język C++ zajęcia nr 2

Język C, tablice i funkcje (laboratorium, EE1-DI)

Języki i techniki programowania Ćwiczenia 2

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

Transkrypt:

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

Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne moduły. Dane można przekazywać do funkcji podajac ich wartość (funkcja pracuje na kopii) lub adres w pamięci (funkcja pracuje na oryginale ) referencje, wskaźniki. K.Grzelak (Wykład 1) Programowanie w C++ 2 / 40

Pojęcia z poprzedniego wykładu Tablica to ciag obiektów tego samego typu, zajmujacy ciagły obszar pamięci. Wskaźnik to adres w pamięci gdzie znajduje się dany obiekt. int *wski; int liczba=150; wski= &liczba; cout «liczba to «(*wski)«endl; K.Grzelak (Wykład 1) Programowanie w C++ 3 / 40

Tablice przechowujace liczby Na etapie deklaracji rezerwowany jest obszar pamięci o określonej długości. 1 4 9 16 25 36 49 64 81 0 1 2 3 4 5 6 7 8 K.Grzelak (Wykład 1) Programowanie w C++ 4 / 40

Z poprzedniego wykładu Częste użycie wskaźników do pracy z tablicami. Nazwa tablicy to adres jej zerowego elementu. Przykład: wskaźnik ustawiony na poczatku tablicy. int naturalne[9]; int *wsk=naturalne; 1 4 9 16 25 36 49 64 81 K.Grzelak (Wykład 1) Programowanie w C++ 5 / 40

Z poprzedniego wykładu Zwiększanie (zmniejszanie) wskaźnika o n odpowiada przesuwaniu go o n pól w tablicy. Przykład: przesuwamy wskaźnik o 3 pola tablicy (tutaj 3*4 bajty) wsk=wsk+3; 1 4 9 16 25 36 49 64 81 0 1 2 3 4 5 6 7 8 K.Grzelak (Wykład 1) Programowanie w C++ 6 / 40

Przekazywanie jednowymiarowej tablicy do funkcji Tablicę przesyła się do funkcji podajac adres jej poczatku (i jej rozmiar). W przypadku tablicy funkcja zawsze pracuje na jej oryginale. K.Grzelak (Wykład 1) Programowanie w C++ 7 / 40

Przekazywanie jednowymiarowej tablicy do funkcji Zapis z nawiasami kwadratowymi K.Grzelak (Wykład 1) Programowanie w C++ 8 / 40

Przekazywanie jednowymiarowej tablicy do funkcji Zapis wskaźnikowy Na co pokazuje wskaźnik po wyjściu z pętli for? Jak wypisać wewnatrz funkcji zawartość tablicy po zmianach? K.Grzelak (Wykład 1) Programowanie w C++ 9 / 40

Przekazywanie jednowymiarowej tablicy do funkcji Zapis mieszany K.Grzelak (Wykład 1) Programowanie w C++ 10 / 40

Przekazywanie jednowymiarowej tablicy do funkcji Wszystkie trzy funkcje wywołuje się tak samo, podajac nazwę tablicy i jej rozmiar. K.Grzelak (Wykład 1) Programowanie w C++ 11 / 40

Tablice wielowymiarowe... czyli tablice których elementami sa inne tablice int tab[5][2]; tab jest 5-cio elementowa tablica obiektów z których każdy jest dwuelementowa tablica liczb typu int. Tablica ma 5 wierszy i 2 kolumny. Tablice przechowywane sa w pamięci wierszami najszybciej zmienia się indeks najbardziej z prawej strony. K.Grzelak (Wykład 1) Programowanie w C++ 12 / 40

Tablice wielowymiarowe... czyli tablice których elementami sa inne tablice int tab[5][2]; tab adres w pamięci zerowego elementu 5-elementowej tablicy wypełnionej 2-elementowymi tablicami obiektów int. tab[i] adres w pamięci 2-elementowej tablicy wypełnionej obiektami int. tab[i][j] obiekt typu int. K.Grzelak (Wykład 1) Programowanie w C++ 13 / 40

Przekazywanie dwuwymiarowej tablicy do funkcji Zapis tablicowy K.Grzelak (Wykład 1) Programowanie w C++ 14 / 40

Przekazywanie dwuwymiarowej tablicy do funkcji Zapis wskaźnikowy Tak jak w przypadku jednowymiarowym obie funkcje wywołuje się tak samo. K.Grzelak (Wykład 1) Programowanie w C++ 15 / 40

C-string tablica znakowa z języka C K.Grzelak (Wykład 1) Programowanie w C++ 16 / 40

Tablice znakowe Przechowywanie napisów w standardowej tablicy: char figura[11]={"kwadrat"}; k w a d r a t NULL 0 1 2 3 4 5 6 7 8 NULL znak o kodzie Ascii 0 Ważne Przechowywany w tablicy ciag znaków, zakończony znakiem NULL to C-string string z języka C. 9 10 K.Grzelak (Wykład 1) Programowanie w C++ 17 / 40

Tablice znakowe C-string Nie trzeba znać długości napisu wczytywanie napisu aż do napotkania znaku o kodzie Ascii 0. Rozmiar C-stringu jest większy o 1 od ilości zapisanych znaków. K.Grzelak (Wykład 1) Programowanie w C++ 18 / 40

Klasa string ciagi znaków w języku C++ K.Grzelak (Wykład 1) Programowanie w C++ 19 / 40

Podstawy użycia klasy string w C++... czyli przechowywanie napisów prościej Nowy typ zmiennej Wymaga dodania pliku nagłówkowego: #include<string> Deklaracja: string wyraz; Deklaracja i inicjalizacja: string figura="kwadrat"; K.Grzelak (Wykład 1) Programowanie w C++ 20 / 40

Podstawy użycia klasy string w C++ Przykłady użytkowania Używanie bardzo podobne jak dla typów int,double... Przykład 1 - wczytywanie z klawiatury cout «Podaj nazwę figury «endl; string figura; cin» figura Przykład 2 - porównania if(figura== kwadrat ){ cout «OK «endl; } K.Grzelak (Wykład 1) Programowanie w C++ 21 / 40

Podstawy użycia klasy string w C++ To dopiero poczatki Napis z klasy string (np. string nazwa;)...... można zamienić na C-string: nazwa.c_str()... mozna sprawdzić jego długość: nazwa.length()... mozna odwołać się do pojedynczej litery, tak jak w przypadku zwykłej tablicy: nazwa[i]... K.Grzelak (Wykład 1) Programowanie w C++ 22 / 40

Dynamiczna rezerwacja (alokacja) obszarów pamięci K.Grzelak (Wykład 1) Programowanie w C++ 23 / 40

Operatory new i delete new - kreuje obiekty delete - usuwa obiekty Obiekty tworzone operatorem new nie maja nazwy int *wsk; wsk = new int; delete wsk; K.Grzelak (Wykład 1) Programowanie w C++ 24 / 40

Operatory new i delete Obiekty tworzone operatorem new nie maja nazwy - dostęp tylko za pomoca wskaźników. Czas życia od użycia new do użycia delete. Obiekty nie sa tworzone na stosie, tylko na stogu (heap). K.Grzelak (Wykład 1) Programowanie w C++ 25 / 40

Operatory new[] i delete[] new [] - kreuje tablice delete [] - usuwa tablice Tablice tworzone operatorem new[] nie maja nazwy int *wsktab; wsktab = new int[n]; delete [] wsktab; K.Grzelak (Wykład 1) Programowanie w C++ 26 / 40

Operatory new[] i delete[] Obiekty tworzone operatorem new [] nie maja nazwy - dostęp tylko za pomoca wskaźników. Czas życia od użycia new [] do użycia delete [] Dynamiczne tablice nie sa tworzone na stosie, tylko na stogu (heap) moga być większe. K.Grzelak (Wykład 1) Programowanie w C++ 27 / 40

Dynamiczne tablice Rozmiar dynamicznej tablicy nie musi być znany w czasie kompilacji. K.Grzelak (Wykład 1) Programowanie w C++ 28 / 40

Argumenty funkcji main K.Grzelak (Wykład 1) Programowanie w C++ 29 / 40

Argumenty funkcji main...... czyli parametry z linii wywołania programu Dwie możliwości deklaracji funkcji main 1 int main() 2 int main(int argc,char* argv[]) K.Grzelak (Wykład 1) Programowanie w C++ 30 / 40

Argumenty funkcji main...... czyli parametry z linii wywołania programu Przykładowe uruchomienie programu g++ -o prog prog.cc./prog kwadrat 15.5 K.Grzelak (Wykład 1) Programowanie w C++ 31 / 40

Argumenty funkcji main...... czyli parametry z linii wywołania programu argc licznik parametrów wywołania (łacznie z nazwa programu) argv tablica wskaźników do ciagów znaków (C-string) K.Grzelak (Wykład 1) Programowanie w C++ 32 / 40

Argumenty funkcji main...... czyli parametry z linii wywołania programu Jeśli wywołanie programu:./prog kwadrat 15.5 to: argc 3 argv[0]./prog argv[1] kwadrat argv[2] 15.5 K.Grzelak (Wykład 1) Programowanie w C++ 33 / 40

Argumenty funkcji main...... czyli parametry z linii wywołania programu W tablicy argv parametry zapisane jako wskaźniki do C-stringow. W przypadku parametrów które sa liczbami potrzebna konwersja na liczbę (funkcja atof z biblioteki cstdlib) K.Grzelak (Wykład 1) Programowanie w C++ 34 / 40

Podsumowanie Tablice wielowymiarowe: tablice których elementami sa inne tablice. Przechowywanie ciagów znaków: sposób z języka C C-string tablica wypełniona znakami ze znakiem NULL na końcu; sposób z języka C++ obiekt z klasy string użycie analogiczne jak w przypadku podstawowych typów (int, double,... ). Argumenty funkcji main: albo brak argumentów albo dwa: int main(int argc,char* argv[]) => argumenty z linii wywołania zawsze przekazywane jako ciagi znaków (C-stringi). K.Grzelak (Wykład 1) Programowanie w C++ 35 / 40

Do przemyślenia i sprawdzenia w domu Pytanie: Jak ułożone sa w pamięci kolejne elementy tablicy zdefiniowanej poniżej? K.Grzelak (Wykład 1) Programowanie w C++ 36 / 40

Do przemyślenia i sprawdzenia w domu Tak można wypisać kolejne elementy tablicy liczby bez użycia wskaźników: K.Grzelak (Wykład 1) Programowanie w C++ 37 / 40

Do przemyślenia i sprawdzenia w domu Tak można wypisać kolejne elementy tablicy liczby z użyciem wskaźników: K.Grzelak (Wykład 1) Programowanie w C++ 38 / 40

Do przemyślenia i sprawdzenia w domu Co wypisze się na ekran? K.Grzelak (Wykład 1) Programowanie w C++ 39 / 40

Do przemyślenia i sprawdzenia w domu Co wypisze się na ekran? K.Grzelak (Wykład 1) Programowanie w C++ 40 / 40