ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - zima 2014 ) prof. nzw. dr hab. inż. Barbara Putz

Podobne dokumenty
ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - zima 2015 ) prof. nzw. dr hab. inż. Barbara Putz

ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - zima 2016 ) prof. nzw. dr hab. inż. Barbara Putz

ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP ) rok ak. 2012/2013. prof. nzw. dr hab. inż. Barbara Putz. Podstawowe pojęcia, najprostsze programy

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

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

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

1 Podstawy c++ w pigułce.

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

Podstawy Programowania C++

Część 4 życie programu

Język ludzki kod maszynowy

1 Podstawy c++ w pigułce.

I - Microsoft Visual Studio C++

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

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

ZASADY PROGRAMOWANIA KOMPUTERÓW

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

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

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

Programowanie - wykład 4

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

Programowanie komputerowe. Zajęcia 1

ZASADY PROGRAMOWANIA STRUKTURALNEGO (ZAP - zima 2015) Liczby, znaki, napisy, wyrażenia. Pętle typu while.

3. Instrukcje warunkowe

Podstawy Programowania

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

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

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

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

Wstęp do informatyki- wykład 7

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

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

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

4. Funkcje. Przykłady

Wstęp do programowania. Wykład 1

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

C++ wprowadzanie zmiennych

2 Przygotował: mgr inż. Maciej Lasota

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

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

Struktury Struktura polami struct struct struct struct

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

ZASADY PROGRAMOWANIA STRUKTURALNEGO (ZAP - zima 2016) Liczby, znaki, napisy, operatory logiczne, stałe. Pętle typu while.

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

( wykł. dr Marek Piasecki )

Struktura pliku projektu Console Application

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

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

Programowanie, algorytmy i struktury danych

Programowanie w C++ Wykład 1. Katarzyna Grzelak. 25 luty K.Grzelak (Wykład 1) Programowanie w C++ 1 / 38

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

Programowanie Obiektowe i C++

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Programowanie strukturalne i obiektowe

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

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

Wstęp do programowania

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 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

tablica: dane_liczbowe

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Język C++ zajęcia nr 2

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

Programowanie w języku Python. Grażyna Koba

Programowanie - instrukcje sterujące

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

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima Uwagi przed sprawdzianem nr 1.

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

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

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

Pytania sprawdzające wiedzę z programowania C++

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

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

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

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

PRZEWODNIK PO PRZEDMIOCIE

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

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Podstawy programowania C. dr. Krystyna Łapin

PRZEWODNIK PO PRZEDMIOCIE

Algorytm. a programowanie -

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Programowanie. programowania. Klasa 3 Lekcja 9 PASCAL & C++

Programowanie w języku C++ Grażyna Koba

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

IX. Wskaźniki.(3 godz.)

JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak

Programowanie komputerowe. Zajęcia 4

C-struktury wykład. Dorota Pylak

Podstawy programowania - 1

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

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

Transkrypt:

POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - zima 2014 ) prof. nzw. dr hab. inż. Barbara Putz pok. 306 Język programowania: C/C++ Środowisko programowania: Qt Creator Wykład 1 : Podstawowe pojęcia, proste programy, instrukcje warunkowe.

Informacje organizacyjne 2 ZASADY PROGRAMOWANIA STRUKTURALNEGO TYGODNIOWY WYMIAR ZAJĘĆ Rok ak. Semestr W L P ECTS 2014/2015 I 1 E 2-5 2014/2015 II - - 1 3 Program, regulamin i harmonogram zajęć, literatura, prezentacje do wykładu: na witrynie przedmiotu ZAP w systemie komunikacji ze studentami (SKS) - tam też będą zamieszczane oceny z zajęć laboratoryjnych i egzaminu: https://iair.mchtr.pw.edu.pl/studenci (wejście przez login i hasło, które każdy student otrzyma w mailu). Tymczasowo niniejsza prezentacja jest pod adresem: https://iair.mchtr.pw.edu.pl/bputz/zap2014

Zespół prowadzący zajęcia 3 nr pokoju dr inż. Andrzej Mazurek 306 dr inż. Marcin Stachura 341 mgr inż. Bartłomiej Fajdek 341 mgr inż. Jan Klimaszewski 307 mgr inż. Maciej Przybylski 307 mgr inż. Anna Sztyber 339 mgr inż. Kornel Rostek 339 Bliższe dane (godziny konsultacji, e-mail) na stronie Instytutu Automatyki i Robotyki: https://iair.mchtr.pw.edu.pl

Program wykładu 2 Temat 1: Podstawowe pojęcia i proste programy. Pojęcia algorytmu, programu, kodu wykonywalnego. Kompilacja i wykonanie programu. Sieci działań. Struktura programu. Komentarze i dokumentacja programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Definicje zmiennych. Instrukcje: czytania, pisania, przypisania. Klasyfikacja typów. Stałe, wyrażenia i funkcje standardowe. Instrukcje: warunkowa, złożona. Instrukcje cykliczne: pętla for, pętle sterowane warunkiem. Instrukcje przerywające wykonanie pętli. Instrukcja wielokrotnego wyboru. Temat 2: Tablice, rekordy i pliki. Tablice: definiowanie tablic, zmienna tablicowa i indeksowana. Operacje na tablicach. Algorytmy sortowania i przeszukiwania w tablicach, porównanie złożoności obliczeniowej. Struktury i rekordy, operacje wykonywane na rekordach. Definiowanie plików, zasady dostępu, operacje wejścia wyjścia. Temat 3: Funkcje i rekurencja. Zasady definiowania i wywołania funkcji. Parametry formalne i aktualne. Wiązanie parametrów przez wartość i referencję. Zasięg nazw, zasłanianie. Rekurencja jako jedna z podstawowych technik konstruowania algorytmów. Zasada działania rekurencji i warunek końca. Przykłady algorytmów rekurencyjnych.

Program wykładu (c.d.) 3 Temat 4: Wskaźniki i listy. Zmienne dynamiczne i wskaźniki. Przydział i zwalnianie pamięci. Dynamiczna rezerwacja tablic. Listy jednokierunkowe: zasada tworzenia, podstawowe operacje na listach. Listy dwukierunkowe i cykliczne. Iteracyjne i rekurencyjne algorytmy przetwarzania list. Temat 5: Struktury drzewiaste. Drzewa binarne i binarne drzewa sortowane (BST). Podstawowe operacje na drzewach z wykorzystaniem rekurencji. Drzewa wyważone (AVL i RBT). Kopce, B-drzewa, zastosowania do baz danych. Złożoność obliczeniowa. Temat 6: Przegląd algorytmów, algorytmy grafowe. Przegląd zasad konstruowania algorytmów: programowanie typu dziel i zwyciężaj, programowanie dynamiczne, algorytmy z powrotami, metody zachłanne. Grafy i algorytmy grafowe: problem najkrótszej ścieżki, minimalne drzewa rozpinające grafów. Temat 7: Wstęp do ZAP II. Modułowa budowa programów. Elementy programowania obiektowego. Temat 8: Przygotowanie do egzaminu. Przykłady zadań egzaminacyjnych z rozwiązaniami. Przegląd najczęściej popełnianych błędów, wskazówki, jak ich unikać.

Efekty kształcenia 3 1. WIEDZA: uporządkowana wiedza ogólna obejmująca: kluczowe zagadnienia z zakresu konstrukcji języka strukturalnego i programowania strukturalnego w języku C/C++ zagadnienia konstruowania algorytmów dla prostych zadań przetwarzania danych klasyfikację algorytmów i dobór struktur danych 2. UMIEJĘTNOŚCI: praktyczna umiejętność opracowania algorytmu i wynikającego stąd programu strukturalnego w języku C/C++ (z wykorzystaniem struktur dynamicznych włącznie) dla prostego zadania programistycznego praktyczną umiejętność napisania i uruchomienia w trakcie 45 min. zajęć programu w środowisku C/C++ na podstawie otrzymanego zadania umiejętność posługiwania się kompilatorem i debuggerem 3. KOMPETENCJE SPOŁECZNE: nawyk ustawicznego kształcenia się i wyszukiwania nowych informacji, aby radzić sobie z rozwiązywaniem nowych, nietypowych zadań.

