Wstęp do programowania. Dariusz Wardecki, wyk. III

Podobne dokumenty
Pracownia komputerowa. Dariusz Wardecki, wyk. VI

Pracownia komputerowa. Dariusz Wardecki, wyk. V

Pracownia komputerowa

Wstęp do programowania. Dariusz Wardecki, wyk. V

Pracownia Komputerowa wyk ad VI

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

Pracownia komputerowa. Dariusz Wardecki, wyk. VIII

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

Pracownia komputerowa. Dariusz Wardecki, wyk. IV

C++ wprowadzanie zmiennych

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Pracownia Komputerowa wykład VI

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy

Podstawy Informatyki. Metalurgia, I rok. Wykład 3 Liczby w komputerze

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy Instrukcja selekcji if-else

Liczby rzeczywiste są reprezentowane w komputerze przez liczby zmiennopozycyjne. Liczbę k można przedstawid w postaci:

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

Pracownia Komputerowa wyk ad V

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

Wstęp do programowania, część I

Podstawy programowania w języku C i C++

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory

Teoretyczne Podstawy Informatyki

2 Przygotował: mgr inż. Maciej Lasota

Wstęp do programowania. Dariusz Wardecki, wyk. VI

Podstawy programowania. 1. Operacje arytmetyczne Operacja arytmetyczna jest opisywana za pomocą znaku operacji i jednego lub dwóch wyrażeń.

Podstawy Informatyki

Typ użyty w deklaracji zmiennej decyduje o rodzaju informacji, a nazwa zmiennej symbolicznie opisuje wartość.

Kod IEEE754. IEEE754 (1985) - norma dotycząca zapisu binarnego liczb zmiennopozycyjnych (pojedynczej precyzji) Liczbę binarną o postaci

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

Architektura komputerów

Operatory. Operatory bitowe i uzupełnienie informacji o pozostałych operatorach. Programowanie Proceduralne 1

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

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

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

Programowanie. Dariusz Wardecki, wyk. II. wtorek, 26 lutego 13

Języki i paradygmaty programowania

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

Pracownia Komputerowa wykład IV

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

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 2 WSTĘP DO INFORMATYKI

1. Operacje logiczne A B A OR B

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

/* dołączenie pliku nagłówkowego zawierającego deklaracje symboli dla wykorzystywanego mikrokontrolera */ #include <aduc834.h>

Java Podstawy. Michał Bereta

Systemy zapisu liczb.

Arytmetyka liczb binarnych

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

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

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

Algorytmy i struktury danych. wykład 1

Język ludzki kod maszynowy

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

Zmienne, stałe i operatory

Programowanie komputerowe. Zajęcia 1

Pracownia Komputerowa wykład V

Operatory AND, OR, NOT, XOR Opracował: Andrzej Nowak Bibliografia:

Wstęp do programowania

Pozycyjny system liczbowy

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

Technologie Informacyjne

Wstęp do programowania. Dariusz Wardecki, wyk. X

Wstęp do informatyki- wykład 2

Wstęp do programowania. Dariusz Wardecki, wyk. I

3. Instrukcje warunkowe

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Część 4 życie programu

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Naturalny kod binarny (NKB)

Mikrokontroler ATmega32. Język symboliczny

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

System Liczbowe. Szesnastkowy ( heksadecymalny)

Pracownia Komputerowa wyk ad IV

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Wstęp do programowania

Wstęp do Programowania 2

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

1.1. Pozycyjne systemy liczbowe

2018 Marcin Kukliński. Niesforne bity i bajty

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

dr inż. Jarosław Forenc

Język C zajęcia nr 11. Funkcje

Technologie Informacyjne Wykład 4

ARCHITEKTURA KOMPUTERÓW Liczby zmiennoprzecinkowe

Podstawy Informatyki. Wykład 2. Reprezentacja liczb w komputerze

Podstawy i języki programowania

1 Podstawy c++ w pigułce.

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

