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

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

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

13 JĘZYK C - OPERATOR WARUNKOWY,

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Metodyki i techniki programowania

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Informatyka 1

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE. Metodyki i techniki programowania

Spis treści. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF03Z. Autor: dr inż.

Spis treści JĘZYK C - ZAGNIEŻDŻANIE IF-ELSE, OPERATOR WARUNKOWY, INSTRUKCJA SWITCH, OPERATORY BITOWE, INSTRUKCJA ITERACYJNA FOR.

Spis treści JĘZYK C - OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, INSTRUKCJA WARUNKOWA IF. Informatyka 1

BHP JĘZYK C - INSTRUKCJE ITERACYJNE

Spis treści JĘZYK C - ŚLEDZENIE WYKONANIA PROGRAMU, DEBUGGER. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - INSTRUKCJA WARUNKOWA IF, OPERATORY RELACYJNE I LOGICZNE, WYRAŻENIA LOGICZNE, ZAGNIEŻDŻANIE IF-ELSE.

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - FUNKCJE. Metodyki i techniki programowania. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia MITP10

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Metodyki i techniki programowania

Spis treści PLIKI BINARNE W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Spis treści JĘZYK C - TABLICE JEDNOWYMIAROWE. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF05Z

Spis treści JĘZYK C - TABLICE DWUWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

Podstawy programowania w języku C i C++

Spis treści JĘZYK C - TABLICE DWU- I WIELOWYMIAROWE, OPERACJE NA TABLICACH. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Spis treści JĘZYK C - PLIKI BINARNE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF30

Spis treści PROGRAMOWANIE OBIEKTOWE W JĘZYKU C++: FUNKCJE ZAPRZYJAŹNIONE Z KLASĄ, PRZEŁADOWANIE OPERATORÓW. Informatyka 2

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

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.

Spis treści JĘZYK C - INSTRUKCJE ITERACYJNE FOR, WHILE I DO WHILE, ZAGNIEŻDŻANIE PĘTLI FOR, INSTRUKCJE CONTINUE, BREAK, I GOTO.

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

dr inż. Jarosław Forenc

Programowanie strukturalne i obiektowe

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

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

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO. Informatyka 2

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

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

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

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

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

Języki i paradygmaty programowania

Spis treści WSKAŹNIKI. DYNAMICZNY PRZYDZIAŁ PAMIĘCI W JĘZYKU C. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

dr inż. Jarosław Forenc

2 Przygotował: mgr inż. Maciej Lasota

Podstawy programowania w języku C

Język C zajęcia nr 5

Spis treści TRYB GRAFICZNY SYSTEMU WINDOWS - PODSTAWY OBSŁUGI WYBRANEGO ŚRODOWISKA PROGRAMISTYCZNEGO, TWORZENIE INTERFEJSU UŻYTKOWNIKA.

Spis treści JĘZYK C - WSKAŹNIKI, DYNAMICZNY PRZYDZIAŁ PAMIĘCI. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu

Politechnika Białostocka

BADANIE ROZKŁADU TEMPERATURY W PIECU PLANITERM

Podstawy programowania C. dr. Krystyna Łapin

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

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

dr inż. Jarosław Forenc

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

1 Podstawy c++ w pigułce.

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Język C zajęcia nr 11. Funkcje

dr inż. Jarosław Forenc

Podstawy i języki programowania

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

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

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

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

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

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja;

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

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

KURS C/C++ WYKŁAD 1. Pierwszy program

Wstęp do programowania

Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik

Spis treści MATLAB - ELEMENTY PROGRAMOWANIA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF09

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

Instrukcje sterujące

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

Programowanie obiektowe - zadania

Spis treści JĘZYK C - STRUKTURY, POLA BITOWE, UNIE. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF23

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

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

dr inż. Jarosław Forenc

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 2. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF22

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

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

Część 4 życie programu

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

I. KARTA PRZEDMIOTU CEL PRZEDMIOTU WYMAGANIA WSTĘPNE W ZAKRESIE WIEDZY, UMIEJĘTNOŚCI I INNYCH KOMPETENCJI EFEKTY KSZTAŁCENIA

C++ wprowadzanie zmiennych

Odczyt danych z klawiatury Operatory w Javie

I - Microsoft Visual Studio C++

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

