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

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

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

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

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

Podstawy programowania w języku C i C++

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

Zmienne, stałe i operatory

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

MATERIAŁY DO ZAJĘĆ II

Języki i paradygmaty programowania

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

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

Podstawy i języki programowania

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

Język C zajęcia nr 11. Funkcje

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

Programowanie I C / C++ laboratorium 02 Składnia pętli, typy zmiennych, operatory

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

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

2 Przygotował: mgr inż. Maciej Lasota

C++ wprowadzanie zmiennych

( wykł. dr Marek Piasecki )

Wstęp do programowania

Podstawy programowania w języku C

Programowanie strukturalne i obiektowe

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Programowanie Komputerów

Język ludzki kod maszynowy

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

Programowanie I C / C++ laboratorium 03 arytmetyka, operatory

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

KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Spis treści JĘZYK C - OPERATORY BITOWE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF32

Języki i metody programowania I

Program w C. wer. 10 z drobnymi modyfikacjami! Wojciech Myszka :28:

Lab 9 Podstawy Programowania

dr inż. Jarosław Forenc

Arytmetyka liczb binarnych

KURS C/C++ WYKŁAD 6. Wskaźniki

operator zmiany znaku operatory mnożenia, dzielenia, dzielenia modulo operatory dodawania, odejmowania

1 Podstawy c++ w pigułce.

Laboratorium 1: Podstawy języka c. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

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

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Materiały pomocnicze do wykładu 3 - Elementy języka Java

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

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

ROZDZIAŁ 2. Operatory

dr inż. Jarosław Forenc

Wstęp do Programowania, laboratorium 02

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

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

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

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

Programowanie w języku C++

Odczyt danych z klawiatury Operatory w Javie

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

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

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

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

Podstawy programowania C. dr. Krystyna Łapin

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

Stuck in the loop. Sterowanie. Marcin Makowski. 29 października Zak lad Chemii Teoretycznej UJ

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

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

Algorytmy i struktury danych. wykład 1

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

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

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

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

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

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

Operatory. Dorota Pylak

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

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

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

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

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

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

Wyrażenia arytmetyczne

Mikrokontroler ATmega32. Język symboliczny

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Operatory, wyrażenia i typy proste

Część 4 życie programu

Mikrooperacje. Mikrooperacje arytmetyczne

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

Instrukcje sterujące. Programowanie Proceduralne 1

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

1 Podstawy c++ w pigułce.

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

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

Słowa kluczowe i nazwy

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

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Transkrypt:

Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl D-10 pokój 227 WYKŁAD 7 WSTĘP DO INFORMATYKI

Wyrażenia 2 Wyrażenia w języku C są bardziej elastyczne niż wyrażenia w jakimkolwiek innym języku programowania. Wyrażenia buduje się z elementów składowych: dane stałe zmienne operatory

Jeszcze o typach 3 Programista może definiować własne synonimy typów typedef unsigned char byte; typedef unsigned short int word; typedef unsigned long int counter_t; typedef int skalar; typedef skalar wektor[n]; Programista może definiować własne synonimy typów typedef <definicja typu> <identyfikator>;

Jeszcze o typach 4 Typy wyliczeniowe to lista nazwanych stałych całkowitych. enum nazw_typu { lista_wyliczenia } lista_zmiennych; Domyślną wartością pierwszego elementu jest zero. enum { falsz, prawda}; falsz otrzymał wartość 0, a element prawda wartość 1. enum {falsz, nic = 0, sukces, prawda =1}Domyślną falsz nic - wartość 0, sukces prawda wartość 1.

Operatory 5 Cztery główne typy operatorów: arytmetyczne relacyjne bitowe logiczne

6 Operatory

Operatory 7 = operator przypisania l-wartość = r-wartość; l-wartość - wyrażenia, które odwołują się do lokalizacji pamięci r-wartość - wyrażenia, które mają wartość

Operator przypisania 8 Wielokrotne przypisanie x = y = z = 0; Przypisanie złożone x = x + 10; x += 10; x -= 10; x /= 10;

Operatory arytmetyczne 9 - odejmowanie, jednoargumentowy minus + dodawanie * mnożenie / dzielenie % dzielenie modulo (reszta z dzielenia, nie stosujemy do danych typu float, double) ++ inkrementacja -- dekrementacja

Przekształcanie typów 10 Przekształcenia typów dzielimy na: przekształcenia jawne przekształcenia niejawne Najczęściej z przekształceniami typów mamy do czynienia podczas wykonywania operacji arytmetycznych oraz instrukcji przypisania.

Przekształcanie typów 11 suma = x + y ; Jeżeli zmienne x y są tego samego typu, np. typu int, wyrażenie x + y jest także typu int Jeżeli zmienna x zdefiniowano, jako typ short, a y jako int to sumowanie x+y jest wyrażeniem mieszanym. W takim przypadku wartość zmiennej x jest przekształcana do typu int

Przekształcanie typów 12 W operacjach arytmetycznych mamy do czynienia z przekształcaniem typów zgodnymi ze ściśle określonymi dla danego typu kompilatora regułami. Zmienna, której typ ma mniejszy rozmiar jest przekształcana do typu, który ma większy rozmiar promocją typu int < unsigned < long < unsigned long < float < double Typy char lub short automatycznie przetwarzane do typu int Każdy unsigned char lub unsigned short jest promowany do typu unsigned

Przekształcanie typów 13 char a1; unsigned a2; int a3; short a4; long a5; float a6; double a7; a1 a4 / a3 3 * a2 a3 3.0 * a2 a3 3 * a6 a3 a1 + 1 a1 + 1.0 3 * a4 * a5 int unsigned double float int double long int < unsigned < long < unsigned long < float < double Podczas wykonywania instrukcji z wyrażeniami zawierającymi zmienne mieszanych typów, wykonywane są niejawne konwersje.

Przekształcanie typów 14 int a3; double a7; a7 = a3; typ int ( a3) będzie przekształcony do typu double ( a7). promocja typu a3 = a7; degradacja typu Gdy typy zmiennoprzecinkowe są poddawane konwersji do typu całkowitego, tracona jest część ułamkowa, liczby są obcinane zawsze w kierunku zera 13.13 i 13.99 są zamieniane na 13, a liczba -13.5 jest zamieniana na -13

Przekształcanie typów 15 plik_1.c

16 Litera H zostaje zapisana w zmiennej znak, jako jedno-bajtowa wartość kodu ASCII. Litera H jest przekształcona do typu int i zmienna i otrzymuje wartość 72. Wartość 72 jest przekształcana do liczby typu float i otrzymuje wartość 72.00

17 mienna char H zostaje przekształcona na liczbę typ int (72) po dodaniu 1, mamy iczbę 73 ( int), która zostaje skrócona do 1 bajtu ( char) i zapisana do zmiennej znak ( I )

18 mienna char zostaje rozszerzona do 4-bajtowej liczby typu int (73). Wynik jest rozszerzony do artości typu float. Wynik 218.00f jest przetworzony do typu int

19 mienna char oraz zmienna int zostają rozszerzone do typu float.

20 róba przypisania zmiennej char zbyt dużej liczby skutkuje jej degradacją.

Operator rzutowania 21 (typ) operator rzutowania int var var = 1.13 + 13.13; Automatyczna (niejawna) konwersja : 1.13 + 1.13 = 14.14 wynik jest obcinany do 14 do zmiennej var zapisujemy 14 var_1 = (int)1.13 + (int)13.13; Sumowanie z wykorzystaniem operatora rzutowania : 1.13 i 13.13 są przekształcone do liczb całkowitych 1 i 13 do zmiennej var_1 zapisujemy 14

Operator rzutowania 22 (typ) operator rzutowania int var var = 1.13 + 13.93; Automatyczna (niejawna) konwersja : 1.13 + 1.13 = 15.06 wynik jest obcinany do 15 do zmiennej var zapisujemy 15 var_1 = (int)1.13 + (int)13.93; Sumowanie z wykorzystaniem operatora rzutowania : 1.13 i 13.93 są przekształcone do liczb całkowitych 1 i 13 do zmiennej var_1 zapisujemy 14

Operatory arytmetyczne 23 5 / 4 = 5 / -4 = -5 / 4 = -5 / -4 = 5 % 4 = 5 % -4 = -5 % 4 = -5 % -4 = a % b = a (a/b)*b

Operatory arytmetyczne 24 5 / 4 = 1 5 / -4 = -1-5 / 4 = -1-5 / -4 = 1 5 % 4 = 1 5 % -4 = 1-5 % 4 = -1-5 % -4 = -1

Operatory arytmetyczne 25 int x = 5/2; //wartość x wynosi 2. int x = 5.0/2.0; //wartość x wynosi 2. double y = 5/2; //wartość y wynosi 2.0. double y = 5.0/2; //wartość y wynosi 2.5. double y = 5/(double)2; //wartość y wynosi 2.5.

Operatory arytmetyczne 26 Priorytety operatorów arytmetycznych: ++, -- - (jednoargumentowy) *, /, % +, - Operatory są lewostronnie łączne. Kolejność wykonywania obliczeń dla operatorów łącznych oraz przemiennych (*,+) nie jest określona. Zmienne tymczasowe lub nawiasy zapewniają wymaganą kolejność obliczeń.

Operatory arytmetyczne 27 ++ Inkrementacja i dekrementacja x = 10; y = x++; //y ma wartość 10 x = 10; y = ++x; //y ma wartość 11 Efekt uboczny w obydwu przypadkach wartość zmiennej x wynosi 11. Nie należy stosować wielokrotnie operatorów inkrementacji dla tego samego operandu w jednym wyrażeniu np. a= a++; c=++a + a; Kompilator gcc potrafi ostrzegać przed takimi błędami: -Wsequence-point -Wall.

Operatory relacyjne i logiczne 28 prawda - wartości różne od zera: 12, -12, -123123.123123, 12e-2, znak inny niż znak końca łańcucha, adres niezerowy,... fałsz - zero: 0, znak końca łańcucha '\0', adres zerowy. Wyrażenia korzystające z operatorów relacyjnych lub logicznych dają w wyniku 0 lub 1. Operatory relacyjne : > większe niż, >= większe niż lub równe, < mniejsze niż, <= mniejsze niż lub równe, == równe,!= różne

