POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - zima 2015 ) prof. nzw. dr hab. inż. Barbara Putz pok. 306 Język programowania: C/C++ Środowisko programowania: Qt Creator 5.0.2 Wykład 1 : Podstawowe pojęcia, proste programy, instrukcje warunkowe
27
Embed
ZASADY PROGRAMOWANIA STRUKTURALNEGO ( ZAP - …iair.mchtr.pw.edu.pl/bputz/2015_ZAP/2015_w1_ZAP_podstawy_ify.pdf · Język programowania: C/C++ ... strukturalnego w języku C/C++ (z
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
POLITECHNIKA WARSZAWSKA
Instytut Automatyki i Robotyki
ZASADY PROGRAMOWANIA STRUKTURALNEGO
( ZAP - zima 2015 )
prof. nzw. dr hab. inż. Barbara Putz pok. 306
Język programowania: C/C++
Środowisko programowania: Qt Creator 5.0.2
Wykład 1 : Podstawowe pojęcia, proste programy,
instrukcje warunkowe
ZASADY PROGRAMOWANIA STRUKTURALNEGO
TYGODNIOWY WYMIAR ZAJĘĆ
Rok ak. Semestr W L P ECTS
2015/2016 I 1E 2 - 5
2015/2016 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:
Utwórz projekt > Projekt nieużywający Qt > Zwykły projekt C++
Tu dołączamy ew. inne biblioteki
A zamiast niej wpisujemy tutaj własne definicje i instrukcje
Okno wynikowe - po wykonaniu Uruchom : Ctrl-R albo
Wynik działania programu
(Naci – w polskiej wersji językowej „skrót” od:
Naciśnij Enter, aby zamknąć to okno)
Tę całą linię możemy usunąć
12
Zmienne, ich typy i nazwy
• 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
Wszystkie zmienne występujące w programie muszą być zdefiniowane przed ich pierwszym użyciem.
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]
13
Definiowanie zmiennych
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;
14
zalecany styl
nazwy zmiennych zaczynać z małej litery
styl1 styl2 Przykładowy zalecany styl programowania:
http://geosoft.no/development/cppstyle.html
Wyrażenia arytmetyczne
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 plus lub minus jednoargumentowy jednoargumentowy
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
15
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 / 2*a oznacza -b / (2*a)
-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))
a
b
2
ab
2
UWAGA: W sytuacjach wątpliwych
najpewniejszym sposobem jest
używanie nawiasów okrągłych.
Konwersja typów
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!
16
Instrukcje
INSTRUKCJE - polecenia dla komputera - „zmuszają” go do
przetwarzania danych podczas procesu obliczeniowego.
UWAGA: w C++ każda instrukcja kończy się średnikiem.
• instrukcja pisania
• instrukcja czytania
• instrukcja przypisania
• instrukcja złożona
• instrukcja warunkowa
Na początek:
17
Instrukcja pisania (drukowania)
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):
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" ;
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.
18
Instrukcja czytania
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; równoważne
cin >> x >> y;
cin >> znak;
19
Instrukcja przypisania
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
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 ";
20
zalecany styl
jawna konwersja typów
Instrukcja złożona
INSTRUKCJA ZŁOŻONA (inaczej: blokowa, grupująca)
Tworzy z ciągu instrukcji jedną. Można używać jej wszędzie tam,