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

Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Spis treści 1. Opis stanowiska ..........................
0 downloads 3 Views 123KB Size
Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii

Spis treści 1. Opis stanowiska ............................................................................................. 3 1.1. Stosowana aparatura ............................................................................... 3

Instrukcja do pracowni specjalistycznej z przedmiotu

1.2. Oprogramowanie ...................................................................................... 3 2. Wiadomości teoretyczne................................................................................ 3

Informatyka 1

2.1. Instrukcja wyboru wielowariantowego - switch.......................................... 3

Kod przedmiotu: ES1C200 009

2.2. Stałe zadeklarowane jako const ............................................................... 7

(studia stacjonarne)

2.3. Operatory bitowe ...................................................................................... 7 3. Przebieg ćwiczenia ......................................................................................... 9 4. Literatura ....................................................................................................... 10 5. Zagadnienia na zaliczenie ............................................................................ 11

JĘZYK C - INSTRUKCJA SWITCH, OPERATORY BITOWE

6. Wymagania BHP ........................................................................................... 11

Numer ćwiczenia INF05

_____________ Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB.

Autor: dr inż. Jarosław Forenc Białystok 2013

© Wydział Elektryczny, Politechnika Białostocka, 2013 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. Informatyka 1

2 z 12

Instrukcja INF05

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.

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, a jeśli jej nie ma, to do instrukcji następującej w programie po switch. Etykieta default może wystąpić tylko jeden raz. W składni instrukcji switch wszystkie instrukcje oraz etykieta default są opcjonalne. Wyrażenia stałe to takie, których wartości są znane w trakcie kompilacji i nie mogą zostać zmienione w fazie wykonania programu. Należą do nich m.in.: - znaki umieszczone w apostrofach: ’+’, ’a’; - liczby całkowite: 1, 2, 3;

2. Wiadomości teoretyczne

- stałe zadeklarowane jako const lub przez dyrektywę preprocesora #define.

2.1. Instrukcja wyboru wielowariantowego - switch Instrukcja switch służy do podejmowania decyzji wielowariantowych, w których sprawdza się, czy wartość pewnego wyrażenia pasuje do jednej z kilku całkowitych stałych wartości, i wykonuje odpowiedni skok. W niektórych przypadkach instrukcją switch można zastąpić wielokrotne instrukcje if - else if.

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, a 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 3 z 12

#include #include int main() { int key; float x1 = 10.0, x2 = 5.0, y;

Ogólna postać instrukcji switch jest następująca:

Informatyka 1

Wybór arytmetycznego działania wykonywanego na dwóch liczbach w zależności od wciśniętego klawisza.

Instrukcja INF05

printf("Podaj dzialanie: "); key = getchar(); switch (key) { case '+': y = x1 + x2; printf("Dodawanie: y = %.2f \n",y); break; case '-': y = x1 - x2; printf("Odejmowanie: y = %.2f \n",y); break;

Informatyka 1

4 z 12

Instrukcja INF05

Po wciśnięciu ’-’ wyświetlone zostałyby komunikaty:

default: printf("Nieznana operacja!\n"); }

Odejmowanie: y = 5.00 Nieznana operacja!

system("pause"); return 0;

po wciśnięciu innego znaku wyświetlony zostałby komunikat: 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świetlany jest wynik dodawania. 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. Przykład:

Z każdym wariantem może być związanych jedna lub kilka całkowitych wartości stałych bądź wyrażeń stałych, np. Program wyświetlający informację o wprowadzonej ocenie. #include #include int main() { int ocena; printf("Podaj ocene:"); scanf("%d",&ocena); switch (ocena) { case 5: case 4: case 3: printf("Ocena pozytywna\n"); break; case 2: printf("Ocena negatywna\n"); break; default: printf("Bledna ocena\n"); }

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"); }

system("pause"); return 0; }

Po wciśnięciu ’+’ wyświetlone zostałyby komunikaty: Dodawanie: y = 15.00 Odejmowanie: y = 5.00 Nieznana operacja!

Informatyka 1

5 z 12

Instrukcja INF05

Informatyka 1

6 z 12

Instrukcja INF05

2.2. Stałe zadeklarowane jako const Stałą specyfikujemy używając w deklaracji przed nazwą typu słowa const. Tak zadeklarowana “zmienna” musi otrzymać wartość w trakcie inicjalizacji i nie może być później zmieniana, np. const int x = 10; const float y = 5.33;

Operator koniunkcji bitowej (&) ustawia jedynkę na każdej pozycji bitowej tam, gdzie oba bity są równe jeden, zaś 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;

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 (char, short, int, long) ze znakiem lub bez. Tabela 1. Operatory bitowe w języku C.

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;

Znaczenie

&

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


> 2;

x 0 1 1 0 1 0 1 0 --------------------Z 0 0 0 1 1 0 1 0

z = x > 1;

z = x