Podstawy programowania w języku C i C++

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

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

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

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

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

Podstawy programowania w języku C++

Podstawy programowania w języku C++

Odczyt danych z klawiatury Operatory w Javie

Języki i paradygmaty programowania

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

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

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

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

Wprowadzenie do programowania w języku C

Podstawy programowania w języku C++

Podstawy i języki programowania

Podstawy programowania

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

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

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

Wprowadzenie do programowania w języku C

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

Programowanie komputerowe. Zajęcia 1

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

C++ wprowadzanie zmiennych

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

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

Podstawy programowania w języku C

dr inż. Jarosław Forenc

( wykł. dr Marek Piasecki )

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

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

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

Programowanie w języku C++

Stałe definiuje się używając funkcji define. Przykład: define( PODATEK, 22); define( INSTALACJAOS, 70); define( MS, Microsoft );

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

while(wyrażenie) instrukcja

Wstęp do programowania

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

Słowa kluczowe i nazwy

Podstawy programowania w języku C++

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

MATERIAŁY DO ZAJĘĆ II

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

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

Struktura pliku projektu Console Application

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

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

Podstawy programowania

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05

Programowanie strukturalne. dr inż. Tadeusz Jeleniewski

Programowanie w języku C++

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Programowanie strukturalne i obiektowe

Język C zajęcia nr 11. Funkcje

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

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Języki i metody programowania I

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

Część 4 życie programu

ROZDZIAŁ 2. Operatory

1 Podstawy c++ w pigułce.

Podstawy programowania w języku C++

Język ludzki kod maszynowy

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Podstawy programowania C. dr. Krystyna Łapin

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

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

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

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

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

dr inż. Jarosław Forenc

Podstawy programowania w języku C++

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

Podstawy Programowania C++

Mikrooperacje. Mikrooperacje arytmetyczne

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

Podstawy programowania

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

Języki programowania obiektowego Nieobiektowe elementy języka C++

Instrukcje sterujące. Programowanie Proceduralne 1

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

Podstawy programowania w języku C++

Programowanie komputerowe. Zajęcia 3

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

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

Programowanie obiektowe

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


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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

2 Przygotował: mgr inż. Maciej Lasota

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

Zmienne, stałe i operatory

Instrukcje sterujące mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2012

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Wyrażenie warunkowe operator selekcji Instrukcja switch

Spis treści JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu

I - Microsoft Visual Studio C++

Transkrypt:

Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim uczestnictwa. Opracowanie to jest chronione prawem autorskim. Wykorzystywanie jakiegokolwiek fragmentu w celach innych niż nauka własna jest nielegalne. Dystrybuowanie tego opracowania lub jakiejkolwiek jego części oraz wykorzystywanie zarobkowe bez zgody autora jest zabronione.

Operatory arytmetyczne Operatory arytmetyczne to + : dodawanie (dwuargumentowy) i zachowanie znaku (jednoargumentowy), : odejmowanie (dwuargumentowy) i zmiana znaku (jednoargumentowy), * : mnożenie (dwuargumentowy), / : dzielenie (dwuargumentowy), % : (dwuargumentowy)reszta z dzielenia (modulo), nie może być stosowany do liczb rzeczywistych. Copyright Roman Simiński Strona : 2

Uwaga dzielenie na operandach całkowitych daje wynik całkowity Ten kod: int x = 5, y = 2; float f = x/y; cout << Wynik dzielenia < < x << przez << y << wynosi << f ; wyprodukuje: Aby otrzymać wynik rzeczywisty jeden z operandów musi być rzeczywisty: float x = 5; int y = 2; float f = x/y; lub int x = 5, y = 2; float f = ( float ) x/y; Rzutowanie (konwersja) typów w wyrażeniu Copyright Roman Simiński Strona : 3

Operatory relacji i operatory logiczne Operatory relacji to : >, >=, <, <=. Operatory porównania ==,!=. Operatory logiczne to && (and) oraz (or). Uwaga: Wyrażenia połączone tymi operatorami oblicza się od lewej do prawej, koniec obliczeń następuje natychmiast po określeniu wartości logicznej wyrażenia. Operatory relacji mają wyższy priorytet niż operatory porównania. Priorytet operatora && jest wyższy niż a oba są niższe niż operatorów relacji i porównania. Dlatego poniższy warunek może być zapisany bez nawiasów: while( c >= A && c <= Z ) {... } zamiast while( ( c >= A ) && ( c <= Z ) ) {... } Copyright Roman Simiński Strona : 4