POMIARY PARAMETRÓW PRZEPŁYWU POWIETRZA

Instrukcje sterujące. Programowanie Proceduralne 1

Transkrypt:

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Metodyki i techniki programowania Kod przedmiotu: TS1C200 009 (studia stacjonarne) Spis treści 1. Opis stanowiska... 3 1.1. Stosowana aparatura... 3 1.2. Oprogramowanie... 3 2. Wiadomości teoretyczne... 3 2.1. Instrukcja wyboru wielowariantowego - switch... 3 2.2. Stałe zadeklarowane jako const... 8 2.3. Operatory bitowe... 8 2.4. Zastosowania operatorów bitowych... 11 3. Przebieg ćwiczenia... 14 4. Literatura... 15 JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE 5. Zagadnienia na zaliczenie... 16 6. Wymagania BHP... 16 Numer ćwiczenia MITP05 Autor: dr inż. Jarosław Forenc Białystok 2013 Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB. Wydział Elektryczny, Politechnika Białostocka, 2013 (wersja 1.4) Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw autorskich. Metodyki i techniki programowania 2 z 17 Instrukcja MITP05

1. Opis stanowiska 1.1. Stosowana aparatura Podczas zajęć wykorzystywany jest komputer klasy PC z systemem operacyjnym Microsoft Windows (XP/Vista/7). 1.2. Oprogramowanie Na komputerach zainstalowane jest środowisko programistyczne Microsoft Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express Edition zawierające kompilator Microsoft Visual C++ 2008. 2. Wiadomości teoretyczne 2.1. Instrukcja wyboru wielowariantowego - switch Instrukcja switch służy do podejmowania decyzji wielowariantowych. W instrukcji tej sprawdza się, czy wartość pewnego wyrażenia pasuje do jednej z kilku całkowitych, stałych wartości (wyrażenie_stałe). W przypadku stwierdzenia równości następuje przekazanie sterowania (skok) do odpowiedniego miejsca. W niektórych sytuacjach instrukcja switch może zastąpić wielokrotne instrukcje if - else if. Ogólna postać instrukcji switch jest następująca: switch (wyrażenie) case wyrażenie_stałe: instrukcje; case wyrażenie_stałe: instrukcje; case wyrażenie_stałe: instrukcje;... default: instrukcje; Obliczane jest wyrażenie w nawiasach. Następnie jego wartość porównywana jest z wartościami wyrażeń stałych (zawartych w częściach oznaczanych przez etykiety case). Sterowanie jest przekazywane do tej instrukcji, którą poprzedza etykieta case z wyrażeniem stałym równym co do wartości wyrażeniu w nawiasach switch. Od tego miejsca wykonywane są wszystkie instrukcje znajdujące się po tej etykiecie oraz oznaczone przez inne etykiety, aż do końca instrukcji switch. Jeśli nie znajdzie się żadna etykieta pasująca do wartości wyrażenia w nawiasach switch, to sterowanie jest przekazywane do części oznaczonej przez etykietę default. Jeśli nie ma etykiety default, to sterowanie przekazywane jest do instrukcji następującej po switch. Etykieta default może wystąpić tylko jeden raz. W składni instrukcji switch wszystkie instrukcje oraz etykieta default są opcjonalne. Wyrażania stałe występujące po etykietach case nie mogą powtarzać się. Jeśli wystąpi taka sytuacja, to kompilator zasygnalizuje błąd. W jednej instrukcji switch może występować maksymalnie do 1023 etykiet case. Wyrażenie stałe musi mieć typ całkowity. Jego wartość powinna być znana w trakcie kompilacji i nie może zostać zmieniona w fazie wykonania programu. Jako wyrażenie stałe najczęściej stosuje się: - liczby całkowite, np. 1, 2, 3, 0, -1, -2; - stałe zadeklarowane jako const lub przez dyrektywę preprocesora #define; - znaki umieszczone w apostrofach, np. +, a. Wybór arytmetycznego działania w zależności od wciśniętego klawisza. #include <stdio.h> int main(void) int key; float x1 = 10.0, x2 = 5.0, y; printf("podaj dzialanie: "); key = getchar(); switch (key) Metodyki i techniki programowania 3 z 17 Instrukcja MITP05 Metodyki i techniki programowania 4 z 17 Instrukcja MITP05

