Struktury, unie, formatowanie, wskaźniki

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

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

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

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

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

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

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

2 Przygotował: mgr inż. Maciej Lasota

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.

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

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

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

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

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

Język C zajęcia nr 11. Funkcje

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

C++ wprowadzanie zmiennych

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

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Lab 9 Podstawy Programowania

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

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

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

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

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

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

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

Informatyka I: Instrukcja 4.2

INFORMATYKA Studia Niestacjonarne Elektrotechnika

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

Zmienne, stałe i operatory

Podstawy programowania w języku C i C++

Deklaracja struktury w C++

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

Język ludzki kod maszynowy

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

Wstęp do programowania

Informatyka, Ćwiczenie Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Programowanie Komputerów

Wstęp do programowania

Język C i C++. Podstawy. Zagadnienia do opanowania. Przykład 1. (modyfikuj kod, aby zrealizować punkty 5., 7.)

Pytania sprawdzające wiedzę z programowania C++

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

Część 4 życie programu

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

Struktury Struktura polami struct struct struct struct

1 Podstawy c++ w pigułce.

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

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

1 Podstawy c++ w pigułce.

Aplikacje w środowisku Java

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

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

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Podstawy programowania w języku C++

Algorytmy i język C++

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

MATERIAŁY DO ZAJĘĆ II

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

Wskaźniki w C. Anna Gogolińska

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

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

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

Wstęp do Programowania, laboratorium 02

Podstawy programowania 2. Temat: Wprowadzenie do wskaźników. Przygotował: mgr inż. Tomasz Michno

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Zajęcia 6 wskaźniki i tablice dynamiczne

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

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

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

Wskaźniki. Programowanie Proceduralne 1

Programowanie komputerowe. Zajęcia 4

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

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

Metodyki i Techniki Programowania MECHANIZM POWSTAWANIA PROGRAMU W JĘZYKU C PODSTAWOWE POJĘCIA

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

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

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

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

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

Laboratorium 1: Podstawy języka c. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Programowanie 3 - Funkcje, pliki i klasy

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

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

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Wskaźniki. Informatyka

Wstęp do programowania. Wykład 1

Transkrypt:

Struktury, unie, formatowanie, wskaźniki

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ę. Podpowiedź - przy podziale na wyrazy można skorzystać z konstrukcji: while( getline(strumień_źródłowy, bufor_na_wyraz, znak_rozdzielający) ) Przykładowo: while( getline(ss, wyraz, ' ') ) gdzie ss wypełniony strumień stringstream wyraz zmienna typu string

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

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

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

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. 2. Napisz program wykonujący działania na dwóch liczbach zespolonych podawanych z klawiatury (każda liczba to struktura): dodawanie, odejmowanie, mnożenie.

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

%[flags][width][.precision][length]specifier Flags: - wyrównanie do lewej (domyślnie do prawej) +poprzedzaj zawsze liczy znakiem + jeśli są dodatnie spacja jeśli liczba jest bez znaku to poprzedzana jest spacją. # wiele znaczeń m.in. poprzedza zapis w systemie szesnastkowym jako 0x. 0 zamiast spacjami puste miejsca wypełniane są zerami. width minimalna liczba znaków do wyświetlenia. Jeśli wartość jest mniejsza niż width to zostanie poprzedzona spacjami. * minimalna szerokość jest podana jako poprzedzająca parametr funkcji printf a nie w jej formacie. precision Minimalna liczba cyfr jakie zostaną wypisane (np. liczba miejsc po przecinku)..* jak w przypadku width (wartość int podawana jako poprzedzająca argument) Length h argument jest traktowany jako [unsigned] short int l argument jest traktowany jako [unsigned] long int L argument jest traktowany jako long double.

Specifier Output Example c Character a d or i Signed decimal integer 392 e Scientific notation (mantissa/exponent) using e character 3.9265e+2 E Scientific notation (mantissa/exponent) using E character 3.9265E+2 f Decimal floating point 392.65 g Use the shorter of %e or %f 392.65 G Use the shorter of %E or %f 392.65 o Unsigned octal 610 s String of characters sample u Unsigned decimal integer 7235 x Unsigned hexadecimal integer 7fa X Unsigned hexadecimal integer (capital letters) 7FA p Pointer address B800:0000 n Nothing printed. The argument must be a pointer to a signed int, where the number of characters written so far is stored. % A % followed by another % character will write % to stdout. %

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

Przypuśćmy, że chcemy przeczytać datę w formacie: 25 Dec 1988 Wówczas za pomocą scanf napiszemy: int dzien, rok; char miesiac[20]; scanf("%d %s %d", &dzien, miesiac, &rok); W miesiac nie ma referencji bo jest to zmienna tablicowa od razu przekazywana przez referencje!

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 printf, potem spróbuj z cout). Podpowiedź: http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/

Zmienna wskaźnikowa może lokalizować w pamięci RAM: Inne zmienne Nienazwane bloki pamięci Bloki zawierające kod programu np. funkcje Możliwe jest też stworzenie wskaźnika na wskaźnik. Deklaracja wskaźnika wygląda następująco: <typ> *nazwa_zmiennej; Ale uwaga na takie deklaracje: int* x,y; //zmienna x jest wskaźnikiem na typ int //zmienna y jest zwykłą zmienną typu int! int *a,b,*c; //zmienne a i c są wskaźnikami na int

Typ wskaźnikowy Nazwa 1 typ* zwykły wskaźnik 2 const typ* wskaźnik na stałą Dostęp do pamięci odczyt i zapis tylko odczyt Zmiana adresu TAK 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

Typ wskaźnikowy Nazwa 1 typ* zwykły wskaźnik 2 const typ* wskaźnik na stałą Dostęp do pamięci odczyt i zapis tylko odczyt Zmiana adresu TAK 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

Typ wskaźnikowy Nazwa 1 typ* zwykły wskaźnik 2 const typ* wskaźnik na stałą Dostęp do pamięci odczyt i zapis tylko odczyt Zmiana adresu TAK 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

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!

Chociażby do tworzenia uniwersalnych funkcji.

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ę!

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();

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: