Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka...

36
Programowanie w C++ Wyklad 1 Katarzyna Grzelak 26 luty 2018 K.Grzelak (Wyklad 1) Programowanie w C++ 1 / 28

Transcript of Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka...

Page 1: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Programowanie w C++Wykład 1

Katarzyna Grzelak

26 luty 2018

K.Grzelak (Wykład 1) Programowanie w C++ 1 / 28

Page 2: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Dlaczego programowanie ?

K.Grzelak (Wykład 1) Programowanie w C++ 2 / 28

Page 3: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Umiejetnosc, która otwiera nowemozliwosci.Znajomosc programowania niezbedna nawielu specjalizacjach.

K.Grzelak (Wykład 1) Programowanie w C++ 3 / 28

Page 4: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Jezyki programowania

Programy budowane z polecen w trybie tekstowymC, C++, Python, Java, Fortran . . .

Jeden z najprostszych programów w C++

K.Grzelak (Wykład 1) Programowanie w C++ 4 / 28

Page 5: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Jezyki programowania

Programy budowane z ikonek w trybie graficznymLabView, VEE, Scratch . . .

Przykład w LabView - z zajec Indywidualnej Pracowni Wstepnej A;przykład w Scratch - Wikipedia

K.Grzelak (Wykład 1) Programowanie w C++ 5 / 28

Page 6: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Dlaczego programowanie w C++?

K.Grzelak (Wykład 1) Programowanie w C++ 6 / 28

Page 7: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Wysoka wydajnosc koduBezposrednia łacznosc z urzadzeniami (hardwareinterface)Nowoczesny, obiektowy, kompilowany jezykDuzo bibliotek do naukowych zastosowan

K.Grzelak (Wykład 1) Programowanie w C++ 7 / 28

Page 8: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

C vs C++

C – jezyk C, nieobiektowyC++ – C plus obiektowosc

C++xx (np. C++11) – kolejne wersje standardu C++

K.Grzelak (Wykład 1) Programowanie w C++ 8 / 28

Page 9: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Od kodu zródłowego do kodu maszynowego

File

Object

Program

in

Memory

Executable

Source

FileCompiler

OS

Linker

Libraries

K.Grzelak (Wykład 1) Programowanie w C++ 9 / 28

Page 10: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Od kodu zródłowego do kodu maszynowego w C++

Processed

Code

File

Source Processed

Code

File

Object

File

Object

File

Source

Program

in

Memory

Executable

Preprocessor Compiler

CompilerPreprocessor

OS

Linker

Libraries

Kod zródłowy programu moze byc zapisany w dwóch lub wiecej plikach.

K.Grzelak (Wykład 1) Programowanie w C++ 10 / 28

Page 11: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Zaczynamy – pierwszy program

K.Grzelak (Wykład 1) Programowanie w C++ 11 / 28

Page 12: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Pierwszy program – kod zródłowyProgramy zapisujemy w edytorze tekstu, np. gedit, nanoi nadajemy nazwe np. prog.ccPonizszy program wypisuje na ekran: Witam

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

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

Page 13: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Preprocesowanie, kompilowanie, linkowanie w jednympoleceniu (i uruchamianie programu)

Polecenia wpisywane w okienku terminala w Linux’ie.

$ g++ -o prog prog.cc$ ./prog$ Witam$ – znak zachety w okienku terminala

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

Page 14: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 13 / 28

Page 15: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Biblioteki

#include<iostream>

Biblioteka standardowaCzesc standardowej instalacji.Dokumentacja:http://www.cplusplus.com/reference/

Biblioteka iostreamczesc standardowej biblioteki;operacje wejscia - wyjscia (input-output); wczytywanie zmiennychz klawiatury (cin) i wypisywanie na ekran (cout)

K.Grzelak (Wykład 1) Programowanie w C++ 13 / 28

Page 16: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Biblioteki

Jezeli chcemy korzystac z funkcji zdefiniowanych w bibliotekach tomusimy dołaczyc plik (nagłówkowy) z niezbednymi deklaracjami,np. #include<iostream>

Pliki nagłówkowewłaczane sa do programu przez preprocesorpolecenia dla preprocesora zaczynaja sie od #

Sama biblioteka jest dołaczana na etapie linkowania ( w przypadkubibliotek standardowych jest to robione automatycznie).

K.Grzelak (Wykład 1) Programowanie w C++ 14 / 28

Page 17: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 15 / 28

Page 18: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Przestrzenie nazw

using namespace std;

Przestrzenie nazw stworzone zeby uniknac konfliktu nazw –funkcje w róznych bibliotekach moga sie tak samo nazywac.Przestrzen nazw dla bibliotek standardowych – std

Funkcja standardowa: std::pow(26.0,3.0)Funkcja programisty AB (przestrzen nazw AB):AB::pow(26.0,3.0)

K.Grzelak (Wykład 1) Programowanie w C++ 15 / 28

Page 19: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Przestrzenie nazw

Domyslne ustawianie przestrzeni nazwusing namespace std;lubusing namespace AB;ogólnie:using namespace nazwa;

Jesli zadeklarowane, ze uzywamy konkretnej przestrzeni nazw jakpowyzej – pozemy uzyc funkcji z przykładu piszacpow(26.0,3.0)

K.Grzelak (Wykład 1) Programowanie w C++ 16 / 28

Page 20: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 17 / 28

Page 21: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Główny program (funkcja main)

int main() {

return 0;}