Weryfikacja efektów kształcenia 3 1. ZALICZENIE ĆWICZEŃ LABORATORYJNYCH: 2 sprawdziany złożone z części teoretycznej (2 zadania do opracowania w rękopisie) i praktycznej (1 zadanie do uruchomienia w postaci programu na komputerze) każda część do napisania na jednej godzinie zajęć, oceniana w skali 0-6 pkt, max. 2 pkt dodatkowe za aktywność na zajęciach. sprawdzian 1: 17-27 listopada, sprawdzian 2: 19-22 stycznia sprawdzian poprawkowy: 26-29 stycznia (tylko dla 1 części teor. i 1 prakt.) warunek zaliczenia ćwiczeń i dopuszczenia do egzaminu: min. 6 pkt z każdego sprawdzianu (na 12 możliwych). 2. EGZAMIN: część zadaniowa (18 pkt ) - opracowanie w rękopisie 5 zadań wymagających napisania funkcji lub całych programów, czas trwania: 60 minut część testowa (8 pkt) 8 pytań jednokrotnego wyboru z zakresu algorytmów i struktur danych, czas trwania: 5 minut warunek zdania egzaminu: uzyskanie min. 13 pkt łącznie z obu części egzaminu. możliwość zwolnienia z pisemnej części egzaminu: min. 11 pkt z każdego sprawdzianu, min. 23 pkt łącznie. SZCZEGÓŁY: REGULAMIN ZAJĘĆ w SKS, tymczasem: https://iair.mchtr.pw.edu.pl/bputz/zap2014

Programowanie 3 PROBLEM ALGORYTM PROGRAM Algorytmizacja Kodowanie Założony cel zajęć: Nabycie umiejętności algorytmizacji różnorodnych problemów Nabycie umiejętności kodowania algorytmów z wykorzystaniem języka wysokiego poziomu

Kompilacja i wykonanie programu 4 Błędy kompilacji jeśli kompilator nie rozumie programu źródłowego. Błędy wykonania programu jeśli program po kompilacji nie daje się wykonać. Błędy logiczne jeśli program wykonuje się nieprawidłowo.

Prezentacja algorytmu w postaci sieci działań 6 Algorytmy przedstawiane są z różnym stopniem szczegółowości. Najczęściej stosuje się: opis słowny lub sieci działań (schematy blokowe). Symbole graficzne do budowy sieci działań Przykład: Początek Koniec Oznaczenie początku, końca sieci działań 5 5 Łączniki dzielące sieć działań na fragmenty Realizacja operacji Opis realizowanej w algorytmie czynności Tak Warunek prawdziwy? Nie Rozgałęzienie - przejście do części algorytmu wynikającej ze spełnienia warunku czytaj a, b, c pisz a, b, c Odpowiednio: wczytanie lub wydrukowanie wartości: a, b, c

Program w C/C++ 7 STRUKTURA PROGRAMU # include <iostream> dołączanie plików nagłówkowych bibliotek... using namespace std; // udostępnienie nazw ze standardowych bibliotek // po znakach // wpisujemy komentarze ignorowane przez kompilator int main ( ) { definicje, deklaracje i instrukcje return 0; } funkcja main (główna) - musi być w programie... inne funkcje - niekonieczne SŁOWA KLUCZOWE: ciąg znaków o ściśle określonym znaczeniu; np. (tych będziemy używać): bool break case char const continue do else extern false float for goto if int namespace new not or return short sizeof struct switch true using void while SYMBOLE SPECJALNE: jednoznakowe: + - * / = < > ( ) [ ] { }., ; : ' ^ % ~ dwuznakowe (dwa znaki traktowane jako całość):!= <= >= == ++ -- && itd.

Przykłady programów 8 1) Najprostszy program: int main ( ) { return 0; } To samo w innej konwencji zapisu nawiasów klamrowych: int main ( ) { return 0; } 2) Wydrukować większą wartość spośród dwóch wczytanych: # include <iostream> // dołączamy bibliotekę wejścia-wyjścia using namespace std; int main ( ) { double x, y; // definicje zmiennych cin >> x >> y; // wczytywanie zmiennych if (x>y) // jeśli x>y cout << x << endl; // wydrukuj x else // w przeciwnym razie return 0; } cout << y << endl; // wydrukuj y 3) Wczytać promień koła, a następnie obliczyć i wydrukować jego obwód i pole: #include <iostream> using namespace std; int main ( ) { const double pi=3.14159; // definicja stałej double r, obwod, pole; // definicje zmiennych cout << "Podaj promien kola" << endl; // drukowanie napisu zapraszającego do pisania cin >> r; // wczytywanie wartości napisanej przez użytkownika obwod = 2*pi*r; // obliczenia pole = pi*r*r; // obliczenia cout << "Obwod = " << obwod << " Pole = " << pole << endl; // drukowanie wyników return 0; }

