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

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

Struktury, unie, formatowanie, wskaźniki

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

Funkcje Typy wyliczeniowe Struktury, unie Scanf / printf Wskaźniki

> C++ typy wyliczeniowe, struktury, unie, konwersje napis <-> liczba, formatowanie wyjścia

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

Lab 9 Podstawy Programowania

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

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.

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

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

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

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

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

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

Pliki. Informacje ogólne. Obsługa plików w języku C

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Zajęcia 6 wskaźniki i tablice dynamiczne

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

Zadania z podstaw programowania obiektowego

Język C zajęcia nr 11. Funkcje

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

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

Informatyka I: Instrukcja 4.2

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Wskaźniki. Programowanie Proceduralne 1

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

Wskaźniki w C. Anna Gogolińska

Zajęcia 6 wskaźniki i tablice dynamiczne

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

Język ludzki kod maszynowy

Podstawy programowania 2. Przygotował: mgr inż. Tomasz Michno

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

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

Wskaźniki. Informatyka

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

Programowanie 3 - Funkcje, pliki i klasy

Algorytmy i język C++

Zmienne, stałe i operatory

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

STL: Lekcja 1&2. Filozofia STL

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Programowanie obiektowe. Materiały przygotował: mgr inż. Wojciech Frohmberg

Podstawy programowania w języku C++

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

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

Stałe, tablice dynamiczne i wielowymiarowe

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania w języku C++

Struktury Struktura polami struct struct struct struct

Techniki Programowania wskaźniki

Podstawy programowania komputerów

Deklaracja struktury w C++

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

TEMAT : KLASY DZIEDZICZENIE

Pytania sprawdzające wiedzę z programowania C++

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy. C++ - klasy INNE SPOSOBY INICJALIZACJI SKŁADOWYCH OBIEKTU

C++ wprowadzanie zmiennych

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

C-struktury wykład. Dorota Pylak

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

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

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

Podstawy algorytmiki i programowania - wykład 4 C-struktury

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

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

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

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

Podstawy Programowania C++

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

Aplikacje w środowisku Java

dr inż. Paweł Myszkowski Wykład nr 8 ( )

Programowanie Komputerów

Programowanie komputerowe. Zajęcia 4

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Wstęp do programowania obiektowego, wykład 7

W powyższym kodzie utworzono wyliczenie dni tygodnia.

MATERIAŁY DO ZAJĘĆ II

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

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

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf("\n podaj wartosc liczby a\n"); scanf("%d",&a); pa=&a;

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

Część 4 życie programu

1 Podstawy c++ w pigułce.

Szablony klas, zastosowanie szablonów w programach

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

Zadanie 2: Arytmetyka symboli

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

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

Laboratorium nr 4: Arytmetyka liczb zespolonych

Podstawy programowania

C-struktury wykład. Dorota Pylak

Programowanie obiektowe - zadania

Transkrypt:

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

Typy wyliczeniowe Służą do łatwiejszej kontroli nad stałymi Ustawianie parametrów o ściśle określonym zbiorze wartości i w zasadzie tylko do tego Obostrzenia jak do zmiennych: deklaracja przed użyciem

Konwersje liczba <-> napis

Ćwiczenia 1. Sprawdź ile dni/godzin/sekund zostało do końca roku (podpowiedź: time_t). 2. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej zniżce podatków. Twoim zadaniem jest wyłuskać wszystkie liczby i wyświetlić ich sumę.

Typy strukturalne Takie kontenery, typy złożone z kilku pól różnych typów Żeby z niego skorzystać, trzeba zadeklarować nową zmienną o typie przez nas zdefiniowanym

Unie Takie kontenery, typy złożone z kilku pól różnych typów, ale tylko jedno pole może być na raz ustawione Służą do zmniejszenia zajętości pamięci

Ćwiczenia 1. Napisz program do obsługi książki adresowej. Każdy kontakt to oddzielna struktura (imię, nazwisko, gg). Program ma umożliwiać zapisanie do 100 kontaktów, odczyt całej książki adresowej, szukanie konkretnej osoby po nazwisku, zapis i odczyt całej struktury do pliku tekstowego. Wykorzystaj funkcje! 2. Napisz program wykonujący działania na dwóch liczbach zespolonych podawanych z klawiatury (każda liczba to struktura): dodawanie, odejmowanie, mnożenie.

Printf Jest to funkcja służąca do pięknego wyświetlania na ekran

Scanf Taki printf, tylko odwrotnie: czyta wartości do zmiennych Referencja! Scanf() nie nadaje się do stringów!

Ćwiczenia 1. Wyświetl ładnie tabliczkę mnożenia (10x10) na ekran. Ładnie, to znaczy tak, aby poszczególne elementy były wyrównane do prawej i zajmowały tyle samo miejsca (użyj prinf, potem spróbuj z cout). 2. Dokonaj normalizacji danych w pliku. Załóżmy, że plik input.txt wygląda tak: 1. Dla każdego przypadku testowego wyświetl średnią z trzeciej kolumny 2. Znormalizuj wszystkie dane w trzeciej kolumnie do przedziału [0 1] 3. Zapisz taki przetworzony plik do nowego pliku tekstowego.

Nie taki diabeł straszny

Organizacja pamięci operacyjnej 0x0128 0x0129 0x012A 0x012B 0x012C 0x0005 0x 00 06 0x0007 Wskaźnik na: 012A:0006