Operatory relacyjne i logiczne 29 Operatory logiczne jak i relacyjne mają niższy priorytet niż operatory arytmetyczne. Priorytety operatorów relacyjnych oraz logicznych! > >= < <= ==!= &&!0 && 0 0 //wartość wyrażenia 0!(0 && 0) 0 //wartość wyrażenia 1 int x = 100; printf(''%d'', x>10); printf(''%d'',!!10);

Operatory relacyjne i logiczne 30 Operatory logiczne jak i relacyjne mają niższy priorytet niż operatory arytmetyczne. Priorytety operatorów relacyjnych oraz logicznych! > >= < <= ==!= &&!0 && 0 0 //wartość wyrażenia 0!(0 && 0) 0 //wartość wyrażenia 1 int x = 100; printf(''%d'', x>10); printf(''%d'',!!10);

Operatory relacyjne i logiczne 31 Operatory logiczne jak i relacyjne mają niższy priorytet niż operatory arytmetyczne. Priorytety operatorów relacyjnych oraz logicznych! > >= < <= ==!= &&!0 && 0 0 //wartość wyrażenia 0!(0 && 0) 0 //wartość wyrażenia 1 int x = 100; printf(''%d'', x>10); printf(''%d'',!!10);

Operatory relacyjne i logiczne 32 W obliczaniu wartości wyrażenia logicznego wykonywana jest najmniejsza liczba operacji koniecznych do określenia jego wartości X && y++; int x, y, z; x = 1; y = 1; z = x && y++; printf ("y=%d, z=%d\n" y,z); int x, y, z; x = 0; y = 1; z = x && y++; printf ("y=%d, z=%d\n" y,z);

Operatory bitowe 33 Operacje na bitach to sprawdzanie wartości, ustawianie, przesuwanie bitów w bajtach lub słowach, które odpowiadają typom char oraz int oraz pochodnym. & operator koniunkcji operator alternatywy ^ operator alternatywy wykluczającej (XOR) ~ operator negacji (uzupełnienie jedynkowe) >> przesunięcie bitowe w prawo << przesunięcie bitowe w lewo

Operatory bitowe 34 Operatory &,, ~ działają tak samo jak ich logiczne odpowiedniki, ale operują na poszczególnych bitach. Operator przesuwania bitów << przesuwa bity zmiennej w lewo, zwolnione miejsca wypełniane są zerami: int x = 7; 00000111 x = x<<1 00001110 7*2=14 x = x<<3 01110000 14*2 3 =112 x = x<<33????????

Operatory bitowe 35 Zależnie od kompilatora przesunięcie bitowe >> może być logiczne lub arytmetyczne. dla przesunięcia logicznego - bit najmłodszy jest tracony, zaś na najstarszy bit dopisywane jest zero; dla przesunięcia arytmetycznego - bit najmłodszy jest tracony, a bit najstarszy staje się kopią tego, który został przed chwilą z tego miejsca przesunięty a = 10010010 a >> 1 == 01001001 // w prawo dla logicznego a >> 2 == 00100100 // w prawo dla logicznego a = 10010010 a >> 1 == 11001001 // w prawo dla arytmetycznego a >> 2 == 11100100 // w prawo dla arytmetycznego

Operatory bitowe 36 00000110 11111001

37 Operatory bitowe

38 Operatory bitowe

39 Operatory bitowe

Operatory wskaźnikowe 40 Operatory wskaźnikowe & oraz * Wskaźnik to adres obiektu w pamięci. Zmienna wskaźnikowa to zmienna przechowująca wskaźnik do obiektu o określonym typie. & jednoargumentowy operator pobrania adresu zmiennej, adres_licz = &licz; * jednoargumentowy operator zwracający wartość przechowywana pod adresem reprezentowanym przez zmienną nowy_licz = *adres_licz + 10;

Operator warunkowy 41 Trójargumentowy operator? wyr1? wyr2: wyr3; Działanie: obliczane jest wyr1, if wyr1 == 1 obliczane jest wyr2 i jego wartość staje się wartością całego wyrażenia. if wyr1 == 0 obliczane jest wyr3 i jego wartość staje się wartością całego wyrażenia. x = 10; y = x>9?100 : 200; // y = 100

Operator rozmiaru 42 Operator sizeof zwraca rozmiar operandu (zmiennej lub ujętej w nawiasy okrągłe nazwy typu) w bajtach. W języku C bajt zdefiniowany jest, jako długość typu char. double f; printf ( %lu, sizeof f); printf ( %lu, sizeof(int)); Operator sizeof zwraca wartość typu size_t (unsigned int, unsigned long).

Operator przecinkowy 43 Operator, ustawia w szereg kilka wyrażeń, wyrażenie po prawej stronie staje się wartością całego wyrażenia przecinkowego. x = (y=3, y+1); // x = 4 x = (1,19733,3,4,81); // x = 81 Wyrażenia wykonują się od lewej do prawej x = (1,197); // x = 197 x = 1,197; // x = 1