Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
1
Podstawy informatyki 2013/2014
Łukasz Sztangret Katedra Informatyki Stosowanej i Modelowania Prezentacja przygotowana w oparciu o materiały Danuty Szeligi i Pawła Jerzego Matuszyka
2
Prowadzący dr Danuta Szeliga mgr inż. Łukasz Sztangret Budynek B4 pokój 207A home.agh.edu.pl/~szt Konsultacje: poniedziałek – piątek – 14.00
3
Zasady zaliczenia Wykład: Egzamin: Ocena końcowa:
Wykłady są nieobowiązkowe. Wykłady będą udostępniane na stronie na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0 Egzamin: Do egzaminu może przystąpić wyłącznie osoba, która otrzymała zaliczenie z przedmiotu. Student ma prawo do trzykrotnego przystąpienia do egzaminu w zaplanowanych terminach, w tym jeden raz w terminie podstawowym i dwa razy w terminie poprawkowym. Nieusprawiedliwiona nieobecność na egzaminie w danym terminie powoduje utratę tego terminu (brak zaliczenia nie jest usprawiedliwieniem nieobecności). Usprawiedliwienie nieobecności na egzaminie jest możliwe tylko w terminie do dwóch tygodni od daty egzaminu, ale przed kolejnym terminem. Termin zerowy – do ustalenia. Ocena końcowa: Ocena końcowa jest średnią ważoną oceny z zaliczenia z wagą 0.4 i oceny z egzaminu z wagą 0.6, przy czym oceny niedostateczne z zaliczenia i egzaminu są uwzględniane z wagami odpowiednio 0.1 i 0.15.
4
1. Jerzy Grębosz Symfonia C++ standard
Literatura 1. Jerzy Grębosz Symfonia C++ standard Rozdziały: Startujemy Instrukcje sterujące Typy Operatory Funkcje Preprocesor Tablice Wskaźniki Przeładowanie nazwy funkcji Biblioteczna klasa std::string do operacji z tekstami Struktury, unie, pola bitowe Operacje wejścia/wyjścia (fragmenty)
5
2. Jerzy Grębosz Pasja C++
Literatura 2. Jerzy Grębosz Pasja C++ Rozdziały: Szablony funkcji – wiadomości wstępne Szablon funkcji – oglądany z zewnątrz Zaglądamy do ciała szablonu - specjalizacja Krótki, ale za to nudny rozdział kończący Obsługa sytuacji wyjątkowych Odwikłanie stosu Gdy nikt nie złapie wyjątku O wyjątkach uwagi ogólniejsza 3. Bruce Eckel Thinking in C++ 4. Bjarne Stroustrup Język C++ 5. Dawid Harel Rzecz o istocie informatyki
6
INFORMATYKA Informatyka (ang. computer science, computing science, information technology, informatics) - ogół dyscyplin naukowych i technicznych zajmujących się informacją, a w szczególności jej komputerowym przetwarzaniem. Obejmuje: teorie informatyczne budowanie systemów informacyjnych, w tym programowanie budowanie i działanie sprzętu informatycznego zastosowanie metod informatycznych w różnych dziedzinach działalności ludzkiej Termin informatyka został zaproponowany przez Romualda Marczyńskiego (1968, Zakopane, ogólnopolska konferencja poświęconej maszynom matematycznym) na wzór fr. informatique i niem. informatik.
7
ALGORYTM Algorytm (intuicyjnie) jest to sposób postępowania, przepis, proces, metoda, technika, procedura. Algorytm (precyzyjnie) jest to skończony zbiór reguł wskazujący kolejność operacji dla rozwiązania problemu danego typu. Algorytmika – dział wiedzy zajmujący się badaniem algorytmów
8
Istotne cechy algorytmu
Definicja zadania = co algorytm ma zrobić Opis ciągu czynności, które po kolei mają być wykonane Czynności te muszą być na tyle proste (i możliwe do wykonania), aby wykonawca algorytmu mógł je bez dodatkowego tłumaczenia, wykonać (operacje elementarne, odpowiednio dobrany poziom szczegółowości) Skończona liczba operacji elementarnych (skończony czas działania) Algorytm dostaje pewne informacje (dane wejściowe) i zwraca pewne (oczekiwane) wyniki — dane wyjściowe Może istnieć kilka algorytmów, które dają w wyniku te same wyniki
9
Sposoby zapisu algorytmu
słowami za pomocą schematu blokowego w pseudokodzie – połączenie opisu słownego z implementacją w jednym z języków programowania
10
Schemat blokowy Schemat blokowy (block diagram, flowchart) to diagram, na którym algorytm jest reprezentowany przez opisane figury geometryczne, połączone liniami zgodnie z kolejnością wykonywania czynności wynikających z przyjętego algorytmu rozwiązania zadania. Pozwala dostrzec istotne etapy algorytmu i logiczne zależności między nimi.
11
operand (prostokąt) — wszystkie operacje z wyjątkiem instrukcji wyboru
Schemat blokowy strzałka wskazuje kierunek przebiegu sterowania programem, łączy inne bloki operand (prostokąt) — wszystkie operacje z wyjątkiem instrukcji wyboru predykat (romb) — instrukcja wyboru etykieta (owal) — początek lub koniec sekwencji schematu wejście/wyjście (równoległobok) y=x+1 TAK x>5 NIE START Wprowadź x oraz y
12
Algorytm Euklidesa Algorytm Euklidesa — chronologicznie pierwszy nietrywialny algorytm Problem: mając dane dwie liczby naturalne a i b znaleźć ich największy wspólny dzielnik Pierwotnie problem ten sprowadzał się do czysto geometrycznego problemu znalezienia wspólnej miary dla dwóch odcinków Zadanie algorytmiczne: Dane: a; b N, Wynik: NWD(a,b).
13
Algorytm Euklidesa Opis słowny: Schemat blokowy: Dane są dwie liczby a i b. Jeśli a jest równe b, to NWD jest równy a, w przeciwnym wypadku, jeśli a jest większe od b, weź a = a - b, a jeżeli a jest mniejsze od b weź b = b – a. Zacznij od początku.
14
Paradygmat programowania
Paradygmat programowania jest to: zbiór koncepcji reprezentujących podejście do implementacji algorytmów, zbiór mechanizmów, jakich programista używa, pisząc program i o to, jak ów program jest następnie wykonywany przez komputer.
15
Programowanie proceduralne
Programowanie proceduralne to paradygmat programowania zalecający dzielenie kodu na procedury (funkcje), czyli fragmenty wykonujące ściśle określone operacje. Kładziony jest nacisk na: modularność: wejścia procedur są opisywane syntaktycznie jako argumenty, a wyjścia jako wartości zwracane ograniczanie kontekstu: procedury nie powinny korzystać ze zmiennych globalnych (w miarę możliwości), lecz wykorzystywać zmienne lokalne
16
Jak powstaje program komputerowy?
Gdybym miał problem, od którego zależało by moje życie i tylko jedną godzinę na jego rozwiązanie, spędziłbym 40 minut na jego analizie, 15 minut na ponownym badaniu i 5 minut na rozwiązaniu go. Albert Einstein Pisanie programu to nie tylko pisanie kodu źródłowego w komputerze! Cykl wytwarzania oprogramowania: sformułowanie problemu – analiza (25%), skonstruowanie algorytmu (25%), „pisanie programu” (20%), uruchamianie i testowanie programu (30%).
17
Styl programowania Programy mają być czytane przez ludzi. Stosuj komentarze wstępne i wyjaśniające. Komentarz – to nie parafraza instrukcji. Stosuj odstępy do poprawienia czytelności. Używaj dobrych nazw mnemonicznych (funkcje, typy, zmienne). Pisz jedną instrukcję w wierszu. Stosuj wcięcia do uwidocznienia struktury programu.
18
Wcięcia w strukturze programu
int main() { int i; for(i=0; i<10; i=i+1) cout<<i<<endl; } int main() { int i; for(i=0; i<10; i=i+1) cout<<i<<endl; } int main(){int i;for(i=0;i<10;i=i+1){cout<<i<<endl;}cout<<i<<endl;}
19
Komentarze // tylko jedna linia komentarza /* komentarz, który ma wiele linijek*/ Komentarze typu /*…*/ nie mogą się zagnieżdżać, czyli: /* jakiś tam komentarz /* i jeszcze jeden*/ */ - BŁĄD
20
Linker – program łączący skompilowane części programu z bibliotekami.
Kompilacja programu plik źródłowy *.cpp z napisanym w języku C++ kodem plik tekstowy plik wynikowy *.exe skompilowany zrozumiały dla komputera kompilacja + linkowanie Kompilator – program tłumaczący instrukcje języka C++ na język maszyny. Linker – program łączący skompilowane części programu z bibliotekami.
21
Wypisywanie tekstu na ekranie
#include<iostream> using namespace std; int main() { cout<<"AGH"<<endl; } "AGH" – stała tekstowa endl – manipulator oznaczający przejście do nowej linii << - operator przesunięcia bitowego cout – obiekt klasy ostream
22
Zmienne Zmienne służą do przechowywania wartości, znaków, słów, … Deklaracja – informuje kompilator że dana nazwa reprezentuje obiekt jakiegoś typu, np.: extern int a; Definicja – dodatkowo rezerwuje miejsce w pamięci, np.: int a; Inicjalizacja – definicja + przypisanie wartości, np.: int a = 5;
23
Nazwy zmiennych Nazwa zmiennej może być dowolnie długim ciągiem liter, cyfr oraz znaków podkreślenia, przy czym: nie może zaczynać się od cyfry, rozróżniane są duże i małe litery, nie może być słowem kluczowym.
24
Słowa kluczowe asm auto bool break case catch char class const
const_cast continue default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while and and_eq bitand bitor compl not not_eq or or_eq xor xor_eq
25
cin #include<iostream> using namespace std; int main() { int a; cout<<"Podaj liczbe"<<endl; cin>>a; cout<<"Podales liczbe "<<a<<endl; } cin – obiekt klasy istream, służy do wprowadzania informacji z klawiatury
26
Stałe będące liczbami całkowitymi 1 10 5 … 01 010 05 … 09 – BŁĄD
Zapis dziesiętny: … Zapis ósemkowy: … 09 – BŁĄD Zapis szesnastkowy: 0x1 0x10 0x5 0xf …
27
Stałe Stałe będące liczbami zmiennoprzecinkowymi: … 2e4 3.2e e2 …
28
Stałe Stałe znakowe: ‘a’ ‘x’ … Znaki specjalne \b cofacz \f nowa strona \n nowa linia \r powrót karetki \t tabulator poziomy \v tabulator pionowy \a sygnał dźwiękowy
29
Stałe Stałe tekstowe: ”Hello” ”Hi” … ‘a’ to nie to samo co ”a”
30
Instrukcje sterujące Instrukcje sterujące są to polecenia służące do sterowania przebiegiem programu. W instrukcjach sterujących podejmowane są decyzje o wykonaniu tych czy innych instrukcji programu. Decyzje te podejmowane są w zależności od spełnienia lub niespełnienia jakiegoś warunku (czyli od prawdziwości lub fałszywości jakiegoś wyrażenia).
31
PRAWDA i FAŁSZ C++ istnieje specjalny wbudowany typ danych określający zmienne logiczne (przyjmujące wartości prawda lub fałsz): bool Zdefiniowane są dwie stałe: true i false Wartość PRAWDA lub FAŁSZ ma każde, dowolnie skomplikowane wyrażenie. wartość zero = FAŁSZ każda inna = PRAWDA
32
Instrukcja warunkowa if (1)
if(wyr) instr; if(wyr) instr1; else instr2; wyr instr Tak Nie wyr instr1 Tak Nie instr2 Wyrażenie to coś, co ma jakąś wartość: obiekt lub wyrażenie. Zamiast jednej instrukcji może wystąpić blok instrukcji.
33
Instrukcja if…else Wyrażenie #include<iostream>
using namespace std; int main() { int a; cout << "Podaj liczbe" << endl; cin >> a; if (a>0) cout << "Podales liczbe dodatnia" << endl; else cout << „Podales liczbe niedodatnia" << endl; } Wyrażenie
34
Blok instrukcji Często się zdarza, że chcemy wykonać warunkowo nie jedną, lecz kilka instrukcji. Stosujemy wówczas instrukcję składaną zwaną blokiem: { instr1; instr2; ... } Po klamrze nie trzeba stawiać średnika! Zróżnicowane wcięcia nie mają znaczenia dla kompilatora, ale ogromnie zwiększają czytelność kodu.
35
Wybór wielowariantowy
Instrukcje warunkowe if...else możemy ze sobą łączyć – uzyskamy wtedy możliwość wyboru wielowariantowego. if (wyr1) instr1; else if (wyr2) instr2; else if (wyr3) instr3;
36
Wybór wielowariantowy
#include<iostream> using namespace std; int main() { int a; cin>>a; if(a>0) cout<<"a jest dodatnie"<<endl; else if(a==5) cout<<"a jest równe 5"<<endl; else if(a<-2) cout<<"a jest mniejsze od -2"<<endl; }
37
Pętla while instr; Najpierw obliczana jest wartość wyrażenia wyr.
Jeśli wynik jest zerowy, wy-chodzimy z pętli. Jeśli wartość wyrażenia jest niezerowa, wykonujemy instrukcję instr. Instrukcję wykonujemy do-póki (while) wyrażenie ma wartość niezerową. Uwaga: pętla może w ogóle nie wykonać się ani razu! while(wyr) instr; wyr instr Tak Nie Wartość wyrażenia obliczana przed wykonaniem instrukcji!
38
Ciało pętli w nawiasach
Pętla while #include<iostream> using namespace std; int main() { int i=0; while (i<10) cout << i << endl; i=i+2; } Wyrażenie Ciało pętli w nawiasach
39
Pętla do...while instr; Najpierw wykonywana jest instrukcja instr.
Następnie obliczana jest wartość wyrażenia wyr. Jeżeli jest ono niezerowe, to zostanie powtórzone wy-konanie tej instrukcji. Jeśli wynik jest zerowy, wy-chodzimy z pętli. Uwaga: pętla wykona się co najmniej jeden raz! do instr; while(wyr); wyr instr Tak Nie Wartość wyrażenia obliczana po wykonaniu instrukcji!
40
Pętla do…while #include<iostream> using namespace std;
int main() { int i=0; do cout << i << endl; i=i+1; } while (i<10); Początek pętli Wyrażenie Średnik!!!
41
Pętla for Na początku, jednorazowo, zawsze, wykonywana jest i_ini. Następnie obliczana jest wartość wyrażenia wyr. Jeśli wynik jest zerowy, wychodzimy z pętli. Jeśli wartość wyrażenia jest nie-zerowa, wykonujemy instr, a potem i_krok. Instrukcję wykonujemy dopóki wyrażenie wyr ma wartość niezerową. Uwaga: pętla może w ogóle nie wykonać się ani razu, choć wykona się wtedy 1 raz i_ini. for(i_ini;wyr;i_krok) instr; wyr i_ini Tak Nie tresc_petli i_krok Wartość obliczana przed wykonaniem treści pętli!
42
Pętla for i_ini nie musi być jedną instrukcją – może być ich kilka, wtedy oddzielone są przecinkami. Podobnie w wypadku i_krok. W i_ini może pojawić się definicja obiektu. i_ini, wyr lub i_krok można opuścić Zapis: for ( ; ; ) { ... } oznacza pętlę nieskończoną.
43
#include<iostream> using namespace std; int main() {
Pętla for #include<iostream> using namespace std; int main() { for (int i=0; i<10; i=i+1) cout << i << endl; } I II IV III
44
Pętla for #include<iostream> using namespace std; int main() {
for (int i=0; i<3; i=i+1) for (int j=0; j<2; j=j+1) cout << "i=" << i << "\t" << "j=" << j << endl; }
45
Te same nazwy zmiennych
int main() { int a; … } int main() { int a; } BŁĄD - redefinicja
46
Te same nazwy liczników pętli
int main() { for(int i=0; i<3; i=i+1) cout<<i<<endl; } 1 2
47
Te same liczniki pętli i<5
int main() { for(int i=0; i<3; i=i+1) for(i=0; i<3; i=i+1) cout<<i<<endl; } i<4 1 2 1 2 1 2 …
48
Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie:
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.