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



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

Wstęp do programowania

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

Język C++ Różnice między C a C++

Podstawy Programowania

Paostwowa Wyższa Szkoła Zawodowa w Płocku Dariusz Wardowski

Wstęp do programowania

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

Część 4 życie programu

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

Wykład 1. Program przedmiotu. Programowanie Obiektowe (język C++) Literatura. Program przedmiotu c.d.:

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

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

I - Microsoft Visual Studio C++

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

Wstęp do informatyki- wykład 7

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

C++ wprowadzanie zmiennych

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

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

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

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

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy algorytmiki i programowania - wykład 5 C-struktury cd.

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

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

Bibliografia 1. B. Stroustrup. Jezyk C++. Wydawnictwo Naukowo-Techniczne, Warszawa,

Programowanie - wykład 4

Operacje wejścia/wyjścia odsłona pierwsza

Wstęp do informatyki- wykład 9 Funkcje

Podstawy Programowania Podstawowa składnia języka C++

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :

Wstęp do informatyki- wykład 11 Funkcje

Wstęp do programowania. Wykład 1

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

Przekazywanie argumentów wskaźniki

Wstęp do informatyki- wykład 10 Funkcje (przekazywanie parametrów przez wartość i zmienną)

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

Projektowanie klas c.d. Projektowanie klas przykład

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

Zmienne, stałe i operatory

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie obiektowe w C++ Wykład 1

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

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

Wstęp do Programowania, laboratorium 02

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Wykład 1. Program przedmiotu. Programowanie (język C++) Literatura. Program przedmiotu c.d.:

Wstęp do informatyki- wykład 8 Pętla while, do while,for -pętla w pętli- przykłady Operator rzutowania Manipulatory

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Pytania sprawdzające wiedzę z programowania C++

Wstęp do informatyki- wykład 3 Pierwszy program w C++ Wyprowadzanie danych Deklaracja zmiennych

Wstęp do programowania

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

Języki i paradygmaty programowania

Podstawy programowania. Wykład: 7. Funkcje Przekazywanie argumentów do funkcji. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do informatyki- wykład 6

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Wstęp do Programowania 2

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

Laboratorium 1. Programowanie II - Kierunek Informatyka. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej

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

1. Pierwszy program. Kompilator ignoruje komentarze; zadaniem komentarza jest bowiem wyjaśnienie programu człowiekowi.

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wprowadzenie w dziedziczenie. Klasa D dziedziczy klasę B: Klasa B klasa bazowa (base class), klasa D klasa pochodna (derived class).

ROZDZIAŁ 2. Operatory

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Przeciążenie (przeładowanie nazw) funkcji

Programowanie komputerowe. Zajęcia 1

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

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

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

Przesłanianie nazw, przestrzenie nazw

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

Wprowadzenie do języka Java

// Potrzebne do memset oraz memcpy, czyli kopiowania bloków

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

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

Struktury Struktura polami struct struct struct struct

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Wstęp do informatyki- wykład 9 Pętla while, do while,for -pętla w pętli- przykłady Funkcje

Język C++ zajęcia nr 2

Wykład 1

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 1. Wprowadzenie, środowisko programistyczne, pierwsze programy

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

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

Globalne / Lokalne. Wykład 15. Podstawy programowania (język C) Zmienne globalne / lokalne (1) Zmienne globalne / lokalne (2)

Programowanie Obiektowe i C++

Języki programowania - podstawy

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Transkrypt:

Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik

Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest osiągnięcie łącznie 41 punktów, w tym co najmniej 30% punktów z każdej grupy zadań sprawdzających założone dla tego przedmiotu efekty kształcenia oraz zdanie egzaminu. Lista efektów kształcenia w karcie przedmiotu dostępnej na stronie: http://157.158.16.139/js/wyklady/is2/is2.html Punkty: 1 Laboratorium Aktywność - 10 punktów Dwa sprawdziany praktyczne - po 10 punktów Projekt - 30 punktów 2 Egzamin - 40 punktów (15 punktów - min.) W tym semestrze projekt jest realizowany zespołowo! Nieprzekraczalny termin oddania projektu - 3 lipiec 2015.

Literatura Bjarne Stroustrup, Język C++. Kompendium wiedzy, Helion, Gliwie 2014 Bjarne Stroustrup, Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion, Gliwice 2010 S. Lippman, J. Lajoie, Podstawy języka C++, WNT, Warszawa 2001 P. J. Plauger, Biblioteka standardowa C++, WNT, Warszawa 1997 A. Langer, K. Kreft, C++ Biblioteka IOStreams i lokalizacje programów, Helion, Gliwice 2005

Literatura uzupełniająca Adam Majczak, C++ Przykłady praktyczne, Mikom, Warszawa 2003 S. Lippman, Istota języka C++, WNT, Warszawa 2004 J. Viega, M. Messier, C i C++ Bezpieczne programowanie. Receptury, Helion, Gliwice 2005 B. W. Kernighan, D. M. Ritchie, Język ANSI C, WNT, Warszawa 2000

