wykład 1 Agata Półrola Wydział Matematyki i …polrola/strony/1718z-wdprog/wdprog...Pascal, Ada,...
-
Upload
trinhkhanh -
Category
Documents
-
view
218 -
download
0
Transcript of wykład 1 Agata Półrola Wydział Matematyki i …polrola/strony/1718z-wdprog/wdprog...Pascal, Ada,...
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Wstęp do programowaniawykład 1
Agata PółrolaWydział Matematyki i Informatyki UŁ
sem. zimowy 2017/2018
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
strona www: http://www.math.uni.lodz.pl/~polrola
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
To oczywiście pewnie wszyscy wiedzą...
Komputer może być traktowany jako urządzenie służące doprzechowywania i przetwarzania informacji
Działanie komputera jest kontrolowane przez wykonywanyprzez niego program
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Podstawowe elementy komputera
Procesor - “mózg” komputera. Zawiera:jednostkę sterującą (CU - control unit) - element nadzorującyi koordynujący działanie komputerajednostkę wykonawczą (EU - execution unit), a w niej m.in.element odpowiedzialny za operacje arytmetyczne i logiczne(ALU - arithmetic-logic unit) oraz różnego rodzaju rejestry(wbudowane w procesor małe komórki pamięci o szybkim dostępie, służące do przechowywania
wyników obliczeń, adresów w pamięci operacyjnej, instrukcji; procesor wykonuje działania
korzystając ze swoich rejestrów - dane są pobierane z pamięci do rejestrów a potem odsyłane) .
Pamięć operacyjnaprzechowuje m.in. uruchamiany program, dane, tymczasowestruktury danych niezbędne do poprawnego działaniauruchamianego programu itp.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Podstawowe elementy komputera - cd
jednostki wejścia/wyjścia umożliwiające komunikację z“otoczeniem” (mysz, klawiatura, ekran itp)pamięć pomocnicza (zewnętrzna) pozwalająca przechowywaćdane, programy które nie są wykonywane itp
zawartość pamięci pomocniczej jest zazwyczaj zorganizowanaw pliki
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Pamięć
Pamięć komputera może być traktowana jako ciąg komórekpamięci (nazywanych czasami słowami).
Każda komórka ma pewien adres, określający jej pozycję wpamięci.
Każda komorka składa się z pewnej liczby bitów (zazwyczaj 8,16, 32 lub 64).8 bitów tworzy bajt
Każdy bit przechowuje cyfrę dwójkową (0 lub 1)
za pomocą ciągów cyfr dwójkowych zapisujemy liczbycałkowite, rzeczywiste, wartości logiczne, instrukcje programuitd
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Wykonanie programu
Wykonywany program zajmuje grupę powiązanych ze sobąkomórek pamięci. Komórki lub grupy komórek zawierająposzczególne instrukcje programu.
program to ciąg instrukcji
podczas wykonania programu CU czyta kolejne instrukcje zpamięci i zapewnia, że są one wykonywane w odpowiednimporządku
instrukcja “mówi” komputerowi, że powinien wykonać jakieśzadanie (np. przenieść zawartość komórki pamięci znajdującejsię pod jakimś adresem do określonego rejestru procesora,albo dodać dwie liczby w ALU)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Postać programu (“wewnątrz komputera”)
Instrukcja jest zapisana jako pewien ciąg zer i jedynek.instrukcja o tej samej roli może mieć różną postać w rożnych modelach komputerów
Program zapisany w takiej postaci może być wykonany przezkomputer. Mówimy, że jest w postaci kodu maszynowegoinstrukcje kodu maszynowego nazywa się też rozkazami maszynowymi
Przykład
001100111111001100111111100001101001001111001111
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Języki programowania
początkowo programy były pisane w kodzie maszynowymkolejnym etapem był język asembler
jest to język używający krótkich nazw odpowiadającychposzczególnym rozkazom maszynowym danego typu procesoraoraz pozwalający na użycie nazw zmiennych zamiast ichadresów
Przykład
LOAD AADD B
STORE C
przetłumaczenie takiego programu na kod maszynowy jest bardzo proste
język asembler jest w użyciu; pozwala pisać bardzo wydajne programy
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Języki programowania - cd
kolejnym etapem są języki programowania wysokiego poziomu(np. Pascal, Ada, C++, Java, ...)
prosty zapis operacji
Przykład
C := A + B
programy napisane w takich językach są tłumaczone na kod maszynowy
przy pomocy specjalnego translatora
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Od kodu do programu wykonywalnego
Program napisany w języku programowania ma postać plikutekstowego. Ta postać nazywana jest kodem źródłowym
Aby program można było wykonać, musi zostaćprzetłumaczony na kod wykonywalny (program wykonywalny)zapisany w języku maszynowym
proces tłumaczenia programu nazywany jest kompilacją
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Od kodu do programu wykonywalnego - cd
proces tłumaczenia programu składa się tak naprawdę zdwóch czynności: kompilacji i łączenia
kompilacja (przetworzenie kodu źródłowego przez program zwanykompilatorem) zamienia program źródłowy na plik binarny zawierającyprogram w kodzie maszynowym (object file). Najczęściej nie jest onjeszcze końcową wersją programu - zawiera odwołania do zewnętrznychpodprogramów umieszczonych w bibliotekach
kompilacja może być poprzedzona analizą kodu źródłowegowykonywaną przez program zwany preprocesorem(często kompilator spełnia równocześnie rolę preprocesora)
łączenie (konsolidacja, linkowanie,) wykonywana przez program zwany
konsolidatorem, tworzy kolejny plik binarny, w którym jest już wszystko co
jest potrzebne do wykonania programu na danym sprzęcie z danym
systemem operacyjnym
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Języki interpretowane (skryptowe)
Programy napisane w niektórych językach programowania (np. wjęzyku Perl lub Python) uruchamiane są w inny sposób.
do uruchomienia programu potrzebne jest środowiskouruchomieniowe - interpreter
interpreter nie tworzy programu wykonywalnego; poszczególneinstrukcje programu tłumaczone są po kolei na bieżąco na kodmaszynowy i wykonywane. Odwołania do podprogramówumieszczonych w zewnętrznych bibliotekach równieżprzetwarzane są na bieżąco
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Etapy tworzenia programu
Aby napisać program musimy:
określić wymagania programu (faza analizy wymagań ispecyfikacji)
zaprojektować sposób rozwiązania problemu (faza projektowa)
zapisać w/w projekt w wybranym języku programowania (fazaimplementacji)
skompilować i uruchomić program
sprawdzić, czy program działa poprawnie (faza testowania)
... z czego faza implementacji jest chyba najprostsza ... ;-)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
PROGRAMOWANIE
JEST JEDNO
tylko językow programowania wiele
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Algorytmy
Aby napisać program, musimy znaleźć odpowiedni algorytm - czyliopisać, jak rozwiązać konkretny problem / zadanieAlgorytmy można zapisywać na różne sposoby:
w języku naturalnym
w postaci schematu blokowego
w postaci instrukcji programu
w pseudokodzie
...
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykłady algorytmów
przepis na ciasto
instrukcja składania mebli
“przepis” na rozwiązanie równania kwadratowego postaciax2 + bx + c = 0
metoda znalezienia największej liczby w (bardzo, bardzodługim) ciągu liczb
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Elementy algorytmów
Sposób opisu algorytmu musi pozwalać na wyrażenie:
sekwencyjności
wyboru
iteracji
rekursji (rekurencji)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Sekwencyjność
Opisujemy kolejne kroki. Kroki muszą być wykonywane w takiejkolejności, w jakiej zostały zapisane
Przykład
weź 4 jajka, szklankę cukru i cukier waniliowy
utrzyj żółtka z cukrem
przygotuj szklankę mąki z łyżeczką proszku do pieczenia
dodaj część mąki do ucieranej masy
ubij pianę z białek
dodaj do ucieranej masy pianę i resztę mąki
...
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Wybór
Opisujemy fakt konieczności podjęcia decyzji którą zalternatywnych “ścieżek” wybrać
Przykłady
jeżeli ucierana masa jest zbyt gęsta, to dodaj łyżkę wody
jeżeli uczestnik turnieju odpowiedział poprawnie na co najmniej 5 pytań, toprzechodzi do następnego etapu, w przeciwnym razie odpada z gry
jeżeli wyróżnik trójmianu kwadratowego jest ujemny, to piszemy że trójmian nie
ma pierwiastków, jeżeli wyróżnik jest równy zero, to piszemy że trójmian ma
jeden pierwiastek, w pozostałych przypadkach trójmian ma dwa pierwiastki
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Iteracja
Opisujemy fakt, że pewna część algorytmu będzie powtarzana -albo określoną ilość razy, albo do momentu zajścia pewnegowarunku
Przykłady
podgrzewaj masę mieszając, dopóki cukier się nie rozpuści
powtórz 100 razy czynność “idź krok na północ” (czyli idź 100 kroków na
północ)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Rekurencja
Problem dzielimy na mniejsze (zagnieżdżone) podproblemy opodobnej strukturze. Każdy z nich rozwiązujemy stosując ten samalgorytm.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Aby tworzyć algorytmy, powinniśmy rozumieć co jest w staniezrobić komputer
W przypadku bardziej złożonego problemu wygodnie jest:
podzielić problem na mniejsze, prostsze podproblemy
zaprojektować rozwiązanie dla każdego z nich, w raziepotrzeby znów dzieląc je na podproblemy
Jest to tzw. projektowanie “od ogółu do szczegółu” albo “z góry w dół” (top-down
design)
Kolejny krok to zapisanie algorytmu w wybranym językuprogramowania
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Każdy język ma swoją składnię:
słowa kluczowe
instrukcje
itd
Na wykładzie / ćwiczeniach będziemy używać języka C++
jeden z bardziej popularnych języków programowania
powstały w latach 80-tych XX wieku jako rozszerzenie językaC o mechanizmy programowania obiektowego
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Musimy zaopatrzyć się w jakiś kompilator C++ (albo wodpowiednie IDE, tj. zintegrowane środowisko programistyczne dladanego języka)Przykłady IDE:
Code::Blocks
Dev-C++
Eclipse
Falcon C++
wxDev-C++
VisualStudio
Ultimate++
....
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykładowy program
#include <iostream > /* dyrektywa preprocesora */
int main() // program glowny{
std::cout << "Dzien dobry! \n" ;std::cout << "To ja , Twoj pierwszy program";
return 0;}
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Dyrektywy preprocesora
#include <iostream >
linia zaczyna się od dyrektywy preprocesorapreprocesor analizuje kod źródłowy poszukując przeznaczonychdla niego poleceń (dyrektyw lub makr)celem wykonania preprocesora jest przekształcenie koduprogramu zgodnie z treścią tych poleceń
w przypadku dyrektywy #include przekształcenie polega nadołączeniu w danym miejscu kodu pliku podanego podyrektywietu dołączamy plik (bibliotekę) iostream ponieważ będziemyużywać tzw. strumieni do wypisania tekstu
uwaga - preprocesor nie dokonuje kontroli poprawnościprogramu!
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Komentarze
#include <iostream > /* dyrektywa preprocesora */int main() // program glowny
Komentarz to taki fragment zawartości pliku z kodemźródłowym programu, który nie jest brany pod uwagę przykompilacji.W C++ istnieją dwa sposoby wstawiania komentarzy:
komentarzem jest tekst zawarty między /* (otwarciemkomentarza) i */ (zamknięciem komentarza)
komentarzy tego typu nie można zagnieżdżać!
komentarzem jest też tekst rozpoczynający się od // jesttraktowany jako komentarz; końcem komentarza jest wówczaskoniec linii
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Definicja głównej funkcji programu
int main() // program glowny{...... // tresc programureturn 0;
}
funkcja o nazwie main jest “właściwym programem” w C++. Nazwa ta jestzastrzeżona (nie można jej zmienić)
każda funkcja zwraca wartość pewnego typu; dla main jest to zawsze int -wartość całkowita. Typ wyniku jest podany przed nazwą funkcji. Na końcutreści programu znajduje się instrukcja return 0; powodująca zwrócenie zera(oznaczającego zazwyczaj poprawne wykonanie programu)
funkcja może przyjmować również pewne dane wejściowe - argumenty. Listęargumentów podaje się w nawiasach () następujących po nazwie funkcji. Pustalista argumentów oznaczana jest pustymi nawiasami..
nawiasy klamrowe { i } wyznaczają początek i koniec bloku zawierającegoinstrukcje programu
każda instrukcja programu jest zakończona średnikiem
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Strumień wyjścia std::cout
std::cout << "Dzien dobry! \n" ;std::cout << "To ja , Twoj pierwszy program";
użycie tzw. strumienia std::cout pozwala na przesłanie danych nastandardowe wyjście (ekran)
znaki << (nazywane operatorem strumienia wyjścia pozwalają“wskazać dane” które mają być przekazane do strumienia
tu przekazujemy tekst (napis). Napis musi być ujęty w cudzysłowy
polecenie “przesyłania danych” musi być zakończone średnikiem
przekierowania można “sklejać”:
std::cout << "Dzien dobry! \n" << "To ja" ;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Znaki specjalne w tekście
std::cout << "Dzien dobry! \n" ;std::cout << "To ja , \t \t Twoj pierwszy \"program \" ";
W tekście można umieszczać znaki specjalne. Najczęściej używane to:
\n - przejście do nowej linii
\t - znak tabulacji
\" - znak cudzysłowu
Efekt przejścia do nowej linii można uzyskać również przesyłając nastandardowe wyjście znak oznaczony std::endl
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykładowy program - drobna zmiana
#include <iostream >
using namespace std; // okreslenie przestrzeni nazw
int main(){
cout << "Dzien dobry! " << endl;cout << "To ja, Twoj pierwszy program";
return 0;}
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przestrzenie nazw
using namespace std;...cout << "Dzien dobry! " << endl;
Powyższa linia “mówi” że w programie poniżej niej będziemyużywać nazw ze standardowej przestrzeni nazw - std
nie musimy zatem poprzedzać nazw cout i endl przedrostkiem std::- kompilator “wie” gdzie poszukiwać danego elementu
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Identyfikatory w C++
Nazwy wykorzystywane w programie, (tzw. identyfikatory)muszą być ciągami znaków złożonymi z liter, cyfr i znakówpodkreślenia, zaczynającymi się od litery, przy czym znakpodkreślenia traktowany jest jak litera.
polskie znaki nie są traktowane jako litery!
wielkie i małe litery są rozróżniane
zazwyczaj rozróżniane są tylko pierwsze 32 znaki
Przykłady
poprawne: prog1, prog 1, moja zmienna, A123,JamesBond007, moj program
niepoprawne: on&ona, 1szy program, max%
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Słowa kluczowe w C++
Niektóre identyfikatory są tzw. słowami kluczowymi(zarezerwowanymi). Nie mogą one pojawiać się w programie winnym znaczeniu niż nadane w standardzie języka.
Słowa kluczowe w C++and and eq asm auto bitandbitor bool break case catchchar class compl const const castcontinue default delete do doubledynamic cast else enum explicit exportextern false float for friendgoto if inline int longmutable namespace new not not eqoperator or or eq private protectedpublic register reinterpret cast return shortsigned sizeof static static cast structswitch template this throw truetry typedef typeid typename union
unsigned using virtual void volatilewchar t while xor xor eq
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Liczby
Korzystanie z liczb
C++ “zna” różne rodzaje liczb (różne typy liczbowe) i “potrafi”wykonywać na nich różne operacje arytmetyczne.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Podstawowe działania na liczbach całkowitych
#include <iostream >using namespace std;int main(){
cout << "20 + 2 = " << 20+2 << endl;cout << "20 - 2 = " << 20-2 << endl;cout << "20 * 2 = " << 20*2 << endl;cout << "20 / 2 = " << 20/2 << endl;cout << "20 / 3 = " << 20/3 << endl;cout << "20 % 2 = " << 20%2 << endl;cout << "20 % 3 = " << 20%3 << endl;
return 0;}
użyte operatory arytmetyczne: + - dodawanie, − - odejmowanie, ∗- mnożenie, / - dzielenie, % - modulo (reszta z dzielenia)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Podstawowe działania na liczbachrzeczywistych
Liczby rzeczywiste zapisujemy z kropką dziesiętną(przecinek zamiast kropki nie jest dozwolony!!)
#include <iostream >using namespace std;int main(){
cout << "20 + 2.0 = " << 20+2.0 << endl;cout << "20 - 2.0 = " << 20 -2.0 << endl;cout << "20 * 2.0 = " << 20*2.0 << endl;cout << "20 / 2.0 = " << 20/2.0 << endl;cout << "20 / 2.1 = " << 20/2.1 << endl;
return 0;}
operatory arytmetyczne: + - dodawanie, − - odejmowanie, ∗ -mnożenie, / - dzielenie (nie ma operatora modulo!)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Dzielenie
dzielenie dwóch liczb całkowitych daje wynik będący liczbącałkowitą (wykonywane jest dzielenie całkowite - 20/2 daje10, 20/3 daje 6)
jeśli przynajmniej jedna z liczb jest rzeczywista, wynik jestliczbą rzeczywistą
... zatem jeśli chcemy uzyskać “poprawny” wynik dzielenia,musimy przynajmniej jedną z liczb zapisać z kropką dziesiętną(możliwe zapisy: 20.0/3 albo 20/3.0 albo 20.0/3.0)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Dzielenie
dzielenie dwóch liczb całkowitych daje wynik będący liczbącałkowitą (wykonywane jest dzielenie całkowite - 20/2 daje10, 20/3 daje 6)
jeśli przynajmniej jedna z liczb jest rzeczywista, wynik jestliczbą rzeczywistą
... zatem jeśli chcemy uzyskać “poprawny” wynik dzielenia,musimy przynajmniej jedną z liczb zapisać z kropką dziesiętną(możliwe zapisy: 20.0/3 albo 20/3.0 albo 20.0/3.0)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Literały
Literały są rodzajem stałych (wyrażeń o ustalonej, niezmiennejwartości). Umożliwiają umieszczenie w kodzie źródłowymprogramu konkretnych wartości (liczb, znaków, napisów),reprezentujac je za pomocą odpowiedniej notacji.Literały numeryczne reprezentują wartości liczbowe. Wyróżniamyliterały całkowite reprezentujące wartości całkowite oraz literałyzmiennoprzecinkowe (ang. floating-point literals) reprezentującewartości rzeczywiste.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Literały całkowite
liczby dziesiętne: 12, -12, 1234
liczby ósemkowe (system o podstawie 8): 012, -012 (cyfryliczby są poprzedzone zerem)
liczby szesnastkowe (system o podstawie 16): 0xab, 0x12,-0X12, -0XAB (cyfry liczby są poprzedzone znakami 0x albo0X, cyfry w tym systemie to 0..9, a..f)
liczby binarne (system o podstawie 2) - zapis dozwolony odstandardu C++14: 0B001, -0b1111 (cyfry liczby poprzedzonesą znakami 0b albo 0B)
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Literały całkowite - cd
Domyślnym typem literałów całkowitych nie mającychprzyrostka specyfikującego typ jest int. Przyrostkiumożliwiające przypisanie literału całkowitego do innego typuliczbowego to: (o typach – za chwilę)
u lub U – typ unsigned intl lub L – typ long intll lub LL – typ long long int
(przyrostki można [odpowiednio] łączyć - np. ul oznaczaunsigned long int. Przykłady: 75l, 75ul, 75LL).
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Literały rzeczywiste
Reprezentują liczby rzeczywiste, z kropką dziesiętną i/lubwykładnikiem.
notacja “standardowa”: 12.3, -4.5
notacja naukowa (wykładncza) : -3.3e5, 4.6E-2
domyślnym typem literałów rzeczywistych jest double.Przyrostki umożliwiające przyisanie literału rzeczywistego doinnego typu rzeczywistego:f lub F – typ floatl lub L – typ long double
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Literały rzeczywiste
Reprezentują liczby rzeczywiste, z kropką dziesiętną i/lubwykładnikiem.
notacja “standardowa”: 12.3, -4.5
notacja naukowa (wykładncza) : -3.3e5, 4.6E-2domyślnym typem literałów rzeczywistych jest double.Przyrostki umożliwiające przyisanie literału rzeczywistego doinnego typu rzeczywistego:f lub F – typ floatl lub L – typ long double
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Typy liczbowe
W języku zdefiniowane są pewne (tzw. predefiniowane) typyliczbowe. Podstawowe to:
int, short int, long int, long long int służące doreprezentowania liczb całkowitych; każdy z nich może być zeznakiem (signed, domyślnie) lub bez znaku (unsigned).Przykład: unsigned short int - typ “krótki całkowity” bezznaku(dozwolone jest używanie skróconych nazw typów: short, long, long long )
float, double i long double służące do reprezentowanialiczb rzeczywistych
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Zakresy typów
Wartości danego typu T reprezentowane są w pamięci komputeraprzy użyciu pewnej, ustalonej dla danego typu, liczby bitów (jakociągi zer i jedynek).Z tego powodu każdy typ ma swój zakres - istnieje w nim wartośćnajmniejsza i największa
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Wyświetlenie zakresu typu int
#include <iostream >#include <limits >using namespace std;
int main(){
cout << "zakres int: od " << std:: numeric_limits <int >:: min() << "do " << std:: numeric_limits <int >:: max() << endl;
cout << "rozmiar wartosci typu int w bajtach: "<< sizeof(int) << endl;
return 0;}
Zakresy innych typów liczbowych można uzyskać w podobnysposób
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Zmienne
Aby móc zapamiętać (przechować) w pamięci komputerawprowadzoną z klawiatury albo wyliczoną w programie wartośćpewnego typu, musimy zdefiniować zmienną tego typu (angvariable)
w tym celu piszemytyp zmiennej nazwa zmiennej ; (e.g., int a; )nazwy zmiennych muszą być indentyfikatorami (nie będącymisłowami kluczowymi)wynik: w odpowiednim momencie uruchamiania programu wpamięci zostaje zarezerwowany pewien obszar o rozmiarzeodpowiednim dla przechowania wartości danego typu.Odwołujemy się do niego przez nazwę zmiennej.
można zdefiniować naraz kilka zmiennych tego samego typu:int a,b,c;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Zmienne
Aby móc zapamiętać (przechować) w pamięci komputerawprowadzoną z klawiatury albo wyliczoną w programie wartośćpewnego typu, musimy zdefiniować zmienną tego typu (angvariable)
w tym celu piszemytyp zmiennej nazwa zmiennej ; (e.g., int a; )nazwy zmiennych muszą być indentyfikatorami (nie będącymisłowami kluczowymi)wynik: w odpowiednim momencie uruchamiania programu wpamięci zostaje zarezerwowany pewien obszar o rozmiarzeodpowiednim dla przechowania wartości danego typu.Odwołujemy się do niego przez nazwę zmiennej.można zdefiniować naraz kilka zmiennych tego samego typu:int a,b,c;
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Definicja a deklaracja
deklaracja informuje kompilator że dana nazwa jest już znana,ale nie powoduje alokacji (rezerwacji) pamięci(przykład: extern int a; - informuje że zmienna a jestzdefiniowana w innym pliku będącym częścią programu)
definicja określa dokładnie czym jest dany identyfikator.Zdefiniowanie zmiennej skutkuje zarezerwowaniem pamięci dlatej zmiennej
Każda definicja jest deklaracją, ale nie każda deklaracja jestdefinicją.
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przypisanie
Wartość zmiennej może ulegać zmianie w trakcie działaniaprogramu
Operator przypisania (=) pozwala nadać zmiennej pewnąwartość
przypisywana wartość musi oczywiście mieścić się z zakresietypu do którego należy zmenna
zmienna, której nie przypisano w programie żadnej wartości,ma wartość przypadkową
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przypisanie
Wartość zmiennej może ulegać zmianie w trakcie działaniaprogramu
Operator przypisania (=) pozwala nadać zmiennej pewnąwartośćprzypisywana wartość musi oczywiście mieścić się z zakresietypu do którego należy zmenna
zmienna, której nie przypisano w programie żadnej wartości,ma wartość przypadkową
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykład (Użycie instrukcji przypisania)
deklaracje zmiennych: int a,b,i;
i = 2;
a = 2+2;
b = a+i;weź wartość zmiennej a, dodaj do niej wartość zmiennej i, otrzymany wynik
przypisz zmiennej b
a = a + 5;weż wartość zmiennej a, dodaj do niej 5, otrzymany wynik przypisz z powrotem
zmiennej a
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykład użycia zmiennych
#include <iostream >using namespace std;int main(){
int a;int b,c;
a=3;b=6;c = a+b;
cout << "a = " << a << endl;cout << "b = " << b << endl;cout << "a + b = " << c << endl;
return 0;}
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Inicjalizacja zmiennych
Zmiennej możemy nadać wartość już w momencie jej definiowania(inicjalizacja zmiennej). Przypisywana wartość powinna mieścic sięw zakresie typu.Postać: typ zmiennej nazwa zmiennej = wyrażenie;
Przykłady
int i = 0;
float s= 2.5234 + 3.234;
int k, l=100, m;tylko jedna zmienna ma nadaną wartość początkową 100
powyższe wartości początkowe mogą być oczywiście zmienione w trakcie działania
programu
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Inicjalizacja zmiennych
Zmiennej możemy nadać wartość już w momencie jej definiowania(inicjalizacja zmiennej). Przypisywana wartość powinna mieścic sięw zakresie typu.Postać: typ zmiennej nazwa zmiennej = wyrażenie;
Przykłady
int i = 0;
float s= 2.5234 + 3.234;
int k, l=100, m;tylko jedna zmienna ma nadaną wartość początkową 100
powyższe wartości początkowe mogą być oczywiście zmienione w trakcie działania
programu
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania
Komputery, programy, języki Tworzenie programu Algorytmy Język C++ Liczby Typy liczbowe Zmienne i stałe
Przykład (inicjalizacja zmiennych,oraz C++ to nie Excel ;-) )
#include <iostream >using namespace std;int main(){int a = 3;int x, b=10;int c = a*b;
cout << "niezainicjalizowany x = " << x << endl;a = 6;cout << "a = " << a << " b = " << b << " c = " << c
<< endl; /* wartosc zmiennej a zmieniona ,wartosc c bez zmiany (nadal 30) */
return 0;}
Agata Półrola Wydział Matematyki i Informatyki UŁ
Wstęp do programowania