SYSTEMY LICZBOWE 275,538 =

Transkrypt:

Wstęp do programowania Dariusz Wardecki, wyk. III

Funkcje w C++ Funkcja (ang. function) Wyróøniona czíúê kodu üród owego, stanowiπca odríbnπ ca oúê, sk adajπca sií z treúci (ang. body) oraz nag ówka (ang. header). TreúÊ funkcji (ang. function body) Blok, którego sposób wykonywania w ogólnoúci zaleøy od pewnej liczby wartoúci, zwanych parametrami lub argumentami funkcji, pochodzπcych z innych czíúci programu i koòczy sií wygenerowaniem wyniku (ang. result), przeznaczonego do wykorzystania w innych czíúciach programu. Nag ówek funkcji (ang. function header) CzÍúÊ definicji funkcji okreúlajπca typ danych dla wyniku, nazwí funkcji oraz listí jej argumentów.

Funkcje w C++ Przyk ad definicji funkcji int main() { cout << "Napis" << endl; return 0; // Instrukcja. } // Instrukcja. Ta funkcja ma nastípujπce w asnoúci: 1 Generowany (zwracany) przez niπ wynik jest typu int. 2 Jej nazwπ jest main. 3 Lista jej argumentów jest pusta. 4 Zawsze zwraca wynik 0.

Funkcje w C++ 1 Kaøda funkcja wykorzystywana w programie musi byê zdefiniowana lub dostípna w pewnej bibliotece (ang. library). 2 Dla funkcji z bibliotek w programie umieszcza sií same nag ówki. Plik nag ówkowy (ang. header file) Plik zawierajπcy nag ówki funkcji dostípnych w bibliotekach oraz deklaracje sta ych i zmiennych, a takøe definicje z oøonych typów danych. W πczanie plików nag ówkowych do kodu üród owego Do tego celu s uøy dyrektywa#include, np.#include <iostream> (nawiasy < oraz > oznaczajπ, øe plikpowinienznajdowaê sií wjednymz systemowych katalogów z plikami nag ówkowymi).

Funkcje w C++ #include<iostream> #define PI 3.141592 using namespace std; double pole(double x) { double P; P = PI*x*x; return P; } int main() { double r; cout << Podaj promień: << endl; cin >> r; cout << Pole wynosi: << pole(r) << endl; return 0; }

#include<iostream> #define PI 3.141592 using namespace std; double pole(double x); Funkcje w C++ int main() { double r; cout << Podaj promień: << endl; cin >> r; cout << Pole wynosi: << pole(r) << endl; return 0; } double pole(double x) { double P; P = PI*x*x; return P; }

Funkcje w C++ #include<iostream> #define PI 3.141592 #include pole.h //Wazna kolejnosc! using namespace std; int main() { double r; cout << Podaj promień: << endl; cin >> r; cout << Pole wynosi: << pole(r) << endl; return 0; }

Typy danych Dla s owa N-bitowego 1 1 011010...010111 0 b N 1 b N 2 b 1 1 b j bit (cyfra binarna) na pozycji j = 0, 1,...,N 1 Waga bitu odpowiada jego pozycji w s owie: b 0 najmniej znaczπcy (najm odszy) bit. b N 1 najbardziej znaczπcy (najstarszy) bit. b 0 Typ danych (ang. data type) Okreúla rozmiary danych (np. jaka liczba bitów ma byê wykorzystywana do zapisania znaku) oraz interpretacjí zapisu binarnego (tzn. jakie ma byê znaczenie poszczególnych bitów).

Reprezentacja bezznakowa liczb całkowitych b nieujemna liczba ca kowita b = N 1 ÿ j=0 b j 2 j = b N 1 2 N 1 + b N 2 2 N 2 +...+ b 1 2 1 + b 0 2 0 Typy danych dla reprezentacji bezznakowej N = 8 : od 0 do 255 = 2 8 1 N = 16 : od 0 do 65535 = 2 16 1 N = 32 :od0do2 32 1 N = 64 :od0do2 64 1 N = 128 :od0do2 128 1

Liczby całkowite ujemne Propozycja: 00111001 (+57) + 10001101 (-13) ---------- 11000110 (-69)

Liczby całkowite ujemne Propozycja: 00001110 00111001 (+14) (+57) + 1xxxxxxx 10001101 (-14) (-13) ---------- 00000000 ( 0)

Reprezentacja uzupełnień do 2 Uzupełnieniem dwójkowym liczby x zapisanej za pomocą n bitów nazywamy liczbę: x u2 =2 n x Przykłady x = 0101,x u2 =2 4 0101 = 10000 0101 = 1011 x = 1011,x u2 =2 4 1011 = 10000 1011 = 0101

Liczby całkowite ujemne Rozwiązanie: 00001110 00111001 (+14) (+57) + 11110010 10001101 (-14) (-13) ---------- 00000000 ( 0) DEC ZNAK-MOD Rep. U2 +7 0111 0111 +6 0110 0110 +5 0101 0101 +4 0100 0100 +3 0011 0011 +2 0010 0010 +1 0001 0001 +0 0000 0000-0 1000 -- -1 1001 1111-2 1010 1110-3 1011 1101-4 1100 1100-5 1101 1011-6 1110 1010-7 1111 1001-8 -- 1000

Liczby całkowite ÿujemne Typy danych dla reprezentacji uzupe nienia do 2 N = 8 :od 2 7 = 128 do 127 = 2 7 1 N = 16 :od 2 15 = 32768 do 32767 = 2 15 1 N = 32 :od 2 31 do 2 31 1 N = 64 :od 2 63 do 2 63 1 N = 128 :od 2 127 do 2 127 1

Własności reprezentacji uzupełnienia do 2 Tylko liczby ca kowite (mogπ byê ujemne). Dodawanie i odejmowanie jak dla reprezentacji bezznakowej. MoøliwoúÊ wystπpienia przepe nienia (w innych okolicznoúciach, niø dla reprezentacji bezznakowej). Przy danej liczbie bitów najwiíksza wartoúê jest o po owí mniejsza od najwiíkszej wartoúci dla analogicznego typu danych w reprezentacji bezznakowej.

Reprezentacja liczb rzeczywistych Notacja naukowa 4.56 10 14 = 456 10 16 =0.456 10 13 Reprezentacja zmiennoprzecinkowa (ang. floating point)

Reprezentacja liczb rzeczywistych z m M B Z cc gdzie: M - mantysa, C - wykładnik (cecha), B - podstawa, z - znak mantysy i podstawy. z m M 2 Z cc W sys. binarnym z m M 2 C K c Kc - stała

Reprezentacja liczb rzeczywistych Ułamki w systemie binarnym 65.872 (dec) 6 10 1 +5 10 0 +8 10 1 +7 10 2 +2 10 3 5.25 (dec) = 101.01 (bin) 1 2 2 +0 2 1 +1 2 0 +0 2 1 +1 2 2

Reprezentacja liczb rzeczywistych 65 10 =? 2 65%2 = 1 32%2 = 0 16%2 = 0 8%2 = 0 4%2 = 0 2%2 = 0 65.40625 10 =? 2 0.40625*2 = 0.8125 0.8125*2 = 1.625 0.625*2 = 1.25 0.25*2 = 0.5 0.5*2 = 1.0 1%2 = 1 65.40625 (dec) = 1000001.01101 (bin)

Reprezentacja liczb Normowanie mentysy rzeczywistych 1.0 apple M apple 2.0 1.b n...b 0 Przykład - 8 bitów, Kc = 7 Z C C C C M M M 00000000 = 1.0000*2e-7 = 0.0078125 01111111 = 1.8750*2e+8 = 480

Reprezentacja liczb rzeczywistych Dostępne zakresy: niedomiar dodatni przepełnienie dodatnie -480-0.0078125 0 +0.0078125 +480 przepełnienie ujemne niedomiar ujemny

Reprezentacja liczb rzeczywistych Istnieje wiele reprezentacji dla tej samej d ugoúci s owa 1 Dok adnoúê zaleøy odd ugoúci (liczby bitów) mantysy. 2 Zakres wartoúci zaleøy odd ugoúci (liczby bitów) wyk adnika. 3 Przy przeprowadzaniu operacji wyniki zaokrπgla sií tak, aby moøna je by o zapisaê z pomocπ wybranej liczby bitów mantysy i wyk adnika. Problem niezgodnoúci miídzy róønymi reprezentacjami zosta rozwiπzany poprzez wprowadzenie miídzynarodowej normy standard IEEE 754.

Standard IEEE 754 Reprezentacja 32 bitowa Kc = 127

Standard IEEE 754 Pojedyńcza precyzja (ang. single precision) r = ±S r 2 W r 1 S owo 32-bitowe. 2 b 31 =znak. 3 b 30...b 23 = W r (od 126 do 127). 4 PostaÊ znormalizowana: S r = 1 + 23 ÿ j=1 b 23 j 2 j

Standard IEEE 754 Podwójna precyzja (ang. double precision) r = ±S r 2 W r 1 S owo 64-bitowe. 2 b 63 =znak. 3 b 62...b 52 = W r (od 1022 do 1023). 4 PostaÊ znormalizowana: S r = 1 + 52 ÿ j=1 b 52 j 2 j

Standard IEEE 754 Wartości specjalne Reprezentacje 0 i Œ 1 Liczba 0 jest reprezentowana przez s owo, w którym wszystkie bity mantysy i wyk adnika sπ zerami (dwie reprezentacje liczby 0). 2 ±Œ jest reprezentowana przez s owo, w którym wszystkie bity wyk adnika sπ jednykami a wszystkie bity mantysy zerami. NaN (ang. Not a Number) Dla reprezentacji zmiennoprzecinkowej ciπg bitów nie reprezentujπcy liczby (W r zawiera ciπg jedynek,s r zawiera co najmniej jednπ jedynkí).

ÿ Typy danych Typy danych dla reprezentacji bezznakowej N = 8 : unsigned char (od 0 do 255 = 2 8 1) N = 16 : unsigned short int (od 0 do 65535 = 2 16 1) N = 32 : unsigned int (od 0 do 2 32 1) N = 64 : unsigned ÿ long long int (od 0 do 2 64 1), dla procesorów 64-bitowych równowaøny unsigned long int. Typy danych dla reprezentacji uzupe nienia do 2 N = 8 : char (od 2 7 = 128 do 127 = 2 7 1) N = 16 : short int (od 2 15 = 32768 do 32767 = 2 15 1) N = 32 : int (od 2 31 do 2 31 1) N = 64 : long int lub long long int (od 2 63 do 2 63 1) Dla procesorów 32-bitowych z rodziny x86 typ long int jest równowaøny typowi int.

Typ bool owski bool Typ danych reprezentujπcy wartoúci wyraøeò, w których wystípujπ spójniki logiczne i operacje porównania. Zmienne tego typu mogπ przyjmowaê dwie wartoúci, true oraz false. Zwiπzek typu bool ztypamiliczbowymi WartoúÊ o dowolnym liczbowym typie danych moøe zastípowaê wartoúê typu bool. Wówczas wartoúê liczbowa 0 odpowiada wartoúci false typu bool, natomiast kaøda liczbowa wartoúê róøna od 0 odpowiada wartoúci true typu bool.

Wyrażenia Wyraøenia reprezentujπ obliczenia Zawierajπ one: 1 Symbole reprezentujπce wartoúci do wykorzystania w obliczeniach. Litera y. Zmienne (nazwy zmiennych). Sta e (nazwysta ych). 2 Wywo ania funkcji, z których pochodzπ wartoúci do wykorzystania w obliczeniach, np. s = sin(x); 3 Operatory. Okreúlonπ kolejnoúê przeprowadzania obliczeò moøna wymusiê stosujπc nawiasy okrπg e (tzn. nawiasy okrπg e s uøπ do grupowania sk adników wyraøenia). Innych rodzajów nawiasów nie uøywa sií do tego celu.

Zapis liczb całkowitych 1 System dziesiítny. Pierwsza cyfra nie moøe byê zerem! 2 System szesnastkowy. 0x jako prefiks. Cyfry 0... 9 i litery A... F (lub a... f) reprezentujπ wagi 0... 9 i 10... 15, odpowiednio. Np. zapis 0x1FF oznacza liczbí 511. 3 System ósemkowy. 0 jako prefiks. Cyfry 0... 7 reprezentujπ wagi 0... 7, odpowiednio. Np. zapis 0111 oznacza liczbí 73.

Zapis liczb niecałkowitych 1 Notacja z kropkπ dziesiítnπ. Jeúli zapis zaczyna sií od kropki, to czíúê ca kowita jest równa 0 (np..5). Jeúli zapis koòczy sií kropkπ, toczíúê u amkowa jest równa 0 (np. 1.). 2 Notacja naukowa. Liczba w notacji z kropkπ, literae lub e, liczbaca kowita. E lub e oznacza mnoøenie przez 10 do pewnej ca kowitej potígi. Liczba ca kowita jest wyk adnikiem. Np. 1.0e3 oznacza liczbí 1000. Np. 1.0e-2 oznacza liczbí 0,01.

Operatory Operator Symbol reprezentujπcy operacjí do przeprowadzenia. Rodzaje operatorów w C++ Arytmetyczne. Bitowe (ang. bit pattern). Porównania. Logiczne (ang. boolean). Operator trójargumentowy. Wskaünikowe (ang. pointer).

Operatory arytmetyczne Jednoargumentowy operator arytmetyczny - :zmiana znaku wartoúci (po prawej stronie). Dwuargumentowe operatory arytmetyczne + :dodawanie. - :odejmowanie. * :mnoøenie. / : dzielenie(jeúli argumenty sπ ca kowite, reszta z dzielenia jest odrzucana). % :resztazdzielenia.

Operatory bitowe Argumenty operatora sπ traktowane jako wzory bitowe (ang. bit pattern). Jednoargumentowy operator bitowy ~ : negacja wszystkich bitów argumentu (po prawej stronie). Np. jeúli zmienna jest typu, to po wykonaniu instrukcji Dwuargumentowe operatory bitowe :sumabitowa(or). & :iloczynbitowy(and). ^ :róønica symetryczna (XOR). << :przesuniície bitowe w lewo. >> :przesuniície bitowe w prawo.

Operatory bitowe OR, suma bitowa n = 12 10; // 1100 1010 = 1110 AND, iloczyn bitowy m = 12 & 10; // 1100 & 1010 = 1000 XOR, róønica symetryczna k = 12 ^ 10; // 1100 ^ 1010 = 0110

Operatory bitowe PrzesuniÍcie bitowe w lewo (ang. left shift) y = x << k; 1 Dla wszystkich pozycji bitowych j = N 1, N 2,...,k skopiuj na tí pozycjí bit z pozycji (j k). 2 Na pozycje bitowe 0, 1,...,k 1 wstaw zera. k PrzesuniÍcie bitowe w prawo (ang. right shift) y = x >> k; 1 Dla wszystkich pozycji bitowych j = 0, 1,...,N k 1 skopiuj na tí pozycjí bit z pozycji (j + k). 2 Na pozycje bitowe N 1, N 2,...,N k wstaw zera. k

Operatory porównania == :testrównoúci argumentów.!= :testnierównoúci argumentów. < :mniejsze. <= :mniejszelubrówne. > :wiíksze. >= :wiíksze lub równe. Dla operatorów porównania wynik operacji jest zawsze typu bool.