case '+': y = x1 + x2; printf("dodawanie: y = %.2f \n",y); case '-': y = x1 - x2; printf("odejmowanie: y = %.2f \n",y); default: printf("nieznana operacja!\n"); return 0; Przykładowe wyniki uruchomienia programu: Podaj dzialanie: + Dodawanie: y = 15.00 Podaj dzialanie: - Odejmowanie: y = 5.00 Podaj dzialanie: * Nieznana operacja! W powyższym programie funkcja getchar() odczytuje wciśnięty klawisz i podstawia jego kod pod zmienną key. Następnie w instrukcji switch kod klawisza porównywany jest z wyrażeniami stałymi znajdującymi się po case. Jeśli wciśniętym klawiszem był +, to zmienne x1 i x2 dodawane są do siebie i wyświetlana jest ich suma. Jeśli wciśnięto -, to zmienne są odejmowane. Wprowadzenie każdego innego znaku spowoduje wyświetlenie tekstu: Nieznana operacja!. Po instrukcjach każdego wariantu case występują instrukcje break. Powodują one natychmiastowe opuszczenie instrukcji switch. Ich brak spowodowałby wykonanie wszystkich instrukcji (do końca instrukcji switch) występujących po każdym case. switch (key) case '+': y = x1 + x2; printf("dodawanie: y = %.2f \n",y); case '-': y = x1 - x2; printf("odejmowanie: y = %.2f \n",y); default: printf("nieznana operacja!\n"); Po wciśnięciu + wyświetlone zostałyby komunikaty: Dodawanie: y = 15.00 Odejmowanie: y = 5.00 Nieznana operacja! Po wciśnięciu - wyświetlone zostałyby komunikaty: Odejmowanie: y = 5.00 Nieznana operacja! Po wciśnięciu innego znaku wyświetlony zostałby komunikat: Nieznana operacja! Kolejny program wyświetla słownie ocenę wczytaną z klawiatury. Program wyświetlający słownie ocenę wprowadzoną jako liczba. #include <stdio.h> int main(void) int ocena; printf("podaj ocene: "); scanf("%d",&ocena); switch (ocena) case 5: printf("twoja ocena: bardzo dobry\n"); Metodyki i techniki programowania 5 z 17 Instrukcja MITP05 Metodyki i techniki programowania 6 z 17 Instrukcja MITP05

case 4: printf("twoja ocena: dobry\n"); case 3: printf("twoja ocena: dostateczny\n"); case 2: printf("twoja ocena: niedostateczny\n"); default: printf("bledna ocena\n"); return 0; case 2: printf("ocena negatywna\n"); default: printf("bledna ocena\n"); return 0; Przykłady uruchomienia programu: Podaj ocene: 4 Ocena pozytywna Przykłady uruchomienia programu: Podaj ocene: 4 Twoja ocena: dobry Podaj ocene: 2 Twoja ocena: niedostateczny Podaj ocene: 0 Bledna ocena Z każdym wariantem może być związane jedno lub kilka wyrażeń stałych. Program wyświetlający informację o wprowadzonej ocenie. Podaj ocene: 3 Ocena pozytywna Podaj ocene: 2 Ocena negatywna Podaj ocene: 0 Bledna ocena 2.2. Stałe zadeklarowane jako const Stałą specyfikuje się wstawiając przed nazwą typu słowo const. Tak zadeklarowana zmienna musi otrzymać wartość w trakcie inicjalizacji i nie może być później zmieniana. #include <stdio.h> int main(void) int ocena; printf("podaj ocene: "); scanf("%d",&ocena); switch (ocena) case 5: case 4: case 3: printf("ocena pozytywna\n"); const int x = 10; 2.3. Operatory bitowe W języku C występuje 6 operatorów pozwalających na wykonywanie operacji na poszczególnych bitach liczb (Tabela 1). Operatory te można stosować jedynie do argumentów całkowitych typu char, short, int, long (ze znakiem lub bez). Metodyki i techniki programowania 7 z 17 Instrukcja MITP05 Metodyki i techniki programowania 8 z 17 Instrukcja MITP05

