Algorytmy i struktury danych. wykład 1

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

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

Algorytmy i struktury danych

Typy złożone. Struktury, pola bitowe i unie. Programowanie Proceduralne 1

Wstęp do programowania

Wstęp do programowania. Różne różności

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

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

Programowanie obiektowe

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

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

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

Java Podstawy. Michał Bereta

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

MATERIAŁY DO ZAJĘĆ II

Podstawy programowania

Pracownia Komputerowa wykład VI

Język ludzki kod maszynowy

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

PODSTAWY PROGRAMOWANIA

Różności w C++ Marek Pudełko

Szablony funkcji i szablony klas

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

Mikroinformatyka. Koprocesory arytmetyczne 8087, 80187, 80287, i387

Microsoft IT Academy kurs programowania

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Wprowadzenie. Organizacja pracy i środowisko programistyczne. Mirosław Ochodek

20. Pascal i łączenie podprogramów Pascala z programem napisanym w C

Pascal - wprowadzenie

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

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

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Podstawy programowania

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

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

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

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

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

Architektura komputerów

Pracownia Komputerowa wyk ad VI

Język programowania PASCAL

Podstawy programowania w języku C

Wstęp do programowania 2

Wprowadzenie do języka Java

Podstawy programowania. Wykład Co jeszcze... Przypomnienia, uzupełnienia. Krzysztof Banaś Podstawy programowania 1

Instrukcja CREATE TABLE

Podstawy Programowania C++

Dr Michał Tanaś(

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH

Pracownia Komputerowa wykład IV

Wykład II Tablice (wstęp) Przykłady algorytmów Wstęp do języka C/C++

typ zakres sposob zapamietania shortint integer bajty (z bitem znaku) longint byte word

Ada 95 #1/5 - typy. Typy skalarne. Hierarchia typów w Adzie. Typ znakowy. Typy dyskretne. Plan wykładu

LICZBY ZMIENNOPRZECINKOWE

Wprowadzenie do szablonów klas

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Podstawy Informatyki

Ćwiczenie 2 Wczytywanie i zapisywanie do plików tekstowych

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

2 Przygotował: mgr inż. Maciej Lasota

Programowanie Komputerów

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja cz. 1

C++ wprowadzanie zmiennych

Programowanie komputerowe. Zajęcia 4

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Podstawy programowania. Wykład: 12. Struktury, unie, pola bitowe. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Program w C. wer. 12 z drobnymi modyfikacjami! Wojciech Myszka :59:

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Informatyka 1. Przetwarzanie tekstów

Wprowadzenie do szablonów szablony funkcji

Podstawy programowania. Wykład 6 Złożone typy danych: struktury, unie. Krzysztof Banaś Podstawy programowania 1

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

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

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

Programowanie współbieżne i rozproszone

Oczywiście plik musi mieć rozszerzenie *.php

Podstawy i języki programowania

Powtórka algorytmów. Wprowadzenie do języka Java.

DIAGRAMY SYNTAKTYCZNE JĘZYKA TURBO PASCAL 6.0

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

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Wprowadzenie do szablonów szablony funkcji

1 Podstawy c++ w pigułce.

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Kodowanie liczb. Reprezentacja liczb całkowitych. Standard IEEE 754. dr inż. Jarosław Forenc

1 Podstawy c++ w pigułce.

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

1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość

2018 Marcin Kukliński. Niesforne bity i bajty

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

PARADYGMATY I JĘZYKI PROGRAMOWANIA

Typy danych. Przemysław Gawroński D-10, p lutego Wykład 1. (Wykład 1) Typy danych 25 lutego / 11

Programowanie strukturalne język C - wprowadzenie

Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?

Transkrypt:

Plan całego wykładu:. Pojęcie algorytmu, projektowanie wstępujące i zstępujące, rekurencja. Klasy algorytmów. Poprawność algorytmu, złożoność obliczeniowa. Wskaźniki, dynamiczne struktury danych: listy, drzewa, drzewa wyższych rzędów, grafy, zaawansowane algorytmy grafowe. Sortowanie. Kodowanie, wyszukiwanie wzorca. Mieszanie, zapobieganie kolizji. Algorytmy numeryczne. Literatura: 1. N. Wirth Algorytmy + struktury danych = programy, 2. T.H. Cormen, C.E. Leiserson, R.L. Rivest Wprowadzenie do algorytmów.

Plan wykładu:. typ całkowity, typ zmiennoprzecinkowy, typ znakowy i tekstowy, typ wyliczeniowy i logiczny, typ tablicowy, typ wskaźnikowy, rekordy i obiekty.

Typ w języku programowania jest to definicja określająca: rodzaj, strukturę, wartości jakie może przyjąć stała, zmienna, identyfikator, argument lub wynik funkcji.

Typ w języku programowania jest to definicja określająca: rodzaj, strukturę, wartości jakie może przyjąć stała, zmienna, identyfikator, argument lub wynik funkcji. całkowity znakowy wyliczeniowy wskaźnikowy zmiennoprzecinkowy tekstowy logiczny

Typ w języku programowania jest to definicja określająca: rodzaj, strukturę, wartości jakie może przyjąć stała, zmienna, identyfikator, argument lub wynik funkcji. całkowity znakowy wyliczeniowy wskaźnikowy zmiennoprzecinkowy tekstowy logiczny tablica obiekt rekord

Typ w języku programowania jest to definicja określająca: rodzaj, strukturę, wartości jakie może przyjąć stała, zmienna, identyfikator, argument lub wynik funkcji. całkowity znakowy wyliczeniowy wskaźnikowy zmiennoprzecinkowy tekstowy logiczny 8 bitów 16 bitów 32 bity 64 bity 80 bitów 128 bitów n bitów tablica obiekt rekord

Typ w języku programowania jest to definicja określająca: rodzaj, strukturę, wartości jakie może przyjąć stała, zmienna, identyfikator, argument lub wynik funkcji. całkowity znakowy wyliczeniowy wskaźnikowy zmiennoprzecinkowy tekstowy logiczny 8 bitów 16 bitów 32 bity 64 bity 80 bitów 128 bitów n bitów tablica obiekt rekord Zakres danych zależy od długości słowa systemu obliczeniowego

Typ całkowity

- typ całkowity Typ całkowity reprezentuje liczbę całkowitą z pewnego u liczb całkowitych dodatnich i ujemnych. Standard języka C określa następujące zależności pomiędzy typami całkowitymi: typ całkowity prosty ma długość 16 bitów, typ całkowity jest co najmniej takiego u, jak typ prosty, typ całkowity rozszerzony o podwójnej precyzji ma minimum 64 bity. W praktyce współczesne kompilatory przeznaczone dla maszyn 32 bitowych stosują: typ całkowity prosty ma długość 16 bitów, typ całkowity ma 32 bity, typ całkowity rozszerzony ma 64 bity.

- typ całkowity Typy całkowite w językach programowania: Język C [unsigned] char reprezentuje: liczbę lub znak : 8 bitów : 128 do +127 (ze znakiem) 0 do +255 (bez znaku - unsigned) [unsigned] short int reprezentuje: liczbę : 16 bitów : 32 768 do +32 767 (ze znakiem) 0 do +65 535 (bez znaku) [unsigned] int, [unsigned] long int reprezentuje: liczbę : 32 bity : 2147483648 do +2147483647 (ze znak.) 0 do +4294967295 (bez znaku) [unsigned] long long int reprezentuje: liczbę : 64 bity : 9223372036854775808 do +9223372036854775807 (ze znakiem) 0 do +18446744073709551615 (bez znaku). Char reprezentuje: znak Integer reprezentuje: liczbę LongInt reprezentuje: liczbę Język Pascal : 8 bitów : #0..0-9..A-Z..a-Z..#255 tablica ASCII : 16 bitów : 32 768 do +32 767 : 32 bity : 2147483648 do +2147483647 Int64 (ObjectPascal) reprezentuje: liczbę : 64 bity : 9223372036854775808 do +9223372036854775807

- typ całkowity Przykłady użycia typów całkowitych w językach programowania: int liczba; unsigned long odleglosc; liczba = -100; odleglosc = 30000000; Język C var liczba: Integer; odleglosc: LongInt; liczba := 100; odleglosc := 30000000; Język Pascal char wartosc; wartosc = 10; wartosc = '\n'; unsigned int liczba_unsigned_int; long liczba_long; int liczba_unsigned_int = 1234; liczba_long = liczba_unsigned_int; short int liczba_short_int; liczba_short_int = -128; liczba_short_int = 127; var wartosc: Byte; wartosc := 10; var liczba_int: Integer; liczba_long: LongInt; liczba_int := 1234; liczba_long := liczba_int; var liczba_short_int: ShortInt; liczba_short_int = -128; liczba_short_int = 127;

Typ zmiennoprzecinkowy

- typ zmiennoprzecinkowy Typ zmiennoprzecinkowy reprezentuje liczbę dodatnią i ujemną z pewnego u liczb rzeczywistych. Sposób zapisu typów zmiennoprzecinkowych reguluje standard IEEE-754, jednakże istnieją praktyczne implementacje tych typów odbiegające od standardu, np. 6-bitowy typ Real z języka Pascal. Wg IEEE-754 typ float jest 32 bitowy, typ double 64 bitowy, a long double jest 80 bitowy, co odpowiada pierwszej implementacji koprocesora arytmetycznego (8087). Forma liczby zmiennoprzecinkowej jest następujący: Z=( 1) S M 2 E bias, gdzie: S znak (1 bit), M mantysa (23(single), 52(double), 64(long double) bitów), E-bias wykładnik (8, 11, 15 bitów). bias przesuniecie wykładnika (127(7Fh), 1023(3FFh) i 16383(3FFFh)).

- typ zmiennoprzecinkowy Wartości specjalne typu zmiennoprzecinkowego: Wartość NaN snan qnan Zero Znaczenie Not-a-Number wynik operacji jest niedozwolony, np. po pierwiastkowaniu wartości ujemnej. signalling NaN sygnalizowane NaN, powoduje zgłoszenie wyjątku. quiet NaN ciche NaN, przekazanie tej wartości jako argumentu nie powoduje wyjątku, stosowane np. w operacjach SSE, gdzie można ustawić, że qnan jest traktowane jako wartość dążąca do zera. rozróżnia się zero+ i zero Inf Infinite nieskończoność, rozróżnia się + i

- typ zmiennoprzecinkowy Typy zmiennoprzecinkowe w językach programowania: Język C float Single Język Pascal : co najmniej 32 bity : 7-8 cyfr, 1.5 10-45..3.4 10 38 dla 32 bitów : 32 bity : 7-8 cyfr, 1.5 10-45..3.4 10 38 double Real long double : 64 bity : 15-16 cyfr, 5.0 10-324..1.7 10 308 Extended : 48 bitów : 11-12 cyfr, 2.9 10-39..1.7 10 38 : 64-128 bitów (80 typowe implementacje) : 19-20 cyfr, 3.4 10-4932..1.1 10 4932 : 80 bitów : 19-20 cyfr, 3.4 10-4932..1.1 10 4932

- typ zmiennoprzecinkowy Przykłady użycia typów zmiennoprzecinkowych w językach programowania: float liczba_f_a; float liczba_f_b; liczba_f_a = -100.1234; liczba_f_b = 100.1234; Język C var liczba_s_a: Single; liczba_s_b: Single; liczba_s_a = -100.1234; liczba_s_b = 100.1234; Język Pascal double liczba_d_a; double liczba_d_b; float liczba_f; liczba_d_a = -123456.0987654321; liczba_f = 100.00; liczba_d_b = liczba_f; float liczba_f = 200.00; double liczba_d; long double liczba_ld_a; long double liczba_ld_b; liczba_d = liczba_f; liczba_ld_a = liczba_f * liczba_d; liczba_ld_b = liczba_ld_a; var liczba_r_a: Real; liczba_r_b: Real; liczba_s: Single; liczba_r_a = -123456.098765; liczba_s = 100.00; liczba_r_b = liczba_s; var liczba_s: Single; liczba_r: Real; liczba_e: Extended; liczba_s = 200; liczba_r = liczba_s * 123.334455; liczba_e = liczba_r;

Typ znakowy i tekstowy

- typ znakowy i tekstowy Typ znakowy służy do przechowywania znaków. Typ znakowy w językach programowania: char Język C Char Język Pascal : 8,16 bitów : tablica kodów ASCII : 8 bitów : tablica kodów ASCII W języku C typ znakowy reprezentuje jednocześnie liczbę. W zależności od implementacji typ znakowy może przechowywać znak zapisany w kodzie ASCII, Unicode, itp.

- typ znakowy i tekstowy Typ tekstowy służy do przechowywania ciągów znakowych. Typ tekstowy w językach programowania: *char, char[], char[n] Język C String, String[n] Język Pascal : ~ : tablica kodów ASCII : 256 bajtów : tablica kodów ASCII W języku C: ciąg znaków rozpoczyna się od adresu 0 i kończy znakiem #0. W języku Pascal: ciąg znaków rozpoczyna się od adresu 1, pierwszy bajt zawiera informacje o liczbie znaków w ciągu. W języku ObjectPascal: wprowadzono typ ShortString odpowiednik String z Pascala, oraz nowe typy String, AnsiString i WideString (Unicode), a także PChar odpowiednik char* z języka C.

- typ znakowy i tekstowy Przykłady użycia typów znakowego i tekstowego w językach programowania: char znak, znak = 'a'; znak = 100; Język C var znak: Char; znak = 'a'; znak := #32; Język Pascal char ciag_znakow[20] = ciąg znakowy ; char ciag_znakow[128]; strcpy(ciag_znakowy, ciąg znakowy ); char *ciag_znakow; ciag_znakow = malloc(128); strcpy(ciag_znakow, ciąg znakow ); free(ciag_znakow); var ciag_znakowy: String[20]; ciag_znakowy := ciag_znakowy ; var ciag_znakow_a: String; ciag_znakow_b: String; ciag_znakow_c: String; ciag_znakow_a := ciag znakow a ; ciag_znakow_b := ciag znakow b ; ciag_znakow_c := ciag_znakow_a + ciag_znakow_b;

Typ wyliczeniowy i logiczny

- typ wyliczeniowy i logiczny Typ wyliczeniowy określa jakie wartości może przyjmować zmienna. Typ wyliczeniowy w językach programowania: Język C enum nazwa_typu {wartość, wartość, wartość[ = liczba], }; : ~ : zbiór zawężony do zdefiniowanych wartości Język Pascal nazwa_wartości = wartość; : ~ : zbiór zawężony do zdefiniowanych wartości W językach programowania typ wyliczeniowy jest wykorzystywany do poprawy czytelności kodu. Ponadto pozwala na tworzenie stałych w czasie kompilacji.

- typ wyliczeniowy i logiczny Typ logiczny typ określający wartości typu prawda lub fałsz. Typ logiczny w językach programowania: bool Język C Boolean Język Pascal : 1 bajt : 0 lub dowolna wartość niezerowa : 1 bajt : true, false W języku C typ logiczny może nie być jawnie zdefiniowany. Ponadto odpowiednikiem wartości nieprawdziwej jest wartość liczbowa 0, a każda wartość inna niż zero traktowana jest jako prawda.

- typ wyliczeniowy i logiczny Przykłady użycia typów wyliczeniowego i logicznego w językach programowania: bool znacznik, znacznik = 0; znacznik = FALSE; znacznik = TRUE; znacznik = 1; enum Boolean { true, false }; Boolean znacznik; znacznik = true; znacznik = false; Język C enum Tydzien { nie, pon, wto, sro, czw, pia, sob }; Tydzien dzien; dzien = pon; var znacznik: Boolean; znacznik := true; znacznik := false;; type Bool = { true, false }; var znacznik: Bool; znacznik := true; znacznik := false; Język Pascal type Tydzien = { nie, pon, wto, sro, czw, pia, sob }; var dzien: Tydzien; dzien := nie; dzien := czw;

Typ tablicowy

- typ tablicowy Typ tablicowy służy do reprezentacji tablic danych. Typ tablicowy w językach programowania: typ nazwa_tablicy[n] Język C Język Pascal nazwa_tablicy: array[n..m] of typ; : n słów o ze typu danych tablicy : zmiennych typu danych tablicy : n słów o ze typu danych tablicy : zmiennych typu danych tablicy W języku C zmienna tablicowa jest jednocześnie adresem pierwszego elementu tablicy. Ponadto tablica jest indeksowana od 0 do n-1. W języku Pascal indeksowanie tablicy przebiega od n do m. W obu przypadkach jako indeksy można stosować dowolne typy całkowite lub wyliczeniowe.

- typ tablicowy Przykłady deklaracji typu tablicowego w językach programowania: typedef char tab[11]; tab T; T[0] = 'a'; T[9] = 'b'; Język C Język Pascal type tab = array[0..10] of Char; var T: tab; T[0] := 'a'; T[9] := 'b'; typedef int tab[128][2]; tab L; L[0][0] = 1; L[0][1] = 2; L[1][0] = 2; L[1][1] = 2; L[2][0] = 3; L[2][1] = 2; typedef char String[256]; String ciag; ciag = abc ; type tab = array[-10..20,1..2] of Integer; var L: tab; L[-10,1] := 1; L[-10,2] := 2; L[1,1] := 2; L[1,2] := 2; L[20,1] := 3; L[20,2] := 2; type String = array[0..255] of Char; var ciag: String; ciag := 'abc';

Typ wskaźnikowy

- typ wskaźnikowy Typ wskaźnikowy służy do przechowywania adresu pamięci. Typ wskaźnikowy w językach programowania: * Język C Pointer Język Pascal : ~ : ~ : ~ : ~ Rozmiar i wartości typów wskaźnikowych zależą od: architektury systemu komputerowego, systemu operacyjnego, kompilatora programów.

- typ wskaźnikowy Przykłady użycia typu wskaźnikowego w językach programowania: Język C int *wsk_int; int liczba = 100; wsk_int = &liczba; *wsk_int = 200; // liczba jest równa 200 Język Pascal var wsk_int: Pointer; const liczba: Integer := 100; wsk_int := @liczba; wsk_int^ := 200; // liczba jest równa 200 char *wsk_tab; char tab[100] = ciag znakow ; wsk_tab = tab; // lub *wsk_tab = &(tab[0]); wsk_tab[10] = 'i'; wsk_tab[11] = ' '; // tab zawiera ciag znaki *(wsk_tab+1) = 'C'; // tab zawiera Ciag znaki var PChar: Pointer; tab: array[0..99] of Char; PChar := @tab; PChar^[10] := 'i'; PChar^[11] := ' '; // tab zawiera ciag znaki

Rekordy i obiekty

- rekordy i obiekty Struktury/rekordy służą do reprezentowania typów składających się ze zmiennych różnych typów. Typ rekordowy w językach programowania: Język C struct nazwa {typ pola, typ pole }; Język Pascal nazwa = record pole:typ; pole:typ; end; : suma ów zmiennych : ~ : suma ów zmiennych : ~ Przykłady deklaracji typu rekordowego w językach programowania: Język C struct osoba { char imie[20]; char nazwisko[20]; int wiek; }; osoba os; strcpy(&os.imie, Jan ); strcpy(&os.nazwisko, Kowalski ); os.wiek = 33; type osoba = record imie: String; nazwisko: String; wiek: Integer; end; var os: osoba; os.imie := Jan ; os.nazwisko := Kowalski ; os.wiek := 33; Język Pascal

- rekordy i obiekty Obiekty są to złożone struktury danych zawierające pola (zmienne) oraz metody (funkcje) przetwarzające dane pobierane z pól. Typ obiektowy w językach programowania: Język C class nazwa_typu { [private:][protected:][public:] typ pole; typ pole; [definicja constructor'a;] [definicja destructor'a;] [definicja funkcji;] [definicja funkcji;] }; : suma ów zmiennych : ~ Język Pascal nazwa = object [private:][protected:][public:] pole: typ; pole: typ; [definicja constructor'a;] [definicja destructor'a;] [definicja funkcji;] [definicja funkcji;] end; : suma ów zmiennych : ~ Pod względem funkcjonalnym obiekt przypomina rekord/strukturę, jednak w obiektach występują mechanizmy dziedziczenia, hermetyzacji, ochrony itp..

Koniec wykładu