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

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

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

Lab 9 Podstawy Programowania

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

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

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

Języki i metodyka programowania. Wskaźniki i tablice.

Programowanie proceduralne INP001210WL rok akademicki 2017/18 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Wskaźniki. Informatyka

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

Wykład 1: Wskaźniki i zmienne dynamiczne

Stałe, tablice dynamiczne i wielowymiarowe

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

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

Wskaźniki. Programowanie Proceduralne 1

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

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

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

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

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

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

Wstęp do programowania

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

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

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

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

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

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

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

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 3. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 4. Karol Tarnowski A-1 p.

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

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Wskaźniki w C. Anna Gogolińska

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

Tablice, funkcje - wprowadzenie

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

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

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

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

6 Przygotował: mgr inż. Maciej Lasota

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

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

Tablice, funkcje, wskaźniki - wprowadzenie

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

Zmienne i struktury dynamiczne

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

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

Zajęcia 6 wskaźniki i tablice dynamiczne

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

wykład III uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - zarządzanie pamięcią, struktury,

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Laboratorium 5: Tablice. Wyszukiwanie binarne

Programowanie w C Wartości pseudolosowe i pomiar czasu

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

Wstęp do programowania

Język C zajęcia nr 11. Funkcje

Zajęcia 6 wskaźniki i tablice dynamiczne

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania komputerów

Programowanie w języku C++

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

Szablony klas, zastosowanie szablonów w programach

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

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

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

Wykład nr 3. Temat: Wskaźniki i referencje. Edward Morgan Forster

Podstawy programowania w języku C++

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

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

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

Podstawy programowania w języku C++

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

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

Programowanie obiektowe W3

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

Lab 8. Tablice liczbowe cd,. Operacje macierzowo-wektorowe, memcpy, memmove, memset. Wyrażenie warunkowe.

Wprowadzenie do programowania w języku C

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

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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:

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

ALGORYTMY I STRUKTURY DANYCH

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

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

Podstawy programowania. Wykład PASCAL. Zmienne wskaźnikowe i dynamiczne. dr Artur Bartoszewski - Podstawy prograowania, sem.

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

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

Wstęp do programowania INP003203L rok akademicki 2016/17 semestr zimowy. Laboratorium 1. Karol Tarnowski A-1 p.

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

x szereg(x)

Zaawansowane programowanie w języku C++ Zarządzanie pamięcią w C++

Transkrypt:

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B

Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu (referencji) Operator wskaźnikowy (dereferencji) Dynamiczna alokacja pamięci Algorytmy sortowania Sortowanie bąbelkowe Sortowanie przez wybieranie Na podstawie: M. M. Sysło, Algorytmy G. Perry, D. Miller, Język C Programowanie dla początkujących

Tablice Do przechowywania wielu danych jednego rodzaju (typu) można wykorzystać tablice Tablice definiuje się podobnie jak zmienne typ nazwa[rozmiar]; char napis[25]; float oceny[7]; int punkty[7];

Tablice Dane do tablic można wprowadzać przy definicji, np.: int liczby[3] = {12, 61, 51}; Można też przypisać wartość wybranemu elementowi, np.: liczby[0] = 12; liczby[1] = 61; liczby[2] = 51;

Tablice

Tablice

Tablice

Liczby losowe Do generowania liczb losowych można wykorzystać funkcję rand() z biblioteki stdlib. Funkcja zwraca liczbę całkowitą z przedziału 0, RAND_MAX, gdzie RAND_MAX wynosi co najmniej 32 767.

Liczby losowe

Liczby losowe

Liczby losowe Generator liczb pseudolosowych działa w sposób deterministyczny. W celu zmiany ciągu generowanych liczb należy zmienić ziarno generatora. W tym celu wywołać należy funkcję srand() przekazując do niej liczbę całkowitą. Przekazywaną liczbą może być czas wywołania funkcji zwracany przez funkcję time() z biblioteki time.

Liczby losowe

Liczby losowe

Tablice Podsumowanie Tablice służą do przechowywania danych tego samego typu. Do poszczególnych elementów można odwoływać się za pomocą indeksów. Za pomocą pętli for można przeglądać elementy tablicy. Pamiętaj o ograniczonym rozmiarze tablicy. Nie używaj tablicy przed inicjalizacją. Do generowania losowych danych można użyć funkcję rand() z stdlib.

Wskaźniki Adresy pamięci Pamięć komputera podzielona jest na komórki. Każda komórka pamięci ma swój unikatowy adres. Deklaracja zmiennej w programie powoduje przydzielenie odpowiedniej pamięci. W programie posługujemy się nazwą zmiennej, która zastępuje adres pamięci.

Wskaźniki Operatory Operator Opis & Operator adresu * Operator dereferencji

