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

Podobne dokumenty
Wykład 4. Tablice. Pliki

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

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

2 Przygotował: mgr inż. Maciej Lasota

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

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

Zmienne, stałe i operatory

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

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

Język ludzki kod maszynowy

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

Język C zajęcia nr 11. Funkcje

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

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

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

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

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

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

Programowanie Komputerów

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

Algorytmika i Programowanie VBA 1 - podstawy

Oczywiście plik musi mieć rozszerzenie *.php

Java Podstawy. Michał Bereta

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Obliczenia, zmienne. Proste działania, zmienne, rodzaje zmiennych, proste operacje i działania na zmiennych.

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

ZMIENNE. Podstawy PHP

Programowanie obiektowe

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

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Część 4 życie programu

Lab 9 Podstawy Programowania

Arytmetyka liczb binarnych

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

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

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

Wykład 2 Składnia języka C# (cz. 1)

Wydział Zarządzania AGH. Katedra Informatyki Stosowanej. Podstawy VBA cz. 2. Programowanie komputerowe

Typy danych, zmienne i tablice. Tomasz Borzyszkowski

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

1. Wprowadzenie do języka PHP

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

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

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Podstawy programowania C. dr. Krystyna Łapin

Podstawy programowania w języku C

KOTLIN. Język programowania dla Androida

MATERIAŁY DO ZAJĘĆ II

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

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

Podstawy i języki programowania

Tablice, funkcje - wprowadzenie

Programowanie Niskopoziomowe

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

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

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

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

C++ wprowadzanie zmiennych

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

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

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

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

1 Podstawy c++ w pigułce.

Kiedy i czy konieczne?

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

Język C część 1. Sformułuj problem Zanalizuj go znajdź metodę rozwiązania (pomocny może byd algorytm) Napisz program Uruchom i przetestuj czy działa

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Algorytmy i struktury danych. wykład 1

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

Biblioteka standardowa - operacje wejścia/wyjścia

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

Wprowadzenie do języka Java

Podstawy programowania w języku C i C++

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

Podstawy programowania. Wykład 6 Wskaźniki. Krzysztof Banaś Podstawy programowania 1

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Tranzystor JFET i MOSFET zas. działania

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

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Visual Basic for Application (VBA)

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

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

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

Wstęp do wskaźników w języku ANSI C

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

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

Proces tworzenia programu:

dr inż. Jarosław Forenc

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

Pracownia Komputerowa wykład IV

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania

Języki programowania C i C++ Wykład: Typy zmiennych c.d. Operatory Funkcje. dr Artur Bartoszewski - Języki C i C++, sem.

Platformy Programistyczne Podstawy języka Java

Visual Basic for Application (VBA)

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Wstęp do Programowania, laboratorium 02

Transkrypt:

Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1

Plan wykładu Typy danych języka Java Operacje arytmetyczne oraz tekstowe Konwersja typów danych Zmienne Instrukcja przypisania Wczytywanie danych z klawiatury Obsługa sytuacji wyjątkowych 2

Pojęcie typu danych Algorytmy operują na danych różnych typów: tekstowe, liczbowe, znakowe, itp. Program jest komputerową realizacją algorytmu więc powinien umieć przechowywać oraz przetwarzać te dane Typ danych = kategoria obiektu Typ danych określa m. innymi: Rodzaj przechowywanych wartości Operacje dozwolone dla danych tego typu 3

Podstawowe typy danych W większości języków programowania występują dane następujących typów: Liczba (całkowite, rzeczywiste, etc.) Tekst Znak Data i godzina Wartość logiczna Plik 4

Wszystko jest liczbą! Obszar pamięci w komputerze 0 1 0 0 0 0 0 1 Zapis binarny 65 Jako liczba całkowita 'A' Jako znak 8,125 fałsz prawda fałsz Jako liczba rzeczywista (przy założeniu że 3 ostatnie bity stanowią część ułamkową) Jako tablica wartości logicznych Typ danych określa sposób interpretacji danych zapisanych w pamięci komputera 5

Podstawowe typy danych Java Typ danych Opis Przykładowe wartości int, short, byte Liczba całkowita 10, -2, 0 double, float Liczba rzeczywista -13.5, 2.009, 0.0 char Pojedynczy znak 'a', '1', '\t' boolean Wartość boolowska (logiczna) true, false String Tekst (łańcuch znaków) "Witam", "10", "" Typ danych String jest typem złożonym (z elementów char), pozostałe typy danych są proste (niepodzielne) 6

Liczby całkowite Typ danych: int, short, long, byte (proste, niepodzielne) Klasa: Integer, Short, Long, Byte (metody pomocnicze) Znak: dodatnie, ujemne Rozmiar w pamięci: od 1 do 8 bajtów Wartość domyślna: 0 Wartości minimalne / maksymalne: Integer.MAX_VALUE, Short.MIN_VALUE, etc. znak Bajt 3 Bajt 2 Bajt 1 Bajt 0 Przykładowa reprezentacja INT w pamięci komputera 7

Liczby rzeczywiste Typ danych: float / double (prosty, niepodzielny) Klasa: Float / Double Znak: dodatnie, ujemnie Struktura danych: 4 bajty / 8 bajtów Wartość domyślna: 0.0 Wartości minimalne / maksymalne: Float.MAX_VALUE, Double.MIN_VALUE z Bajt 7 Bajt 1 Bajt 0 Przykładowa struktura typu danych double 8

Znakowy typ danych Nazwa typu danych: char Reprezentuje pojedynczy znak (liczba, cyfra, znak specjalny etc.) Klasa: Char Nie ma wartości pustej (!) Wartości są zapisywane w apostrofach: np. '$' Operacje: Porównanie (wg kodu znaku) Wartości minimalne / maksymalne: nie dotyczy 65 (dec) A 0100 0001 9

Wybrane kody znaków ASCII Kod Znak Kod Znak 9 TAB 97 a 10 Line Feed 98 b 13 Carriage Return 32 SPACE 48 0 (zero) 49 1 65 A 66 B 10

Operacje na liczbach Operacja Znak Przykład dodawanie + 1 + 3 odejmowanie - 2-5 mnożenie * 3 * 4.5 dzielenie / 10 / 3 reszta z dzielenia % 10 % 3 Typ wyniku operacji arytmetycznej zależy od typów jej argumentów: - Jeśli typy są jednakowe, typ wyniku jest taki sam - Jeśli typy są różne, typ wyniku z reguły jest bardziej ogólny 11

Łańcuchy tekstowe Typ danych: String (złożony) Struktura danych: tablica znaków Char Wartość domyślna: null Wartości minimalne / maksymalne: n. d. Rozmiar w pamięci: zmienny W i t a m 4 3 2 1 0 Bajt 12

Operacje na łańcuchach tekstowych Operacja konkatenacji (złączenia) A = B + C gdzie A, B, C reprezentują typ danych String Operacje zdefiniowane w klasie String: wyszukiwanie, skracanie, wycinanie segmentu, etc. startswith, charat, substring, etc. 13

Typ danych boolean Boolowski ( logiczny ) typ danych Składa się z dwóch wartości TRUE FALSE Wartość boolowska może być generowana w procesie wykonania operacji porównania Np. wyrażenie 2 > 4 ma wartość false 14

Operacje porównania Operacja A < B A > B A <= B A >= B A == B A!= B Opis czy A jest mniejsze od B czy A jest większe od B czy A jest mniejsze lub równe B czy A jest większe lub równe B czy A jest równe B czy A jest różne od B 15

Operacje typu danych boolean Zapis Operacja Opis A B A && B LUB (OR) ORAZ (AND) Suma boolowska Iloczyn boolowski! A NIE (NOT) Negacja (zaprzeczenie) 16

Tablica wartości operacji boolowskich X Operacja Y Wynik false ORAZ (AND) false false false ORAZ (AND) true false true ORAZ (AND) true true false OR (LUB) false false false OR (LUB) true true true OR (LUB) true true NOT (NIE) false true NOT (NIE) true false 17

Algebra Boole a Dla wartości boolowskich X, Y, Z poprawne są stwierdzenia X AND true = X X OR true = true X OR ( X AND Y ) = X X AND ( X OR Y ) = X X AND ( NOT X ) = 0 X OR ( NOT X ) = 1 18

Prawa De Morgana NOT ( X OR Y ) = (NOT X) AND (NOT Y) NOT ( X AND Y ) = (NOT X) OR (NOT Y) Przykład: czemu równa się wartość wyrażenia boolowskiego X = ( true AND (false OR false) ) OR ( false OR (NOT true) ) 19

Wyrażenia arytmetyczne Wyrażenia arytmetyczne są zapisywane w formie podobnej do matematycznej: 10 * (2 + 6 / (5 3)) Należy uwzględniać priorytety operacji (standardowo) oraz korzystać z nawiasów okrągłych w celu zmiany domyślnej kolejności wykonania obliczeń Złożone operacje matematyczne są realizowane poprzez funkcje z biblioteki Math (np. Math.sqrt) 20

Zmienne Zmienna obiekt w programie przeznaczony do tymczasowego przechowywania wartości określonego typu Nazwa zmiennej umożliwia jej wykorzystanie w programie Typ danych określa rodzaj przechowywanej wartości Zasięg zmiennej miejsce w programie gdzie zmienna jest widoczna dla pozostałych instrukcji 21

Zmienna double k = 10.25; // deklaracja zmiennej w programie k Nazwa zmiennej Obszar w pamięci komputera 10.25 Typ danych (double) Wartość bieżąca typu double 22

Deklaracja zmiennej Każda zmienna w programie powinna być zadeklarowana przed jej użyciem Deklaracja zmiennej polega na wskazaniu: Nazwy zmiennej Typu danych oraz opcjonalnie wartości początkowej Jednocześnie można deklarować kilka zmiennych tego samego typu 23

Deklaracja zmiennej, Typ danych Nazwa zmiennej ; = Wartość 24

Przykłady deklaracji zmiennej int a; double b, c; float d = 0.5f; boolean e, f = false; 25

Operacja przypisania wartości Wyrażenie A = B w programowaniu Java oznacza kopiowanie wartości obiektu B do zmiennej A Obiektem po prawej stronie może być: Wartość stała Wyrażenie arytmetyczne Zmienna Metoda zwracająca wartość itp. Obiektem po lewej stronie może być tylko zmienna Oba obiekty muszą reprezentować identyczne lub kompatybilne typy danych (typ B musi się konwertować na typ A) 26

Operacja przypisania wartości Zmienna A Zmienna B 10 6 Przed wykonaniem instrukcji A = B Po wykonaniu instrukcji A = B Kopiowanie wartości 6 6 10 Utracona dotychczasowa wartość 27

Przykłady przypisania wartości Oblicz wartości zmiennych x, y po wykonaniu fragmentu kodu: int x = 10, y = 15; y = x + 5; x = y 10; 28

Skrócony zapis operacji Skrócony zapis A ++ A -- ++A -- A A += B A-=B A *= B A /= B Pełny zapis A = A + 1 A = A 1 A = A + 1 A = A - 1 A = A + B A = A B A = A * B A = A / B Operacje ++A oraz A++ różnią się wyłącznie wtedy gdy są częścią większego wyrażenia: operacja ++A w momencie obliczenia już ma wartość A+1, zaś operacja A++ ma wartość A i dopiero po ukończeniu obliczeń zostanie zwiększona o 1 29