Historia 1970 1972 - język C, Dennis Ritchie - Bell Laboratories 1983 - język C++, Bjarne Stroustrup - AT&T Bell Laboratories 1988 - ogłoszenie standardu ANSI C 1989 1998 - proces standaryzacji języka C++ 1998 - standard języka C++ w postaci ISO/IEC 14882, zwany jako ANSI C++. Zawiera zestaw abstrakcji znany pod nazwą biblioteki standardowej C++. 2003 - poprawki w standardzie (ISO/IEC 14882:2003) sierpień 2011 - poprawki w standardzie, tzw. C++11 (ISO/IEC 14882:2011) grudzień 2014 - poprawki w standardzie, tzw. C++14 (ISO/IEC 14882:2014(E))

Historia 1970 1972 - język C, Dennis Ritchie - Bell Laboratories 1983 - język C++, Bjarne Stroustrup - AT&T Bell Laboratories 1988 - ogłoszenie standardu ANSI C 1989 1998 - proces standaryzacji języka C++ 1998 - standard języka C++ w postaci ISO/IEC 14882, zwany jako ANSI C++. Zawiera zestaw abstrakcji znany pod nazwą biblioteki standardowej C++. 2003 - poprawki w standardzie (ISO/IEC 14882:2003) sierpień 2011 - poprawki w standardzie, tzw. C++11 (ISO/IEC 14882:2011) grudzień 2014 - poprawki w standardzie, tzw. C++14 (ISO/IEC 14882:2014(E)) STL (Standard Template Library) - początkowo rozwijana jako niezależna biblioteka przez firmę Hewlett Packard

Pierwsze kroki (1) #include <iostream> using namespace std; int main() cout << "Hello" << endl; return 0;

Elementy biblioteki standardowej z C Aby skorzystać w języku C++ z elementów biblioteki standardowej języka C musimy dołączyć plik nagłówkowy o nazwie poprzedzonej literą c. #include <cstring> #include <ctime> #include <cmath> #include <cstdlib>

Pierwsze kroki (2) #include <iostream> #include <cstdlib> int main() std::cout << "Hello\n" << std::endl; system("pause"); return 0;

Komentarze // Komentarz do końca linii /* Komentarz wieloliniowy Brak zagnieżdżeń...... koniec bloku komentarza */

Typy wbudowane danych char int float double - typ znakowy - typ całkowitoliczbowy, - typ zmiennoprzecinkowy, - typ zmiennoprzecinkowy podwójnej precyzji, bool - typ boolowski, przyjmuje wartości: true, false. Nie występuje w ANSI C. Słowa kluczowe: short, long, unsigned

Sposoby definiowania obiektów danych W dowolnym miejscu kodu: int liczba; int liczba = 2; int liczba1 = 0, liczba2 = -2; int liczba3( 5 ); int liczba4( liczba3 );

Liczby zespolone #include <complex>... complex <double> moja( 2.1, 3.0 ); moja.real(3); moja.imag(9); cout << "z=" << moja.real() << "+" << moja.imag() << "i" << endl; cout << "z=" << moja << endl; // z=(3,9)

Liczby zespolone complex <double> z( 2, -3.5 ), w( 1, 1 ), x; x = z + w; cout << x << endl; x = z * w; cout << x << endl; x += 5; cout << x << endl; if( z == x ) cout << "Rowne" << endl; if( z == complex<double>(0,0) ) cout << "Otrzymalismy zero" << endl;

Przykład #include <iostream> #include <cstdlib> using namespace std; int main() int a = 0, b = 0; cout << "Podaj liczby:" << endl; cin >> a >> b; cout << "Suma wynosi: " << a+b << endl; system("pause"); return 0;

Deklaracje wyliczeń enum a, b, c=0 ; enum d, e, f=e+2 ; a=0, b=1, c=0, d=0, e=1, f=3 Wyliczenie definiuje nowy typ o wartościach całkowitych: enum Kolor CZERWONY, ZIELONY, NIEBIESKI=10, CZARNY; // wartości: 0, 1, 10, 11 Kolor kol = CZERWONY; kol = 1; // jest niepoprawne int n = kol; // poprawne kol = Kolor(10); // ustawia na NIEBIESKI

Blok int main() int i = 5; int i = 1; cout << i << endl; //zwraca 1 cout << i << endl; //zwraca 5 system("pause"); return 0;

Zasięg zmiennych Nazwa: - lokalna - zadeklarowana wewnątrz funkcji ma zasięg od punktu deklaracji do końca bloku, - globalna - zadeklarowana poza funkcją lub klasą, ma zasięg od punktu deklaracji do końca pliku. int x = 5; //globalne x void f() int i = 1; //lokalne i cout << x << endl; //jest dostęp do x

Zasłanianie nazw zmiennych int x = 5; //globalne x void f() int x = 1; //lokalne x zasłania globalne cout << x << endl; //zwraca 1

Zasłanianie nazw zmiennych int x = 5; //globalne x void f() int x = 1; //lokalne x zasłania globalne cout << x << endl; //zwraca 1 int x = 5; //globalne x void f() int x = 1; //lokalne x ::x = 2; //ustawiamy globalne x Powinno się unikać zasłaniania nazw.