Tabela 1. Operatory bitowe w języku C Operator Znaczenie Opis & AND dwuargumentowy operator koniunkcji bitowej OR dwuargumentowy operator alternatywy bitowej ^ XOR dwuargumentowy operator różnicy symetrycznej ~ NOT jednoargumentowy operator uzupełnienia jedynkowego (zastępuje 0 1, 1 0) >> dwuargumentowy operator przesunięcia bitowego w prawo << dwuargumentowy operator przesunięcia bitowego w lewo Rozważmy następujący przykład deklaracji zmiennych: unsigned char x = 106; /* 01101010 */ unsigned char y = 173; /* 10101101 */ unsigned char z; Operator koniunkcji bitowej (&) ustawia jedynkę na każdej pozycji bitowej tam, gdzie oba bity są równe jeden. W pozostałych przypadkach ustawia zero. z = x & y; x 0 1 1 0 1 0 1 0 y 1 0 1 0 1 1 0 1 z 0 0 1 0 1 0 0 0 Operator alternatywy bitowej ( ) ustawia jedynkę na każdej pozycji bitowej tam, gdzie przynajmniej jeden z bitów jest równy jeden. z = x y; x 0 1 1 0 1 0 1 0 y 1 0 1 0 1 1 0 1 z 1 1 1 0 1 1 1 1 Operator różnicy symetrycznej (^) ustawia jedynkę na każdej pozycji bitowej tam, gdzie bity są różne, a zero tam, gdzie bity są takie same. z = x ^ y; x 0 1 1 0 1 0 1 0 y 1 0 1 0 1 1 0 1 z 1 1 0 0 0 1 1 1 Operator uzupełnienia jedynkowego czyli negacji (~) zastępuje jedynkę zerem i zero jedynką. z = ~x; x 0 1 1 0 1 0 1 0 z 1 0 0 1 0 1 0 1 Operatory: << i >> przesuwają bity argumentu stojącego po lewej stronie operatora o liczbę pozycji określoną przez argument stojący po prawej stronie operatora. Drugi argument musi być liczbą dodatnią. Przesunięcie w prawo powoduje pojawienie się na najstarszej pozycji 0 (dla liczb bez znaku) lub powielenie bitu znaku (dla liczb ze znakiem). Przy przesunięciu w lewo zwolnione (najmłodsze) bity zapełniane są 0. z = x >> 2; x 0 1 1 0 1 0 1 0 Z 0 0 0 1 1 0 1 0 z = x << 1; x 0 1 1 0 1 0 1 0 z 1 1 0 1 0 1 0 0 Przesunięcie w prawo o 1 pozycję odpowiada podzieleniu liczby przez 2, zaś w lewo - pomnożeniu przez 2. z = x >> 1; x 0 1 1 0 1 0 1 0 106 (10) Z 0 0 1 1 0 1 0 1 53 (10) z = x << 1; x 0 1 1 0 1 0 1 0 106 (10) z 1 1 0 1 0 1 0 0 212 (10) Metodyki i techniki programowania 9 z 17 Instrukcja MITP05 Metodyki i techniki programowania 10 z 17 Instrukcja MITP05