Wskaźniki w C++ Wskaźniki to po prostu adresy pamięci w której coś jest zapisane Wskaźnik musi mieć podany typ, na jaki wskazuje

Wskaźniki w C++ Ad1: deklaracja zmiennej typu całkowitoliczbowego Ad2: deklaracja wskaźnika na int Ad4: przypisanie do wskaźnika adresu zmiennej Ad5: wyłuskanie wartości na którą wskazuje wskaźnik

Wskaźniki w C++

Rodzaje wskaźników Typ wskaźnikowy Nazwa Dostęp do pamięci Zmiana adresu 1 typ* zwykły wskaźnik odczyt i zapis TAK 2 const typ* wskaźnik na stałą tylko odczyt TAK 3 typ* const stały wskaźnik odczyt i zapis NIE 4 const typ* const stały wskaźnik na stałą tylko odczyt NIE

Rodzaje wskaźników Typ wskaźnikowy Nazwa Dostęp do pamięci Zmiana adresu 1 typ* zwykły wskaźnik odczyt i zapis TAK 2 const typ* wskaźnik na stałą tylko odczyt TAK 3 typ* const stały wskaźnik odczyt i zapis NIE 4 const typ* const stały wskaźnik na stałą tylko odczyt NIE

Referencja Teraz już wiesz czemu ten dziwny znaczek

Ćwiczenia 1. Zadeklaruj wskaźnik na typ całkowity. Spróbuj go przypisać tak, aby wskazywał na typ double. 2. Zadeklaruj poprawny wskaźnik, sprawdź czy wyłuskuje wskazywaną wartość. Sprawdź jakie operatory działają na wskaźnikach (dodaj wskaźniki, odejmij, dodaj/odejmij stałą wartość liczbową, pomnóż, itp.) 3. Czy jest możliwe zadeklarowanie takiego uniwersalnego wskaźnika na cokolwiek?

Zadanie domowe 1. Poczytaj o listach jednokierunkowych, dwukierunkowych, cyklicznych, itp. 2. Jak deklarujemy i jak je używamy w C++? 3. Zaimplementuj użycie listy jednokierunkowej liczb całkowitych: 1. Dodawania do listy 2. Usuwania elementu (o danej wartości) 3. Wyszukiwania, czy dany element znajduje się w liście. 4. Zliczania liczby elementów

Wskaźnik uniwersalny Deklaracja wskaźnika uniwersalnego jest następująca: void *nazwa; W deklaracji takiego wskaźnika nie podajemy typu na jaki będzie on wskazywał. Pozwala nam to przypisać obiekt każdego typu. Niemożliwe jest wówczas wykorzystanie operatorów wyłuskania * oraz -> bez odwoływania się do rzutowania, bo kompilator nie wie nic o typie wartości przechowywanej pod adresem wskazywanym przez wskaźnik uniwersalny. Programista jest odpowiedzialny za kontrolę typów!

Wskaźniki a struktury Przy strukturach operator wyłuskania -> działa podobnie jak operator wyłuskania *, natomiast jest po prostu wygodniejszy i szybszy. Po co więc nawiasy w linii 7? Nie lepiej *wsk.dzien = 5? Operator -> pozwala również wywołać metodę w strukturze: int x = wsk->getdzien(); //równoważne (*wsk).getdzien();

Wskaźniki a funkcje Wskaźnik na funkcję różni się od zwykłego wskaźnika budową i faktem, że adres wskaźnika oznacza miejsce w pamięci w którym rozpoczyna się kod funkcji. Wskaźnik taki deklaruje się następująco: <typ> (*nazwa)( <parametry_funkcji> ); Nie ma uniwersalnego wskaźnika na funkcję!

Wskaźniki a tablice Nazwa tablicy to wskaźnik, na blok elementów z których składa się tablica. W C++ podobnie jak w C można stosować arytmetykę wskaźników (do wskaźnika dodawać i odejmować liczby całkowite). Kompilator sam pomnoży dodawaną liczbę przez rozmiar typu wskaźnika aby dodać do adresu odpowiednią ilość bajtów.

Nazwa tablicy a wskaźnik na jej początek

Wskaźnik to nie tablica!

Dynamiczny przydział pamięci Sterta wydzielony obszar wolnej pamięci kontrolowany ręcznie przez programistę, przeznaczony do przechowywania danych dynamicznych.

Dynamicznie tworzone tablice

Dynamiczne tablice dwuwymiarowe Zapis typ_zmiennej *tablica=new typ_zmiennej[x][y]; Nie stworzy tablicy dwuwymiarowej. Trzeba inczej:

Ćwiczenia 1. Używając dynamicznego przydziału pamięci, stwórz dwuwymiarową tablicę, której rozmiar wierszy będzie zależy od ilości liczb wprowadzonych przez użytkownika. Następnie wyświetl tablicę wylicz sumę liczb w pierwszej kolumnie tablicy. Przykład:

Ćwiczenia Korzystając z następującej struktury (symbolizującej element stosu): Zaimplementuj podstawowe operacje stosowe: Położenie elementu na wierzchołku stosu void push (elem* &stos, int x) Położenie ostatnio odłożonego elementu i zwrócenie go jako wartości funkcji int pop(elem* &stos) Zwrócenie elementu znajdującego się na wierzchołku stosu bez jego usuwania int topel(elem *stos) Sprawdzenie czy stos jest pusty bool isempty(elem *stos)