Wskaźniki Definiowanie zmiennych wskaźnikowych int indeks; float liczba; int * wskindeks; float * wskliczba; Nazwy zmiennych wskaźnikowych nie muszą mieć specjalnego formatu.

Wskaźniki Operator adresu (referencji) int wiek = 19; /*tworzy zmienną i przypisuje jej wartość 19*/ int * wskwiek = &wiek; /*tworzy wskaźnik i przypisuje mu adres zmiennej wiek, ustawia wskaźnik*/

Wskaźniki Operator adresu (referencji) int wiek = 19; int * wskwiek = &wiek; Adres Pamięć Nazwa zmiennej 18826 19 wiek 20886 18826 wskwiek

Wskaźniki Operator adresu (referencji) int wiek; int * wskwiek; wiek = 19; wskwiek = &wiek;

Wskaźniki Operator wskaźnikowy (dereferencji) wiek = 25; *wskwiek = 25; /*przypisuje wartość 25 zmiennej wskazywanej przez wskwiek*/ Operatora wskaźnikowego można użyć w instrukcji przypisania

Wskaźniki Operator wskaźnikowy (dereferencji) Podobnie można wykorzystać operator wskaźnikowy, aby odczytać wartość zmiennej printf("wiek: %d.\n", wiek); printf("wiek: %d.\n", *wskwiek);

Wskaźniki Przykład

Wskaźniki Przykład

Wskaźniki Przykład

Wskaźniki i tablice Tablice jako stałe wskaźnikowe int tab[5] = {10, 20, 30, 40, 50}; Wartość wskaźnika tab jest stała. Adres Pamięć 32054 46204 tab 46204 10 tab[0] 46208 20 tab[1] 46212 30 tab[2] 46216 40 tab[3] 46220 50 tab[4]

Wskaźniki i tablice Przykład

Wskaźniki i tablice Przykład

Wskaźniki i tablice Przykład

Dynamiczna alokacja pamięci Funkcja malloc() float *tab; tab = malloc(10 * sizeof(*tab)); W powyższym wywołaniu funkcja malloc() alokuje pamięć na 10 liczb typu float, następnie wskaźnik tab jest ustawiany na pozyskaną pamięć. Funkcja malloc() pobiera jeden argument liczbę bajtów, która ma zaalokować. Liczbę bajtów dla danego typu zmiennej można odczytać operatorem sizeof.

Dynamiczna alokacja pamięci Funkcja free() Gdy pamięć pozyskana funkcją malloc() jest nie potrzebna należy ją zwolnić funkcją free(). free(tab); Funkcje malloc() i free() znajdują się w bibliotece stdlib.

Dynamiczna alokacja pamięci Przykład

Dynamiczna alokacja pamięci Przykład

Wskaźniki Podsumowanie (1) Operator & służy do pobrania adresu zmiennej. Operator * służy do definiowania wskaźników oraz do dereferencji zmiennych wskaźnikowych. Do elementów tablic można odwoływać się z wykorzystaniem indeksów lub operatorów wskaźnikowych.

Wskaźniki Podsumowanie (2) Funkcje malloc() i free() służą do dynamicznego alokowania i zwalniania pamięci. Funkcja malloc() pobiera liczbę bajtów. Do obliczenia liczby bajtów przydatne jest wykorzystanie operatora sizeof. Nie zapomnij o zwalnianiu pamięci.

Sortowanie bąbelkowe Jeżeli ciąg nie jest uporządkowany, to istnieją dwa sąsiednie elementy, które są w złej kolejności

Sortowanie bąbelkowe 3 5 1 2 8 4 7 6 3 1 5 2 8 4 7 6 3 1 2 5 8 4 7 6 3 1 2 5 4 8 7 6 3 1 2 5 4 7 8 6 3 1 2 5 4 7 6 8

Sortowanie bąbelkowe 3 1 2 5 4 7 6 8 1 3 2 5 4 7 6 8 1 2 3 5 4 7 6 8 1 2 3 4 5 7 6 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Sortowanie przez wybór Wyszukujemy pozycję najmniejszego elementu i przestawiamy go na właściwą pozycję Następnie kontynuujemy dla pozostałej części tablicy

Sortowanie przez wybór 3 5 1 2 8 4 7 6 1 5 3 2 8 4 7 6 1 2 3 5 8 4 7 6 1 2 3 5 8 4 7 6 1 2 3 4 8 5 7 6 1 2 3 4 5 8 7 6

Sortowanie przez wybór 1 2 3 4 5 8 7 6 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Podsumowanie Tablice Wskaźniki Adresy pamięci Operator adresu (referencji) Operator wskaźnikowy (dereferencji) Dynamiczna alokacja pamięci Algorytmy sortowania Sortowanie bąbelkowe Sortowanie przez wybieranie