Nie należy mylić operatorów bitowych (& i ) z operatorami logicznymi (&& i ). Zazwyczaj kompilator nie wykaże żadnego błędu. Jego wykrycie podczas wykonywania programu może być bardzo trudne. w instrukcji warunkowej if są konieczne, gdyż operator logiczny!= ma wyższy priorytet niż operator bitowy &. int x = 1; int y = 2; if (x & y) - wartość wyrażenia: 0 (fałsz), instrukcja; if (x && y) - wartość wyrażenia: 1 (prawda). instrukcja; Język C udostępnia 5 złożonych (skróconych) operatorów przypisania dotyczących operacji bitowych. Są to: <<=, >>=, &=, =, ^=. 2.4. Zastosowania operatorów bitowych Operatory bitowe są wykorzystywane do ustawiania i testowania wartości bitów w obszarach pamięci (programowanie niskopoziomowe i obiektowe). Do sprawdzenia wartości wybranego bitu w bajcie stosowany jest operator koniunkcji bitowej (AND). Załóżmy, że chcemy sprawdzić wartość bitu nr 4 zmiennej x typu unsigned char. W tym celu wykonujemy operację koniunkcji bitowej zmiennej x i liczby mającej bit nr 4 równy 1 oraz wyzerowane pozostałe bity (0001 0000(2) = 10(16)). unsigned char x = 181; /* 10110101 */ if ((x & 0x10)!= 0) printf("bit nr 4 ma wartosc 1\n"); else printf("bit nr 4 ma wartosc 0\n"); Jeśli w wyniku koniunkcji otrzymamy liczbę różną od zera, to bit nr 4 jest równy 1 (Rys. 1). W przeciwnym przypadku bit ten jest równy zero. Dodatkowe nawiasy Rys. 1. Sprawdzenie wartości wybranego bitu w bajcie Warunek logiczny w powyższej instrukcji if można zapisać w prostszej, równoważnej postaci: if (x & 0x10) printf("bit nr 4 ma wartosc 1\n"); else printf("bit nr 4 ma wartosc 0\n"); Do zapisania wartości 1 do wybranego bitu w bajcie (bez zmiany wartości pozostałych bitów) stosuje się operator alternatywy bitowej (OR). Załóżmy, że chcemy ustawić bit nr 3 zmiennej x typu unsigned char. W tym celu wykonujemy operację alternatywy bitowej zmiennej x i liczby mającej bit nr 3 równy 1 oraz wyzerowane pozostałe bity (0000 1000(2) = 08(16)). unsigned char x = 181; /* 10110101 */ x = x 0x08; Bit nr 3 otrzyma wartość 1, natomiast pozostałe bity nie ulegną zmianie (Rys. 2). Metodyki i techniki programowania 11 z 17 Instrukcja MITP05 Metodyki i techniki programowania 12 z 17 Instrukcja MITP05

Do wyzerowania bitu można zastosować skrócony operator przypisania &=. x &= 0xEF; 3. Przebieg ćwiczenia Rys. 2. Ustawienie wybranego bitu w bajcie Do ustawienia bitu można zastosować skrócony operator przypisania =. x = 0x08; Do zapisania wartości 0 do wybranego bitu w bajcie (bez zmiany wartości pozostałych bitów) stosuje się operator koniunkcji bitowej (AND). Załóżmy, że chcemy wyzerować bit nr 4 zmiennej x typu unsigned char. W tym celu wykonujemy operację koniunkcji bitowej zmiennej x i liczby mającej bit nr 4 równy 0 oraz ustawione na 1 wszystkie pozostałe bity (1110 1111(2) = EF(16)). unsigned char x = 181; /* 10110101 */ x = x & 0xEF; Bit nr 4 otrzyma wartość 0, natomiast pozostałe bity nie ulegną zmianie (Rys. 3). Na pracowni specjalistycznej należy wykonać wybrane zadania wskazane przez prowadzącego zajęcia. W różnych grupach mogą być wykonywane różne zadania. 1. Wskaźniki zadziałania wkładek bezpiecznikowych oznacza się odpowiednimi kolorami zależnie od ich prądu znamionowego (Tabela 2). Tabela 2. Kolory wskaźników zadziałania wkładek bezpiecznikowych Barwa wskaźnika Prąd znamionowy wkładki zielona 6 czerwona 10 szara 16 niebieska 20 żółta 25 Napisz program, w którym po wprowadzeniu przez użytkownika prądu znamionowego wkładki, wyświetlana jest barwa odpowiadającego jej wskaźnika zadziałania. W przypadku błędnej wartości prądu wyświetl odpowiedni komunikat. Zastosuj instrukcję switch. 2. Napisz program, w którym użytkownik wprowadza numer dnia tygodnia. Program powinien wypisać tekst: Rys. 3. Wyzerowanie wybranego bitu w bajcie - zwykly dzien - dla dni od poniedziałku do piątku; - weekend - dla soboty i niedzieli; - bledny numer dnia - dla pozostałych wartości. Przyjmij: 1 - poniedziałek, 2 - wtorek, 3 - środa, itd. Zastosuj instrukcję switch. Metodyki i techniki programowania 13 z 17 Instrukcja MITP05 Metodyki i techniki programowania 14 z 17 Instrukcja MITP05

