Zaawansowane programowanie w języku C++ Podstawy programowania w C++



Podobne dokumenty
Zaawansowane programowanie w języku C++ Przeciążanie operatorów

PROGRAMOWANIE w C prolog

Zaawansowane programowanie w języku C++ Klasy w C++

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

Zaawansowane programowanie w języku C++ Funkcje uogólnione - wzorce

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Zaawansowane programowanie w języku C++ Programowanie obiektowe

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

Zaawansowane programowanie w języku C++ Wyjątki

Programowanie obiektowe

Microsoft IT Academy kurs programowania

Zmienne, stałe i operatory

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

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

Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C

Programowanie strukturalne i obiektowe

Język ludzki kod maszynowy

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawy programowania w języku C

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Język C - podstawowe informacje

Zaawansowane programowanie w języku C++ Wstęp

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

Programowanie strukturalne język C - wprowadzenie

Wstęp do programowania 1

Wykład 1

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Programowanie Obiektowe i C++

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Programowanie niskopoziomowe

1 Podstawy c++ w pigułce.

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

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Programowanie Proceduralne

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

1 Podstawy c++ w pigułce.

Układy reprogramowalne i SoC Język VHDL (część 4)

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

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

Języki programowania - podstawy

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

Języki i metody programowania. Omówienie języków C, C++ i Java

ROZDZIAŁ 2. Operatory

Zaawansowane programowanie w języku C++ Biblioteka standardowa

2 Przygotował: mgr inż. Maciej Lasota

1. Brian W. Kernighan, Dennis M. Ritchie, Język ANSI C, WNT, Warszawa 1998.

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

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

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

Programowanie w elektronice: Podstawy C

Co nie powinno być umieszczane w plikach nagłówkowych:

Wskaznik. Przekazywanie wyniku funkcji przez return. Typy i zmienne wskaznikowe. Zmienna wskazywana. typ * nazwa_wkaznika

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Inżynieria Wytwarzania Systemów Wbudowanych

Wstęp do Programowania, laboratorium 02

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Podstawy programowania C. dr. Krystyna Łapin

PROGRAMOWANIE NISKOPOZIOMOWE. Struktury w C. Przykład struktury PN.06. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Pobieranie argumentów wiersza polecenia

Programowanie obiektowe w C++ Wykład 1

Tablice, funkcje - wprowadzenie

Programowanie w środowiskach graficznych. Wykład 3 Język C#

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

Wstęp do programowania

Funkcje. Spotkanie 5. Tworzenie i używanie funkcji. Przekazywanie argumentów do funkcji. Domyślne wartości argumentów

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

Wprowadzenie do języka Java

wykład I uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Wstęp do języka C wykład I dr Jarosław Mederski Spis Ogólne informacje

Systemy operacyjne na platformach mobilnych 2 Podstawy obsługi powłoki Bash

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

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

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

Szkolenia specjalistyczne

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

Pytania sprawdzające wiedzę z programowania C++

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

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Tablice, funkcje, wskaźniki - wprowadzenie

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Instrukcje sterujące. Programowanie Proceduralne 1

Funkcje przeciążone, konstruktory kopiujące, argumenty domyślne

Język C zajęcia nr 11. Funkcje

PROGRAMOWANIE NISKOPOZIOMOWE

Struktury, unie, formatowanie, wskaźniki

Programowanie Komputerów

Szablony funkcji i szablony klas

Programowanie Niskopoziomowe

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

Programowanie współbieżne i rozproszone

Architektura komputerów Wprowadzenie do algorytmów

Transkrypt:

Zaawansowane programowanie w języku C++ Podstawy programowania w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja Prezentacja dystrybuowana dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 www.kapitalludzki.p.lodz.pl w ramach Europejskiego Funduszu Społecznego

Proces tworzenia oprogramowania Pojęcie abstrakcji w projektowaniu Inżynieria oprogramowania Model kaskadowy: Definicja wymagań (specyfikacja) Projektowanie oprogramowania Implementacja i testowanie poszczególnych elementów systemu Łączenie elementów w całość i testowanie systemu (integracja) Pielęgnacja systemu (ewolucja) Analiza i projektowanie: Top-down Bottom-up 2

Inżynieria oprogramowania po co? Możliwość ponownego użycia (reusability) Rozszerzalność (extensibility) Elastyczność (flexibility) Łatwość utrzymania kodu Bezpieczeństwo i formalizm 3

Inżynieria oprogramowania 4

Programowanie krok po kroku Specyfikacja Tworzenie testów Edycja kodu źródłowego Kompilacja Błędy kompilacji Uruchomienie i testowanie Błędy w działaniu Przekazanie klientowi 5

Pierwszy program #include<cstdio> int main() { printf( "hello\n ); return 0; } 6

Sekwencja wykonania Wiersz poleceń lub np. eksplorator windowsa Funkcja main() Funkcja printf() 7

Pierwszy program dla purystów języka C++ #include<iostream> int main() { std::cout << "hello\n ; return 0; } 8

Sekwencja wykonania przypadek szczególny Rekurencja... 9

Sekwencja wykonania - rekurencja Wiersz poleceń lub np. eksplorator windowsa Funkcja main() Funkcja loop() Funkcja printf() 10

Podstawowe typy danych Plain old data (POD): Typy skalarne: Arytmetyczne Całkowite» Ze znakiem» Bez znaku Zmiennoprzecinkowe:» Ze znakiem» Bez znaku Wyliczeniowe Wskaźniki do typów Wskaźniki do pól składowych Klasy POD: struktury 11

Typy arytmetyczne Całkowite: Ze znakiem: signed char, short, int, long, long long Bez znaku: unsigned char, short, int, long, long long Zmiennoprzecinkowe: Ze znakiem: signed float, double, long double Bez znaku: unsigned float, double, long double 12