Operatory relacji i operatory logiczne, przykład wykorzystania Czy rok w zmiennej całkowitej year jest przestępny? if( ( year % 4 == 0 && year % 100!= 0 ) year % 400 == 0 ) cout << Rok << year << jest rokiem przestępnym ; else cout << Rok << year << nie jest rokiem przestępnym ; Czy zmienna znakowa c jest cyfrą lub małą literą? if( ( c >= '0' && c <= '9' ) ( c >= 'a' && c <= 'z' ) ) cout << Cyfra lub mała litera ; else cout << To nie jest ani cyfra, ani mała litera ; Czy zmienna znakowa c jest cyfrą szesnastkową? if( ( c>='0' && c<='9' ) ( c>='a' && c<='f' ) ( c>='a' && c<='f' ) ) cout << Cyfra szesnastkowa ; else cout << To nie jest cyfra szesnastkowa ; Copyright Roman Simiński Strona : 5

Operatory zwiększania ++ i zmniejszania Operatory ++ i zawsze powodują odpowiednio zwiększenie lub zmniejszenie wartości argumentu. Mogą one jednak występować jako przedrostki (ang. prefix) lub przyrostki (ang. postfix). licznik = licznik + 1; i = i 1; licznik++; i--; ++licznik; --i; Copyright Roman Simiński Strona : 6

Operatory zwiększania ++ i zmniejszania Wersja przedrostkowa zwiększa (zmniejsza) wartość argumentu przed użyciem jego wartości. Wersja przyrostkowa zwiększa (zmniejsza) wartość argumentu po użyciem jego wartości. int a = 5, b; b = ++a; a == 6, b == 6 int a = 5, b; b = a++; a == 6, b == 5 int licznik = 0; cout << Licznik: << licznik; licznik++;... licznik++; cout << Licznik: << licznik; int licznik = 0; cout << Licznik: << licznik++;... cout << Licznik: << ++licznik; Copyright Roman Simiński Strona : 7

Operatory zwiększania ++ i zmniejszania Wykorzystując operatory ++ i iterację: for( int licznik = 10; licznik > 0; licznik-- ) cout << endl << licznik << "..."; Można zapisać krócej: for( int licznik = 10; licznik > 0; cout << endl << licznik-- << "..." ) ; Na operatory ++ i trzeba uważać: i = ++i---i+++i+i--;? i = ++i - --i + ++i + i--; Copyright Roman Simiński Strona : 8

Operatory bitowe Operatory bitowe mogą być stosowane do argumentów typu całkowitego, są to: Operator Znaczenie & bitowa koniunkcja (and), bitowa alternatywa (or), ^ bitowa różnica symetryczna (xor), << przesunięcie w lewo, >> przesunięcie w prawo, ~ dopełnienie jedynkowe. int x = 5, y = 7, z; z = x & y; 0...0101 0...0111 0...0101 z == 5 z = x y; 0...0101 0...0111 0...0111 z == 7 z = x ^ y; 0...0101 0...0111 0...0010 z == 2 Copyright Roman Simiński Strona : 9

Operatory bitowe, przykłady zastosowania Niech będzie zadeklarowana zmienna flag, o rozmiarze 1-go bajta: unsigned char flag = 0; Ustawianie pewnych bitów liczby: flag = flag 1; // Ustawienie najmłodszego bitu liczby flag Zerowanie pewnych bitów liczby: flag = flag & ~1; // Wyzerowanie najmłodszego bitu flag Testowanie czy pewne bity liczby są ustawione: if( flag & 1 ) // Czy najmłodszy bit jest ustawiony?... Copyright Roman Simiński Strona : 10