3. Napisz program, w którym użytkownik wprowadza rok oraz numer miesiąca, a program wyświetla liczbę dni w podanym miesiącu. Uwzględnij obecność lat przestępnych. Zastosuj instrukcję switch. Uwaga: rok przestępny (liczbowo) spełnia następujące warunki: jest podzielny przez 4, ale nie jest podzielny przez 100 lub jest podzielny przez 400. 4. Napisz program, w którym użytkownik wprowadza numer miesiąca, a program wyświetla nazwy wszystkich miesięcy, które pozostały do końca roku. Wyświetl odpowiedni komunikat w przypadku błędnego numeru miesiąca. Zastosuj instrukcję switch. Przykładowe wywołanie programu: Podaj numer miesiaca: 9 ------- wrzesien pazdziernik listopad grudzien 5. Napisz program, w którym użytkownik wprowadza dodatnią, całkowitą liczbę dwucyfrową. Program powinien wypisać tę liczbę słownie. Zastosuj instrukcje switch. Przykładowe wywołanie programu: Liczba: 37 Slownie: trzydziesci siedem 6. Zadeklaruj w programie zmienną typu unsigned char. Przypisz zmiennej liczbę z przedziału od 0 do 255. Wyświetl wartości kolejnych bitów tej liczby. 7. Wczytaj z klawiatury liczbę całkowitą. Stosując operacje bitowe sprawdź, czy liczba jest parzysta czy nieparzysta. 4. Literatura [1] Kernighan B.W., Ritchie D.M.: Język ANSI C. Programowanie. Wydanie II. Helion, Gliwice, 2010. [2] Prata S.: Język C. Szkoła programowania. Wydanie V. Helion, Gliwice, 2006. [3] King K.N.: Język C. Nowoczesne programowanie. Wydanie II. Helion, Gliwice, 2011. [4] Summit S.: Programowanie w języku C. FAQ. Helion, Gliwice, 2003. [5] Wileczek R.: Microsoft Visual C++ 2008. Tworzenie aplikacji dla Windows. Helion, Gliwice, 2009. 5. Zagadnienia na zaliczenie 1. Omów składnię i zasadę działania instrukcji wyboru wielowariantowego switch. 2. Scharakteryzuj operatory bitowe występujące w języku C. 3. Wyjaśnij różnice pomiędzy operatorami bitowymi i logicznymi. 6. Wymagania BHP Warunkiem przystąpienia do praktycznej realizacji ćwiczenia jest zapoznanie się z instrukcją BHP i instrukcją przeciw pożarową oraz przestrzeganie zasad w nich zawartych. W trakcie zajęć laboratoryjnych należy przestrzegać następujących zasad. - Sprawdzić, czy urządzenia dostępne na stanowisku laboratoryjnym są w stanie kompletnym, nie wskazującym na fizyczne uszkodzenie. - Jeżeli istnieje taka możliwość, należy dostosować warunki stanowiska do własnych potrzeb, ze względu na ergonomię. Monitor komputera ustawić w sposób zapewniający stałą i wygodną obserwację dla wszystkich członków zespołu. - Sprawdzić prawidłowość połączeń urządzeń. - Załączenie komputera może nastąpić po wyrażeniu zgody przez prowadzącego. - W trakcie pracy z komputerem zabronione jest spożywanie posiłków i picie napojów. Metodyki i techniki programowania 15 z 17 Instrukcja MITP05 Metodyki i techniki programowania 16 z 17 Instrukcja MITP05

- W przypadku zakończenia pracy należy zakończyć sesję przez wydanie polecenia wylogowania. Zamknięcie systemu operacyjnego może się odbywać tylko na wyraźne polecenie prowadzącego. - Zabronione jest dokonywanie jakichkolwiek przełączeń oraz wymiana elementów składowych stanowiska. - Zabroniona jest zmiana konfiguracji komputera, w tym systemu operacyjnego i programów użytkowych, która nie wynika z programu zajęć i nie jest wykonywana w porozumieniu z prowadzącym zajęcia. - W przypadku zaniku napięcia zasilającego należy niezwłocznie wyłączyć wszystkie urządzenia. - Stwierdzone wszelkie braki w wyposażeniu stanowiska oraz nieprawidłowości w funkcjonowaniu sprzętu należy przekazywać prowadzącemu zajęcia. - Zabrania się samodzielnego włączania, manipulowania i korzystania z urządzeń nie należących do danego ćwiczenia. - W przypadku wystąpienia porażenia prądem elektrycznym należy niezwłocznie wyłączyć zasilanie stanowiska. Przed odłączeniem napięcia nie dotykać porażonego. Metodyki i techniki programowania 17 z 17 Instrukcja MITP05