Zasięg zmiennej Zasięg obszar w programie, na którym zmienna jest widoczna dla innych obiektów Nie można korzystać ze zmiennej będącej poza zasięgiem Zasięg zmiennej określa miejsce jej definicji: Klasa zmienna dostępna dla całej klasy (zmienna globalna klasy) Metoda zmienna dostępna tylko w funkcji (zmienna lokalna metody) Blok instrukcji zmienna dostępna tylko wewnątrz bloku nawiasów {. } (zmienna lokalna) 30

Zasięg zmiennej (c.d.) Zmienna zadeklarowana w klasie, jest dostępna dla wszystkich metod klasy Zmienna zadeklarowana w metodzie jest dostępna dla wszystkich następnych instrukcji metody oraz konstrukcji { } włożonych Zmienna zadeklarowana w bloku instrukcji { } jest widoczna w jego obszarze oraz dla włożonych konstrukcji blokowych {. } 31

Przesłanianie nazwy zmiennej Zmienna zadeklarowana lokalnie zawsze przesłania zmienną o tej samej nazwie zadeklarowaną wyżej w hierarchii Może prowadzić do poważnych komplikacji w czasie wykonania Na jednym poziomie hierarchii programu nie można zadeklarować dwóch zmiennych o tej samej nazwie 32

Zasięg zmiennej (c.d.) int A; void Fn { // poziom klasy float B=5; if(a<b){ // poziom metody A B C } } double C; C = A * B; // poziom bloku instrukcji B = A / 2; B = C / 2; A = Math.sqrt( 25 ); A = B + 3.0; 33

Konwersja typów danych Operacja przypisania wartości A = B zakłada że obiekty A i B mają identyczny lub kompatybilny typ danych Czasem zachodzi jednak konieczność wykonania takiej operacji na obiektach odmiennych typów Mówimy wówczas o konwersji typu danych B na typ danych A Zmienna typu A Wartość typu B Konwersja A<-B 34

Metody konwersji typów danych 1) Automatyczna konwersja 2) Jawna (wymuszona) konwersja 3) Konwersja z użyciem metody konwersji Konwersja typów może nie być możliwa wcale! 35

Automatyczna konwersja typów Możliwa, jeśli typ B jest podzbiorem typu A Przykłady: int -> double char -> string Nie wymaga udziału programisty // konwersja domyślna automatyczna int i = 10; double d = i; 36

Jawna konwersja typów Tzw. rzutowanie typów danych Odbywa się na wyraźne żądanie programisty Przykład: int X = (int) D; // D jest typu double Może prowadzić do częściowej utraty danych // konwersja jawna (wymuszona) // z potencjalną utratą danych float f = 3.3333f; int k = (int) f; 37

Konwersja z użyciem metody W przypadku, gdy automatyczna oraz jawna konwersje nie są możliwe (lub nie zalecane), można skorzystać z metod konwersji typów Przykład: Double.parseDouble(string) // konwersja za pomocą metody String s1 = Float.toString(f); double m = Integer.parseInt("10.25"); 38

Wczytywanie danych z klawiatury Dane wprowadzane przez użytkownika mogą być wczytane ze strumienia wejściowego reprezentowanego przez obiekt System.in Klasy pomocnicze: InputStreamReader BufferedReader Dane są wczytywane w postaci obiektu typu String Klawiatura System.in InputStream Reader BufferedRea der Zmienna 39

Sytuacje wyjątkowe Wyjątek (ang. Exception) sytuacja awaryjna zaistniała w trakcie wykonania programu, która wymaga przerwania normalnego ciągu instrukcji Dzielenie przez zero Awaria sieci Brak pliku lub miejsca na dysku Niewłaściwy format danych wejściowych Brak danych wejściowych itp. 40

Obsługa wyjątków W sekcji try umieszczamy instrukcje realizujące główny algorytm programu W sekcji catch umieszczamy informacje o wystąpieniu błędów try catch Kod niebezpieczny który należy monitorować Kod który zostanie wykonany w razie wystąpienia awarii 41

Diagram konstrukcji try - catch try { Kod kontrolowany } Typ Nazwa catch ( ) wyjątku zmiennej Kod { } obsługi 42