Operatory bitowe, przykłady zastosowania enum FileMode { FMReadOnly = 1, // 0...0001 FMWriteOnly = 2, // 0...0010... };... char znak; int fmode = 0; cout << "Podaj tryb otwarcia\nr: odczyt\nw: zapis\n>"; cin >> znak; switch( znak ) { case 'r' : case 'R' : fmode = fmode FMReadOnly; break; case 'w' : case 'W' : fmode = fmode FMWriteOnly; break; //... } Copyright Roman Simiński Strona : 11

Operatory bitowe, przykłady zastosowania Testowanie trybu otwarcia: if( fmode & FMReadOnly ) cout << "Otwarcie tylko do odczytu";... if( fmode & FMWriteOnly ) cout << "Otwarcie tylko do zapisu"; Czyszczenie określonego trybu otwarcia: fmode = fmode & ~FMReadOnly;... fmode = fmode & ~FMWriteOnly; Ustawienie trybu otwarcia do zapisu i odczytu: fmode = fmode ( FMReadOnly FMWriteOnly ); Testowanie trybu otwarcia do zapisu i odczytu: if( fmode & ( FMReadOnly FMWriteOnly ) ) cout << "Otwarcie do zapisu i odczytu"; Copyright Roman Simiński Strona : 12

Operatory bitowe, przesunięcia bitowe Przesunięcie o jeden bit w lewo: unsigned char flag = 1; // 00000001 flag = flag << 1; // 00000010 flag = flag << 1; // 00000100 Przesunięcie o jeden bit w prawo: unsigned char flag = 128; // 10000000 flag = flag >> 1; // 01000000 flag = flag >> 1; // 00100000 Uwaga na bit znaku: signed char flag = 128; // 10000000 flag = flag >> 1; // 11000000 flag = flag >> 1; // 11100000 Copyright Roman Simiński Strona : 13

Operatory bitowe, przesunięcia bitowe przykład wykorzystania Ile bitów ma liczba typu int w danej implementacji (iteracja while)? int number = 1, counter = 0; while( number!= 0 ) { number = number << 1; counter ++; } cout << "Liczba bitów typu int: " << counter; Ile bitów ma liczba typu int w danej implementacji (iteracja for)? int number = 1, counter = 0; for( ; number!= 0; counter++ ) number = number << 1; cout << "Liczba bitów typu int: " << counter; Copyright Roman Simiński Strona : 14

Operatory przypisania Przypisanie wartości jest w języku C/C++ wyrażeniem a nie instrukcją. Operator przypisania = jest lewostronnie łączny, co umożliwia łączenie przypisań: int i = 5, j, k, l; j = k = l = i; Zamiast: l = i + 5; k = l + 10; j = k * 2; można napisać: j = ( k = ( l = ( i + 5 ) ) + 10 ) * 2; // j == 40, k == 20, l == 10 Często: x = sin( alfa ); if( x == 0 ) {... } if( ( x = sin( alfa ) ) == 0 ) {... } Copyright Roman Simiński Strona : 15

Operatory przypisania, cd.... Dla większości operatorów dwuargumentowych: + - * / % << >> * ^ & można wykorzystywać specjalne operatory przypisania, pozwalające skrócić zapis często wykorzystywanych konstrukcji, takich jak: Wersja z normalna i = i + 2 y = y * 2 x = x << 1 j = j * ( k + 1 ) flag = flag >> k; Wersja skrócona i += 2 y *= 2 x <<= 1 j *= k + 1 flag >>= k; Copyright Roman Simiński Strona : 16

Operatory przypisania, cd.... Ogólnie, jeśli expr1 i expr2 to wyrażenia, a op to operator dwuargumentowy, zapis: expr1 = expr1 op expr2 można uprościć do postaci: expr1 op= expr2 Copyright Roman Simiński Strona : 17

Operator warunkowy Bardzo często spotyka się pewne symetryczne instrukcje warunkowe, np.: if( delta < 0 ) brak_rozw_rzecz = 1; else brak_rozw_rzecz = 0; if( a > b ) max = a; else max = b; Można je zapisać krócej, z wykorzystaniem operatora warunkowego: brak_rozw_rzecz = ( delta < 0 )? 1 : 0; max = ( a > b )? a : b; Inny przykład komunikaty w wersji polskiej lub angielskiej: enum WERSJA_JEZYKOWA { POLSKI, ANGIELSKI }; int jezyk = POLSKI;... puts( ( jezyk == POLSKI )? Podaj wartość: : Input value: ); Copyright Roman Simiński Strona : 18