Liczby zmiennoprzecinkowe http://pl.wikipedia.org/wiki/liczba_zmiennoprzecinkowa 13

Typy wyliczeniowe enum miesiące { styczen, luty, marzec,, grudzien }; enum miesiące { styczeń = 1, luty, marzec,, grudzien }; 14

Wskaźniki Wskaźnik do typu pustego: void* Wskaźnik do obiektu: char*, int*, float*, wskaźniki do funkcji Wskaźnik do niestatycznego pola (typu T) obiektu (C): T C::* 15

Klasy POD Struktury: struct Complex { int real; int img; }; Unie: union Number { int integer; float flop; }; 16

Zasięg zmiennych Globalny Lokalny Składowe klas/struktur Czas życia zmiennych: zależny od zasięgu zmiennych kwantyfikatory: auto, extern, register, static 17

Operatory Operator przypisania (=) Operatory arytmetyczne (+, -, *, /, %) Operatory mieszane (+=, -=, /= ) Operatory pre i post-inkrementacji/dekrementacji (++, ) Operatory porównania (==,!=, <, >, <=, >=) Operatory logiczne (!, &&, ) - uwaga na optymalizację! Operator warunkowy (?) Operator ',' Operatory bitowe ( &,, ^, ~, <<, >> ) Operator zasięgu '::' Operatory rzutowania 18

Złożone typy danych POD Tablice: int tab[20]; Operator siezeof() Tablice, a wskaźniki 19

Bloki programu Instrukcje warunkowe: if () else () Pętle: while() do while() for() Skoki: Switch - case break continue 20

Instrukcja goto Etykieta: Instrukcja 1 Instrukcja 2 goto Etykieta Instrukcja 3 21

Instrukcja goto Edgar Dijkstra Go To Statement Considered Harmful : http://www.ifi.uzh.ch/req/courses/kvse/uebungen/dijkstra_goto.pdf 22

Instrukcja goto Linus Torvalds, kernel/sched.c, about 1.2.x: /* * 'schedule()' is the scheduler function. It's a very simple and nice * scheduler: it's not perfect, but certainly works for most things. * The one thing you might take a look at is the signal-handler code here * * NOTE!! Task 0 is the 'idle' task, which gets called when no other * tasks can run. It can not be killed, and it cannot sleep. The 'state' * information in task[0] is never used. * * The "confuse_gcc" goto is used only to get better assembly code.. * Dijkstra probably hates me. */ KernelTrap, Linux: Using goto In Kernel Code : http://kerneltrap.org/node/553/2131 23

Funkcje przeciążone Funkcje o tej samej nazwie ale różniące się listą argumentów: void check( int a, int b) void check( float a, int b) void check( int* a, int b) ryzykowne Kompilator dobiera odpowiednią funkcję na podstawie postaci jej wywołania 24

Kwantyfikator const Wydaje się oczywiste ale Const przy deklaracji zmiennych: const const int * const int maxvalue = 40; int *p; const p; int * const p; Const przy argumentach funkcji Const w OOP String w języku C++: "hello\n 25

Referencje Typ danych będący aliasem do innej zmiennej (można o nim myśleć jak o innej nazwie tej samej zmiennej) Referencja nie może być niezainicjowana Nie można przypisać referencji do innej zmiennej niż ta, którą została zainicjowana Referencja nie może wskazywać na wartość tymczasową 26

Stos i konwencja wołania funkcji int func( int a1, int a2 ) { a1 += a2; return a1; } 27

Stos i konwencja wołania funkcji.file "func.cpp".text.align 2.globl Z4funcii.def Z4funcii;.scl 2;.type 32;.endef Z4funcii: pushl %ebp movl %esp, %ebp movl 12(%ebp), %eax addl %eax, 8(%ebp) movl 8(%ebp), %eax popl %ebp ret 28

Stos i konwencja wołania funkcji int caller() { func( 2, 3 ); } 29

Stos i konwencja wołania funkcji.align 2.globl Z6callerv.def.endef Z6callerv;.scl 2;.type 32; Z6callerv: pushl %ebp movl %esp, %ebp subl $8, %esp movl $3, 4(%esp) movl $2, (%esp) call Z4funcii leave ret 30

Przekazywanie zmiennych Przez wartość: void set( T arg ) Przez wskaźnik: void set( T *arg ) Referencja! void set( T &arg ) 31

Rzutowanie Rzutowanie w starym stylu: (long *), (double *) (typ) Rzutowanie w nowym stylu: static_cast<typ>() const_cast<typ>() reinterpret_cast<typ>() dynamic_cast<typ>() 32

Narzędzia - gcc Flagi: -Wall -pedantic Preprocessing: gcc -E Kompilacja do kodu asemblerowego: gcc -S Kompilacja do pliku obiektowego: gcc -C 33

Narzędzia symbole i deasemblacja Deasemblacja: objdump Symbole: nm Manglowanie nazw: c++filt 34

Narzędzia debugowanie Debuger: gdb Nakładki: ddd, cgdb Cierpliwość :) 35

Zaawansowane programowanie w języku C++ Podstawy programowania w C++ Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka bez ograniczeń - zintegrowany rozwój Politechniki Łódzkiej zarządzanie Uczelnią, nowoczesna oferta edukacyjna i wzmacniania zdolności do zatrudniania osób niepełnosprawnych Prezentacja Prezentacja dystrybuowana dystrybuowana jest bezpłatnie Politechnika Łódzka, ul. Żeromskiego 116, 90-924 Łódź, tel. (042) 631 28 83 www.kapitalludzki.p.lodz.pl w ramach Europejskiego Funduszu Społecznego