Środowisko programowania 9 Na zajęciach laboratoryjnych obowiązuje: środowisko programowania Qt Creator (wersja 5.0.2) - wieloplatformowe, bezpłatne, typu open source, z kompilatorem MinGW4.7, do ściągnięcia ze strony: http://download.qt-project.org/archive/qt/5.0/5.0.2/qt-windowsopensource-5.0.2-mingw47_32-x86-offline.exe Zmiana wersji językowej: Narzędzia>Opcje>Środowisko>Język Można też używać wersji najnowszej 5.3.2: http://download.qt-project.org/official_releases/qt/5.3/5.3.2/qt-opensource-windowsx86-mingw482_opengl-5.3.2.exe Tworzymy tylko aplikacje konsolowe: Sesje i projekty > Utwórz projekt > Projekt nieużywający Qt > Zwykły projekt C++ Tymczasowo wprowadzenie do obsługi Qt Creator jest pod adresem: https://iair.mchtr.pw.edu.pl/bputz/zap2014

Szkielety aplikacji konsolowych w Qt Creator 10 Szkielet nowego programu po wykonaniu Utwórz projekt > Projekt nieużywający Qt > Zwykły projekt C++ Tu dołączamy ew. inne biblioteki Tę linię możemy usunąć A tu wpisujemy własne definicje i instrukcje Okno wynikowe - po wykonaniu Uruchom : Ctrt-R albo Wynik działania programu (Naci w polskiej wersji językowej skrót od: Naciśnij Enter, aby zamknąć to okno)

Zmienne, ich typy i nazwy 15 Zmienną nazywa się daną mogącą przyjmować różne wartości. Każda zmienna występująca w programie ma swoją nazwę i musi mieć określony typ Najprostsze typy zmiennych: całkowite (int) 10-243 +78 rzeczywiste (double) 1.5 3.14-2450.138 znakowe (char) 'a' 'A' '?' napisowe (string) "Wcisnij jakis klawisz" "Napisz swoje imie" Nazwa zmiennej Dowolny ciąg liter i cyfr zaczynający się od litery (tylko litery alfabetu łacińskiego). Znak podkreślenia jest traktowany jak litera. Małe i duże litery są rozróżniane. Nazwy zmiennych muszą się różnić od słów kluczowych. Nazwy poprawne: a A4 a4 _A4 liczbapunktow przyklad_1 NowyTyp Nazwy błędne: 5gr przykład_1 przyklad-1 a+b a[4] Wszystkie zmienne występujące w programie muszą być zdefiniowane przed ich pierwszym użyciem.

Definiowanie zmiennych 16 Definicja zmiennej Informuje o typie zmiennej i przydziela na nią pamięć. Najpierw podaje się typ, a potem wymienia nazwy wszystkich zmiennych tego typu. Definicja zmiennych typ zmienna1, zmienna2,...; Zmienne mogą być definiowane w dowolnym miejscu, jak tylko zajdzie potrzeba ich wykorzystania. Definicja zmiennej może być nawet wpleciona w instrukcje, np. połączona z instrukcją przypisania wartości początkowej (to jest zalecane - przykłady dalej). Przykład definicji zmiennych prostych : int i,j,k; double x1,x2,y1,y2 ; char znak_wczytany, znakwczytany; string nazwa_pliku, nazwapliku, filename; zalecany styl nazwy zmiennych zaczynać z małej litery styl1 styl2 Przykładowy zalecany styl programowania: http://geosoft.no/development/cppstyle.html

Definiowanie stałych 17 STAŁE definiujemy, jeśli chcemy je nazwać i używać ich nazw w programie. Definicja stałych const typ nazwa = wyrażenie; Definicja stałej musi zawierać jej inicjalizację, bo stałych nie można już potem zmieniać. zalecany styl Przykłady definicji stałych: nazwy stałych - tylko wielkie litery i znaki _ const int N = 5; const int K = 2*(N+1); const double XMIN = 0.001; const string PYTANIE = "Czy wykonac ponownie - t/n"; zalecany styl Należy definiować jako stałe wszystkie liczby w programie różne od 0 i 1

