Zmienne i Typy.

Slides:



Advertisements
Podobne prezentacje
Tablice 1. Deklaracja tablicy
Advertisements

Katarzyna Szafrańska kl. II ti
C++ wykład 2 ( ) Klasy i obiekty.
Język C/C++ Funkcje.
Programowanie obiektowe
Programowanie obiektowe
Programowanie w języku C++. Jak napisać prosty program obliczeniowy lub grę komputerową? Zbigniew Nagórny Pracownia Komputerowa Wyższa Szkoła Humanistyczno-Przyrodnicza.
Język ANSI C Funkcje Wykład: Programowanie komputerów
Prowadzący: mgr inż. Elżbieta Majka
Static, const, volatile.
Języki programowania C++
Metody numeryczne Wykład no 1.
formatowanie kodu źródłowego
Wykład 2: Liczby rzeczywiste (stało i zmiennoprzecinkowe) Koprocesor
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 3: Podstawowe elementy języka.
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
Wskaźniki. Definiowanie wskaźników Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Real; Przykłady: Wskaźnik.
Struktury.
Tablice.
1 Dygresja: cztery płyty główne…. 2 Dygresja: osobliwości C /* cos o nieistniejacym typie Boolean */ /* oraz o operatorze przecinkowym */ #include int.
Wykład 1: Wskaźniki Podstawy programowania Programowanie w C
Języki programowania C++
Podstawy programowania PP – WYK2 Wojciech Pieprzyca.
Podstawy programowania PP – LAB6 Wojciech Pieprzyca.
Podstawy programowania PP – LAB5 Wojciech Pieprzyca.
Wykład 2 struktura programu elementy języka typy zmienne
#include #include main () { cout
PASCAL Dr Anna Kwiatkowska.
dr Anna Kwiatkowska Instytut Informatyki
Wprowadzenie do programowania w języku Turbo Pascal
Polsko – Japońska Wyższa Szkoła Technik Komputerowych
Pracę wykonali: Rafał Chmielorz Michał Sporek Jan Nowik
Podstawy C# Grupa .NET PO.
Klasy w C++. Deklaracja klasy class NazwaTwojejKlasy { //w tym miejscu piszemy definicje typów, //zmienne i funkcje jakie mają należeć do klasy. }; //tutaj.
Podstawy programowania
Podstawy informatyki (4)
Podstawy programowania w języku C i C++
Podstawy informatyki 2013/2014
Wskaźnik może wskazywać na obiekt dowolnego typu. int * w; char * Wsk_Znak; float * Wskaz_Float; Przykład: Wskaźnik przechowuje adres obiektu wskazanego.
Podstawy programowania
Jerzy F. Kotowski1 Informatyka I Wykład 14 DEKLARATORY.
Informatyka I Wykład 4 Stałe Stałe liczbowe Stałe znakowe Stałe tekstowe Jerzy Kotowski Politechnika Wroclawska var = 5L - 0xA; -5.
Java – coś na temat Klas Piotr Rosik
Jerzy Kotowski Politechnika Wrocławska
Programowanie strukturalne i obiektowe
Historia Języka C Idea C pochodzi od języka BCPL, opracowanego przez M. Richardsa 1970 – język B stworzony przez K. Thompsona Język C wprowadzono po raz.
PWSZ Gniezno // codefly 2009 Łukasz Tomczak
Podstawy programowania
Podstawy języka Instrukcje - wprowadzenie
Programowanie strukturalne i obiektowe C++
Programowanie strukturalne i obiektowe C++
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski 1 informatyka +
Programowanie strukturalne i obiektowe C++
Temat 4: Typy danych.
WYKŁAD 3 Temat: Arytmetyka binarna 1. Arytmetyka binarna 1.1. Nadmiar
Zmienne i typy danych w C#
Programowanie strukturalne – język C - wprowadzenie
Wybrane aspekty programowania w C++ (i nie tylko)
Typy liczbowe, zmienne, operatory Zajęcia 4. Zmienne Zmienna – to w programowaniu element programu, który może mieć przypisaną pewną wartość (wartość.
Podstawy informatyki Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Wstęp do programowania Wykład 2 Dane, instrukcje, program.
1 Opisy funkcji Adres strony WWW : html (należy odszukać hyperlink Function Index) (
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka Podstawy.
Podstawy informatyki Struktury Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi.
Zmienne typy danych w VBA. MS Excel – typy danych w języku programowania VBA.
PODSTAWY INFORMATYKI Wykład 4.
Wprowadzenie do programowania obiektowego
Język C++ Typy Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Język C++ Tablice Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego.
Zapis prezentacji:

Zmienne i Typy

Deklaracje zmiennych Każda nazwa w C++ zanim zostanie użyta, musi zostać zadeklarowana. Deklaracja informuje kompilator, że dana nazwa reprezentuje obiekt określonego typu, ale nie rezerwuje dla niego miejsca w pamięci. Definicja zaś - dodatkowo rezerwuje miejsce. Definicja jest miejscem, gdzie powołuje się obiekt do życia. Oczywiście, definicja jest zawsze również deklaracją. Deklarować obiekt w programie można wielokrotnie, natomiast definiować można tylko raz.

Przykład: int licznik; // definicja + deklaracja extern int licznik; // deklaracja ( tylko!)

Systematyka typów w C++ Typy języka C++ można podzielić dwojako: Pierwszy podział: typy fundamentalne; typy pochodne, które powstają na bazie typów fundamentalnych. Drugi podział : typy wbudowane, czyli takie, w które język C++ jest wyposażony; typy zdefiniowane przez użytkownika.

Typy fundamentalne: short int int long int char Typy reprezentujące liczby całkowite: short int int long int Typ reprezentujący obiekty zadeklarowane jako znaki alfanumeryczne: char

Wymienione typy mogą być w dwóch wariantach - ze znakiem i bez znaku Wymienione typy mogą być w dwóch wariantach - ze znakiem i bez znaku. Do wybrania wariantu posługujemy się odpowiednio modyfikatorami: signed unsigned Przykłady: signed int x; unsigned int x; Przez domniemanie przyjmuje się, że zapis int a; oznacza typ signed int a, czyli typ ze znakiem.

float double long double Typy reprezentujące liczby zmiennoprzecinkowe: float double long double Typy te umożliwiają pracę na liczbach rzeczywistych z różną dokładnością.

Pamięć zajmowana przez zmienne różnych typów: typ aplikacje 32-bitowe char 1 bajt short 2 bajty int 4 bajty long int 4 bajty float 4 bajty double 8 bajtów long double 10 bajtów bool 1 bajt

Zakres wartości różnych typów danych: typ aplikacje 32-bitowe unsigned char 0 do 255 short -32768 do 32767 int -2147483648 do 2147483647 long int -2147483648 do 2147483647 float 1.210-38 do 3.4  1038 double 2.210-308 do 1.8  10308 long double 3.410-4932 do 1.1  104932 bool true lub false

Wewnętrzne reprezentacje danych: 16-bitowe całkowite 15 31 int long int 32-bitowe całkowite 15 short int 31 int long int

Wewnętrzne reprezentacje danych: Typy zmienoprzecinkowe 31 float 22 double 63 51 long double 79 64 - znak wykładnika - wykładnik - znak liczby - mantysa

Wewnętrzne reprezentacje danych: Typy zmienoprzecinkowe 31 float 22 1e35 + 2 2  0. 34(0) 2e35; 34*3b = 102 b 1e35 + 1e15 1e15  0. 19(0)1e35; 19*3b = 57 b double 63 51 long double 79 64 - znak wykładnika - wykładnik - znak liczby - mantysa

#include <iostream.h> #include <conio.h> int main() { float x; clrscr(); x = 0; x = x + 0.1; x = x - 0.1; cout << "x = " << x << endl; getch(); return 0; } 0.1 – long double (80 bitów) x – float (32 bity) Koprocesor wykonuje obliczenia na 80 bitach 0.110 = 0001100110011...2

Definiowanie obiektów “w biegu” #include <iostream.h> int main () { float x; //… cout << Podaj współczynnik kierunku ; float a; cin >> a; cout << Podaj współczynnik przesunięcia ; float b; cin >> b; //… dalsze obliczenia }

Stałe dosłowne x = 12.34; k = k + 14; znak =  * ; W programach często posługujemy się stałymi. Mogą to być liczby, znaki albo ciągi znaków. Przykłady: x = 12.34; k = k + 14; znak =  * ; ciag_znakow =  język C++ ;

Stałe będące liczbami całkowitymi 17 39 - 54 Liczby całkowite ósemkowe: 010 - 8 w systemie dziesiętnym 014 - 12 w systemie dziesiętnym (8 + 4 = 12) 091 - błąd, bo w systemie ósemkowym liczba 9 jest nielegalna. Liczby całkowite szesnastkowe: 0x10 - 16 w systemie dziesiętnym (1*16 + 0 = 16) 0xa1 - 161 w systemie dziesiętnym (10*16 + 1 = 161) 0xff - 255 w systemie dziesiętnym (15*16 + 15 = 255)

Znaki a, b, c, d, e, f w liczbach oznaczają odpowiednio 10, 11, 12, 13, 14, 15 w systemie dziesiętnym. W zapisie można posługiwać się zarówno małymi literami, jak i wielkimi. Stałe całkowite traktuje się jako typ int, chyba że reprezentują tak wielkie liczby, które nie zmieściłyby się w int. Wówczas stała taka jest typu long. Można zmienić typ nawet niewielkiej liczby z typu int na typ long. Robi się to przez dopisanie na końcu liczby litery L lub l: 0L 123L Jeśli chcemy by liczba miała typ unsigned, należy dopisać na końcu literę u. Przykłady: 213u 34uL

k = 13 m+n+j = 420 wypisujemy: 34 18 22 main () { int i; int k, n, m, j; clrscr (); i = 5; k = i + 010; cout << "k= " << k << endl; m = 100; n = 0x100; j = 0100; cout << "m+n+j= " << (m+n+j) << endl; cout << "wypisujemy: " << 0x22 << " " << 022 << " " << 22 << endl; return 0; } k = 13 m+n+j = 420 wypisujemy: 34 18 22

Stałe zmiennoprzecinkowe Przykłady: 12.3 3.1416 -123.45 -17. 5e2 oznacza 5 * 102, czyli 500 32.5e4 oznacza 32.5 * 104, czyli 325000 7.3e-3 oznacza 7.3 * 10-3, czyli 0.0073 Stałe znakowe a oznacza literę a 8 oznacza cyfrę 8 (nie liczbę 8) char znak; znak = ‘A’;

Znaki sterujące: Znaki specjalne: ‘\b’ - cofacz (ang. Backspace) ‘\f’ - nowa strona (ang. Form feed) ‘\n’ - nowa linia (ang. New line) ‘\r’ - powrót karetki (ang. carriage Return) ‘\t’ - tabulator poziomy (ang. Tabulator) ‘\v’ - tabulator pionowy (ang. Vertical tabulator) ‘\a’ - sygnał dźwiękowy (Alarm) Znaki specjalne: ‘\\’ - ukośnik lewostronny ‘\’’ - apostrof ‘\’ - cudzysłów ‘\0’ - NULL, znak o kodzie 0 ‘\?’ - znak zapytania

Stałe tekstowe Stała tekstowa to ciąg znaków ujęty w cudzysłów Przykłady: Programowanie komputerów język C++ Łańcuchy są przechowywane w pamięci jako ciąg znaków, a na samym końcu tego ciągu dodawany jest znak o kodzie 0, czyli znak NULL. Jeżeli cudzysłów ma stanowić jeden ze znaków ciągu, należy go poprzedzić ukośnikiem.

Polecam książkę J.Grębosza Symfonia C++ Przykładowo: cout << Polecam książkę J.Grębosza  <<  \ Symfonia C++\ ; Polecam książkę J.Grębosza Symfonia C++

Typy pochodne Typy pochodne są budowane na bazie typów fundamentalnych. Przykładem typu pochodnego może być tablica lub wskaźnik. Możemy mieć kilka luźnych obiektów typu int, ale możemy je powiązać w tablicę obiektów typu int. Tablica obiektów typu int jest typem pochodnym od typu int. Typy pochodne oznacza się stosując nazwę typu podstawowego i operator deklaracji typu pochodnego.

Operatory tworzące obiekty typów pochodnych: Przykład: int a; // obiekt typu int int b[10]; // tablica obiektów typu int (10-elementowa) Operatory tworzące obiekty typów pochodnych: [ ] - tablica obiektów danego typu; * - wskaźnik do pokazywania na obiekty danego typu; ( ) - funkcja zwracająca wartość danego typu; & - referencja (przezwisko) obiektu danego typu.

Przykład: Typy fundamentalne: int b; // definicja obiektu typu int short int c; // definicja obiektu typu short float x; // definicja obiektu typu float Typy pochodne: int t[20]; // tablica 20 elementów typu int float *p; // wskaźnik obiektu typu float char funk(); // funkcja zwracająca wartość typu char

Typ void void *p; - oznacza, że p jest wskaźnikiem do wskazywania obiektu nieznanego typu. void fun(); - deklaracja ta mówi, że funkcja fun nie będzie zwracać żadnej wartości.

Zakres ważności obiektu Zakres ważności nazwy obiektu, to ta część programu, w której nazwa znana jest kompilatorowi. Czas życia obiektu jest to okres od momentu, gdy zostaje on zdefiniowany do momentu, gdy przestaje istnieć, a jego miejsce w pamięci zostaje zwolnione. Różnica między zakresem ważności nazwy a czasem życia obiektu jest taka, że w jakimś momencie obiekt może istnieć, ale nie być dostępny, ponieważ chwilowo znajdujemy się poza zakresem jego ważności. W zależności od tego, jak zdefiniowany jest obiekt, zakres jego ważności może być różnego rodzaju.

Zakres ważności ograniczony do bloku funkcji ma etykieta. Zakres lokalny #include <iostream.h> int main () { int x; … } Zakres - blok funkcji Zakres ważności ograniczony do bloku funkcji ma etykieta.

Zakres - obszar pliku Nazwa zadeklarowana na zewnątrz jakiegokolwiek bloku, jest nazwą globalną. Ma ona zakres ważności pliku. Przykład: float x; // nazwa x jest globalna int main () { // treść funkcji } Jednakże taka nazwa nie jest od razu automatycznie znana w innych plikach. Jej zakres ważności ogranicza się tylko do tego pliku, w którym ją zdefiniowano.

Zasłanianie nazw Jestem w pliku głównym, k = 33 Przykład: Po lokalnej definicji k = 10 Poza blokiem k = 33 Przykład: #include <iostream.h> #include <conio.h> int k =33; //zmienna globalna - PROG14.CPP int main () { clrscr (); cout << "Jestem w pliku głównym, k = " << k << endl; { //---------------------------------------------- int k = 10; //zmienna lokalna cout << "Po lokalnej definicji k = " << k << endl; } //---------------------------------------------- cout << "Poza blokiem k = " << k << endl; return 0; }

Istnieje możliwość odniesienia się do zasłoniętej zmiennej globalnej za pomocą operatora zakresu :: (dwa dwukropki). Jestem w pliku głównym, k = 33 Po lokalnej definicji k = 10 , ale obiekt globalny k = 33 Poza blokiem k = 33 #include <iostream.h> #include <conio.h> int k =33; //zmienna globalna - PROG15.CPP int main () { clrscr (); cout << "Jestem w pliku głównym, k = " << k << endl; { //---------------------------------------------- int k = 10; //zmienna lokalna cout << "Po lokalnej definicji k = " << k << ", " << endl << "ale obiekt globalny k = " << ::k; } //---------------------------------------------- cout << "\nPoza blokiem k = " << k << endl; return 0; }

Modyfikator const float pi = 3.14; const float pi = 3.14; Inicjowaniem nazywamy nadanie obiektowi wartości w momencie jego definicji. Przypisaniem nazywamy podstawienie do obiektu wartości w jakimkolwiek późniejszym momencie. Obiekty const można inicjować, ale nie można do nich nic przypisać.

Instrukcja typedef typedef int cena; Instrukcja typedef pozwala na nadanie dodatkowej nazwy już istniejącemu typowi. typedef int cena; cena x; // co odpowiada: int x; cena a, b, c; // co odpowiada: int a, b, c; Instrukcja typedef nie wprowadza nowego typu, a jedynie synonim do typu już istniejącego.

enum { pn, wt, sr, czw, pt, sob, nd } Typ wyliczeniowy enum Wyliczenie deklaruje się słowem kluczowym enum, po którym następuje wykaz stałych całkowitych oddzielonych przecinkiem i zamkniętych w nawiasy klamrowe. Wymienionym stałym są przypisywane wartości domyślne: pierwszej z nich ‑ wartość 0, a każdej następnej - wartość o 1 większą od poprzedzającej. enum { pn, wt, sr, czw, pt, sob, nd } const pn = 0; const wt = 1; … const nd = 6;

enum { poczatek, koniec = 0, dalej=1, cofnij = 1 }; Stałym typu wyliczeniowego można również przypisywać wartości jawnie, przy czym wartości te mogą się powtarzać. enum { poczatek, koniec = 0, dalej=1, cofnij = 1 }; W wyliczeniach można po enum umieścić identyfikator, który staje się od tego momentu nazwą nowego typu, np.: enum dni_tygodnia {pn, wt, sr, czw, pt, sob, nd};

enum dni_tygodnia {pn, wt, sr, czw, pt, sob, nd}; Typ wyliczeniowy jest podobny do typów char oraz int . Nie można jednakże na jego wartościach wykonywać żadnych operacji arytmetycznych. Gdy wartość typu wyliczeniowego pojawia się w wyrażeniach arytmetycznych, to jest niejawnie (ostrzeżenie) przekształcana do typu int przed wykonaniem operacji.