main – nazwa głównej funkcjireturn 0 – wynik funkcji ( w przypadku main zero oznaczaprawidłowo zakonczony program )int – typ danych (integer), przed nazwa funkcji oznacza typ jejwynikuTresc programu zapisuje sie pomiedzy { i } w funkcji main j.w.

SrednikiPolecenia konczy sie srednikami !

K.Grzelak (Wykład 1) Programowanie w C++ 17 / 28

Page 22: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 18 / 28

Page 23: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Standardowy strumien wyjsciowy

cout « ”Witam” « endl;

coutcout - standardowy strumien wyjsciowywypisywanie na ekran tekstu – tekst w cudzysłowachendl – znak konca linii (end-of-line)

Plik nagłówkowyTrzeba pamietac o dodaniu pliku nagłówkowego iostream.

K.Grzelak (Wykład 1) Programowanie w C++ 18 / 28

Page 24: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

#include<iostream>

using namespace std;

int main(){

cout << "Witam" << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 19 / 28

Page 25: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Od kodu zródłowego do maszynowego

Całosc w jednym poleceniug++ -o prog prog.cc

Tylko preprocesorg++ -E prog.cc

Tylko kompilacjag++ -c prog.cc

Do sprawdzenia na cwiczeniach co powstaje nakazdym etapie.

K.Grzelak (Wykład 1) Programowanie w C++ 19 / 28

Page 26: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Uruchamianie programu

Tekst wypisze sie na ekranie:./proglub tekst zostanie zapisany do plikuplik.txt:./prog > plik.txt

K.Grzelak (Wykład 1) Programowanie w C++ 20 / 28

Page 27: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Nazewnictwo - konwencje

Najczestsze, standardowe rozszerzenia nazw plików:plik zródłowy w C++ – .cc, .cxx, .cpp . . .plik zródłowy w C – .cplik nagłówkowy – .h, lub bez rozszerzenianazwa wykonywalnej wersji programu – standardowo a.out,zwykle nazwa bez rozszerzeniaplik po kompilacji (object file) – .oplik biblioteczny - .so, .a

K.Grzelak (Wykład 1) Programowanie w C++ 21 / 28

Page 28: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Drugi program – kod zródłowyDeklaracja i definicja; komentarz; dzielenie liczb całkowitych

#include<iostream>using namespace std;

int main(){int suma;int liczba=5;

suma=15+liczba;

cout << "suma= " << suma << endl;// Jaka liczba wypisze sie na ekranie ?cout << liczba/suma << endl;return 0;

}

K.Grzelak (Wykład 1) Programowanie w C++ 21 / 28

Page 29: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Trzeci program – kod zródłowycin - standardowy strumien wejsciowy

#include<iostream>using namespace std;

int main(){

cout << "Podaj liczbe calkowita" << endl;int a;cin >> a;

cout << "Wczytana liczba to= " << a << endl;

return 0;}

K.Grzelak (Wykład 1) Programowanie w C++ 22 / 28

Page 30: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Sprawy organizacyjne

Na kazdym wykładzie wprowadzenie do cwiczen + dodatkowymateriałPolecany podrecznik - Jerzy Grebosz, Symfonia C++ standard

K.Grzelak (Wykład 1) Programowanie w C++ 22 / 28

Page 31: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Warunki zaliczenia

Mozliwe zaliczenie eksternistyczne - zgłoszenia dowykładowcy do 12.03 włacznie.

K.Grzelak (Wykład 1) Programowanie w C++ 23 / 28

Page 32: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Warunki zaliczenia

1 Sprawdzian 7.05, poniedziałek, sala 0.03, 9:15 pisany nakartkach, max 24 pkt:

dwa programy po 6 pkt,pytania testowe z materiału wykładowego (12 pkt);

2 5-minutowe kartkówki przy komputerach na poczatku kazdychcwiczen (12 kartkówek po 1 pkt);

3 Koncowy, duzy program do napisania w domu + rozmowazaliczeniowa na temat programu i materiału wykładowego, 27.06,sala 1.27;

4 obecnosc na zajeciach.

K.Grzelak (Wykład 1) Programowanie w C++ 24 / 28

Page 33: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Warunki zaliczenia

Na sprawdzianach mozna korzystac jedynie ze sciag ze składniajezyka C++, dostarczonych przez prowadzacych.Na kartkówkach nie mozna korzystac z zadnej pomocy.

K.Grzelak (Wykład 1) Programowanie w C++ 25 / 28

Page 34: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Warunki zaliczenia

Warunkiem uzyskania zaliczenia jest uzyskanie wiecej niz połowypunktów ze sprawdzianu i kartkówek (sumarycznie) i wiecej nizpołowy punktów za koncowy program.Sumaryczne wyniki z czesci cwiczeniowej (kartkówki+sprawdzian)i wyniki z koncowego programu wchodza z ta sama (50%) wagado koncowej oceny.

K.Grzelak (Wykład 1) Programowanie w C++ 26 / 28

Page 35: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Strona www

Wszystkie informacje na stroniehttp://www.fuw.edu.pl/∼kaste/program2018.html

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

Page 36: Wykład 1 Katarzyna Grzelak 26 luty 2018 - fuw.edu.plkaste/prog2018/wyklad1.pdf · Sama biblioteka jest dołaczana˛ na etapie linkowania ( w przypadku bibliotek standardowych jest

Znajomosc składni jezyka jest niezbedna,ale najwazniejsze jest zeby nabracdoswiadczenia piszac samemu duzoprogramów !

K.Grzelak (Wykład 1) Programowanie w C++ 28 / 28