Wyrażenia arytmetyczne 18 Wyrażenia - zapis tworzony z wykorzystaniem stałych, zmiennych, funkcji i łączących je operatorów i nawiasów okrągłych. OPERATORY ARYTMETYCZNE + - * / % dodawanie odejmowanie mnożenie dzielenie reszta z dzielenia (modulo) lub symbol lub symbol liczby dodatniej liczby ujemnej Resztę z dzielenia można wyznaczyć tylko dla argumentów całkowitych: 5%2 czyli 1 (reszta z dzielenia 5 przez 2=1) 6%3 czyli 0 PRIORYTET OPERATORÓW - wewnątrz jednej pary nawiasów okrągłych 1. jednoargumentowy + oraz - (symbol liczby dodatniej oraz ujemnej) 2. * / % 3. + - (dodawanie i odejmowanie) Przykłady: b -b / 2*a oznacza a -b / (2*a) 2 -b / 2 / a oznaczają Wyrażenie z dwoma jednoargumentowymi minusami -5+3*-8 daje wynik -29, bo kolejność obliczeń odpowiada wyrażeniu (-5) + (3* (-8)) b 2a UWAGA: W sytuacjach wątpliwych najpewniejszym sposobem jest używanie nawiasów okrągłych.

Konwersja typów 19 Dzielenie można wykonać dla różnych typów argumentów. W razie potrzeby kompilator dokonuje niejawnej konwersji typów, np. zamienia liczbę rzeczywistą na całkowitą, obcinając ją. UWAGA: dzielenie dwóch liczb całkowitych daje wynik całkowity (!!) powstały przez obcięcie części ułamkowej wyniku dzielenia: 8/3 = 2 8.0 /3 = 2.6667-8/3 = -2-8.0/3 = -2.6667 Operatory rzutowania postaci: typ (nazwa zmiennej) lub: (typ) nazwa zmiennej służą do jawnej konwersji typów, np. double(x) zamienia dowolny typ zmiennej x na typ double. To samo wykona się dla (double)x. Dzięki temu np. możemy policzyć dokładnie iloraz x/y w przypadku, gdy x i y są typu int, pisząc: double(x)/y albo (double)x/y Można napisać też po prostu: x*1.0/y Ale uwaga: nie wolno napisać tak: double(x/y), to niczego nie zmienia!

Instrukcje 20 INSTRUKCJE - polecenia dla komputera - zmuszają go do przetwarzania danych podczas procesu obliczeniowego. UWAGA: w C++ każda instrukcja kończy się średnikiem. Na początek: instrukcja pisania instrukcja czytania instrukcja przypisania instrukcja złożona instrukcja warunkowa

Instrukcja pisania (drukowania) 21 Instrukcja drukowania wyników Służy do wyprowadzania wyników (wartości wyrażeń) na standardowe urządzenia wyjściowe komputera (domyślnie na konsolę, czyli monitor ). Wymaga dołączenia pliku nagłówkowego biblioteki iostream (mamy to gotowe w szkielecie Qt): #include <iostream>... cout << wyrażenie1 << wyrażenie2...; W rzeczywistości cout jest obiektem tzw. klas strumieni wejścia-wyjścia, zaś << operatorem, ale dla uproszczenia będziemy mówili o instrukcji drukowania. Funkcja endl oznacza przejście do nowej linii i jest równoważna wstawieniu \n do napisu: cout << " napisz swoje imie " << endl; cout << " napisz swoje imie \n" ; Np.: cout <<34 <<x << y+5; cout << endl; cout << " Wynik = " << x+2*y <<endl;

Instrukcja czytania 22 Instrukcja czytania danych Służy do wprowadzania danych (nadawania wartości zmiennym) ze standardowego urządzenia wejściowego komputera (domyślnie z konsoli, czyli klawiatury ). #include <iostream> //... cin >> zmienna1 >>zmienna2...; // UWAGA: // Tu muszą być pojedyncze zmienne, a nie całe wyrażenia! Np.: cin >> x; cin >> y; cin >> x >> y; cin >> znak; równoważne

