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

Podobne dokumenty
Typy wyliczeniowe 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

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.

Lab 9 Podstawy Programowania

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

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

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

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

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

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

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

Informatyka I: Instrukcja 4.2

Język C zajęcia nr 11. Funkcje

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

Zadania z podstaw programowania obiektowego

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Wskaźniki w C. Anna Gogolińska

Zajęcia 6 wskaźniki i tablice dynamiczne

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

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

Język ludzki kod maszynowy

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

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

Podstawy programowania w języku 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

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

Programowanie 3 - Funkcje, pliki i klasy

Podstawy programowania w języku C++

Deklaracja struktury w C++

Zmienne, stałe i operatory

Przedrostkowa i przyrostkowa inkrementacja i dekrementacja

C++ wprowadzanie zmiennych

Zajęcia 6 wskaźniki i tablice dynamiczne

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

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

Algorytmy i język C++

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

Stałe, tablice dynamiczne i wielowymiarowe

Struktury Struktura polami struct struct struct struct

Podstawy programowania komputerów

STL: Lekcja 1&2. Filozofia STL

Wskaźniki. Programowanie Proceduralne 1

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

TEMAT : KLASY DZIEDZICZENIE

Pytania sprawdzające wiedzę z programowania C++

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

Wskaźniki. Informatyka

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

2 Przygotował: mgr inż. Maciej Lasota

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

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

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

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

1 Podstawy c++ w pigułce.

Część 4 życie programu

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

Programowanie Komputerów

C-struktury wykład. Dorota Pylak

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

Aplikacje w środowisku Java

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Podstawy i języki programowania

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

Wstęp do programowania obiektowego, wykład 7

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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

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

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

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

I znowu można jak w C, za pomocą starych struktur i metod:

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

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

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

Podstawy Programowania

Szablony klas, zastosowanie szablonów w programach

1 Podstawy c++ w pigułce.

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

Laboratorium nr 4: Arytmetyka liczb zespolonych

C-struktury wykład. Dorota Pylak

Wprowadzenie do programowania w języku C

MATERIAŁY DO ZAJĘĆ II

Argumenty wywołania programu, operacje na plikach

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

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

Informacja o języku. Osadzanie skryptów. Instrukcje, komentarze, zmienne, typy, stałe. Operatory. Struktury kontrolne. Tablice.

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

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Odczyt danych z klawiatury Operatory w Javie

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

Transkrypt:

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

Konwersje liczba <-> napis

Ćwiczenia 1. 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ę. 2. Uzupełnij swój kalkulator o obsługę błędów. Zadbaj o to, aby program nie zawieszał się po podaniu litery zamiast liczby.

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?

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)