Zmienne statyczne Zmienne statyczne - mają stałą lokalizację w pamięci, którą otrzymują w chwili uruchomienia programu. Zmienne statyczne, które nie zostały jawnie zainicjowane w programie otrzymują po zadeklarowaniu wartość zero (dla typów wbudowanych). void f( void ) static int licznik = 0; licznik++; cout << "Funkcja byla wywolana "; cout << licznik << "razy.";...

Czas życia zmiennych Obiekty są tworzone w chwili napotkania definicji i niszczone, gdy ich nazwa opuszcza zasięg. Obiekty globalne i statyczne żyją do końca programu. void f( void ) int t[] = 1, 2, 3; //tablica tworzona przy każdym wywołaniu f()... //po zakończeniu funkcji usunięta z pamięci

Funkcje Deklaracja (function prototype): typ zwracany nazwa funkcji( argumenty formalne ); int oblicz( int, int );

Funkcje Deklaracja (function prototype): typ zwracany nazwa funkcji( argumenty formalne ); int oblicz( int, int ); Definicja - zawiera treść: int oblicz( int a, int b ) return a + b;

Funkcje Deklaracja (function prototype): typ zwracany nazwa funkcji( argumenty formalne ); int oblicz( int, int ); Definicja - zawiera treść: int oblicz( int a, int b ) return a + b; Wywołanie funkcji: int z, a = 1; z = oblicz( 3, a );

Funkcje - przeciążanie int oblicz( int, int ); int oblicz( int ); void oblicz( void );

Funkcje - przeciążanie int oblicz( int a, int b ) return a + b; int oblicz( int a ) return a+5; void oblicz( void ) cout << "inna wersja" << endl;

Funkcje - przeciążanie cout << oblicz( 2, 3 ) << endl; // zwraca 5 cout << oblicz( 2 ) << endl; // zwraca 7 oblicz(); //wypisuje napis: "inna wersja"

Funkcje - argumenty domyślne Deklaracja: int wylicz( int, int = 1 ); Definicja: int wylicz( int a, int b ) //nie powielamy wartości domyślnych return a + b; Wywołanie funkcji: cout << wylicz( 2, 3 ) << endl; cout << wylicz( 2 ) << endl;

Przykłady - błędy przy przeciążaniu int wylicz( int, int = 1 ); int wylicz( int );

Przykłady - błędy przy przeciążaniu int wylicz( int, int = 1 ); int wylicz( int ); int wylicz( int ); double wylicz( int );... cout << wylicz( 5 ) << endl;

Rekurencja int silnia( int n ) if( n < 1 ) return 1; return n * silnia( n - 1 );... cout << silnia( 12 ) << endl; //zwraca 479001600 12! jest to największa możliwa zwracana wartość nie przekraczająca zakresu int (czterobajtowego).

Funkcje inline Funkcja inline (funkcja rozwijana) - w miejscu jej wywołania kompilator wstawia kod tej funkcji inline int oblicz( int a, int b ) //definicja return a+b; int main() int a, b, c; c = oblicz( a, b ); return 0;

Funkcje inline Zalety: - szybkości działania - czytelność kodu Stosowanie: - krótkie funkcje (kilka linii kodu), - niewielka ilość miejsc wywołań funkcji Wady: - przyrost długości pliku wykonywalnego Uwaga. - Jeśli funkcja inline znajduje się w pliku nagłówkowym to musi być to definicja. - Kompilator może zignorować żądanie inline.

Referencje Referencja - inna nazwa obiektu. Referencja musi być zainicjowana. Musi istnieć coś, czego jest ona nazwą. int i = 1024; // obiekt typu int int *p = &i; // wskaźnik do obiektu typu int int &r = i; // referencja do obiektu typu int

Referencje Referencja - inna nazwa obiektu. Referencja musi być zainicjowana. Musi istnieć coś, czego jest ona nazwą. int i = 1024; // obiekt typu int int *p = &i; // wskaźnik do obiektu typu int int &r = i; // referencja do obiektu typu int r = 13; cout << r << endl; //zwróci 13 cout << i << endl; //zwróci 13

Referencje Referencja - inna nazwa obiektu. Referencja musi być zainicjowana. Musi istnieć coś, czego jest ona nazwą. int i = 1024; // obiekt typu int int *p = &i; // wskaźnik do obiektu typu int int &r = i; // referencja do obiektu typu int r = 13; cout << r << endl; //zwróci 13 cout << i << endl; //zwróci 13 Obiekt referencyjny nie może być ponownie przypisany: int u = 7; r = u; //kopiowanie wartości 7 do i cout << i << endl; //zwróci 7

void nie_zwieksz( int i ) ++i; //nic nie robi, bo zmieniona zostaje lokalna kopia void zwieksz_c( int *i ) ++(*i); void zwieksz_cpp( int& i ) ++i; int main() int a = 0, b = 0, c = 0; nie_zwieksz( a ); zwieksz_c( &b ); zwieksz_cpp( c ); cout << a << " " << b << " " << c; //zwróci 0 1 1 return 0;

Koniec