Instrukcja przypisania 23 INSTRUKCJA PRZYPISANIA ( podstawienia ) Służy do nadawania zmiennej nowej wartości: ZMIENNA = WYRAŻENIE ; // ta zmienna powinna być wcześniej zdefiniowana lub: typ ZMIENNA = WYRAŻENIE ; // a tu definiujemy zmienną i nadajemy wartość początkową Typ zmiennej i wyrażenia nie muszą się zgadzać. Np. w przypadku podstawienia wartości rzeczywistej pod zmienną całkowitą następuje obcięcie części ułamkowej - jest to niejawna konwersja typów (niezalecane!) int k = -10.6; // k będzie równe -10 int k = int (-10.6); // k będzie równe -10 zalecany styl jawna konwersja typów Przykłady instrukcji przypisania: k = 3; x = k-4.5; k = k+1; // zwiększ wartość k o 1 double y = 2.5*(x+3)/2; z = a ; imie = "Witold ";

Instrukcja złożona 24 INSTRUKCJA ZŁOŻONA (inaczej: blokowa, grupująca) Tworzy z ciągu instrukcji jedną. Można używać jej wszędzie tam, gdzie wolno zastosować tylko jedną instrukcję. { ciąg instrukcji } ciąg instrukcji - instrukcje zakończone średnikami, wykonywane w kolejności zapisania. Przykład instrukcji złożonej: { suma=suma+x; ile=ile+1; } UWAGA: Instrukcja złożona kończy się klamrą, dodatkowy średnik za klamrą nie jest konieczny (ale nie jest błędem).

Instrukcje warunkowe - wprowadzenie 25 Instrukcja if Instrukcja if-else if (serce) na_niebiesko ; if (a<0) cout << ujemna ; if (serce) na_niebiesko ; else na_czerwono ; if (a<0) cout << ujemna ; else cout << nieujemna ;

Instrukcja warunkowa if 26 Instrukcja warunkowa uzależnia wykonanie instrukcji w programie od spełnienia lub niespełnienia warunku. Najprostsze warunki zawierają wyrażenia arytmetyczne, operatory relacji i nawiasy okrągłe. OPERATORY RELACJI > >= (większy równy) < <= == (równy)!= (nierówny) if (warunek) instrukcja zalecany styl Przykład: if (liczba>0) suma = suma+liczba; Uwaga: tu musi być jedna (!) instrukcja; w szczególności może to być instrukcja złożona: if (warunek) { ciąg instrukcji } zalecany styl Przykład: if (a>0) { s = s+a; k = k+1; }

Instrukcja warunkowa if-else 27 if (warunek) instrukcja1 else instrukcja2 zalecany styl Przykład: if (liczba>0) s_dod = s_dod+liczba; else s_niedod = s_niedod+liczba; Uwaga: Każda z powyższych instrukcji musi być jedną (!) instrukcją; w szczególności może to być instrukcja złożona: if (warunek) { ciag_instrukcji_1 } else { ciag_instrukcji_2 } zalecany styl Przykład: if (a>0) { sd = sd+a; kd = kd+1; } else { snd = snd+a; knd = knd+1; }

Instrukcje warunkowe zagnieżdżone (1) 28 if (...)... else if (...)... if (serce) na_niebiesko ; else if (trojkat) na_czerwono ; if (a<0) cout << ujemna ; else if (a>0) cout << dodatnia ;

Instrukcje warunkowe zagnieżdżone (2) 29 if (a<0) cout << ujemna ; else if (a>0) cout << dodatnia ; else cout << zero ; if (a<0) cout << ujemna ; if (a>0) cout << dodatnia ; else cout << zero ; Błąd logiczny!!!

Instrukcje warunkowe zagnieżdżone (3) 30 Przykłady konstrukcji instrukcji warunkowych zagnieżdżonych: if (w1) if (w1) i1 if (w2) else i1 if (w2) else i2 i2; else i3; Obowiązuje zasada: else przyporządkowane jest najbliższemu wstecz if W sytuacjach wymagających zmiany tej zasady konieczne jest ujęcie instrukcji if w klamry {...} : if (w1) { if (w2) i1 } else i2; UWAGA: Również w sytuacjach wątpliwych najpewniejszym sposobem jest tworzenie instrukcji złożonych za pomocą klamer.