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

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

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

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Podstawy programowania w języku C i C++

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

Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych

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

Język C zajęcia nr 11. Funkcje

2 Przygotował: mgr inż. Maciej Lasota

Arytmetyka liczb binarnych

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

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

Podstawy i języki programowania

Mikrooperacje. Mikrooperacje arytmetyczne

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

Wstęp do programowania

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

Języki i paradygmaty programowania

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

Podstawy Informatyki dla Nauczyciela

Zmienne, stałe i operatory

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika:

Podstawy programowania w języku C

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

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

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

1. Operacje logiczne A B A OR B

SYSTEMY LICZBOWE. Zapis w systemie dziesiętnym

LABORATORIUM PROCESORY SYGNAŁOWE W AUTOMATYCE PRZEMYSŁOWEJ. Zasady arytmetyki stałoprzecinkowej oraz operacji arytmetycznych w formatach Q

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

C++ wprowadzanie zmiennych

SYSTEMY LICZBOWE 275,538 =

Pracownia Komputerowa wykład VI

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

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

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

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

Pracownia Komputerowa wykład IV

Kod uzupełnień do dwóch jest najczęściej stosowanym systemem zapisu liczb ujemnych wśród systemów binarnych.

Wstęp do Informatyki. Reprezentacja liczb w komputerze Arytmetyka stało- i zmiennoprzecinkowa Przechowywanie danych pliki i foldery

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

1259 (10) = 1 * * * * 100 = 1 * * * *1

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

Systemy zapisu liczb.

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

4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura

Przedmiot: Urządzenia techniki komputerowej Nauczyciel: Mirosław Ruciński

Pracownia Komputerowa wykład V

Wykład 2. Informatyka Stosowana. 8 października 2018, M. A-B. Informatyka Stosowana Wykład 2 8 października 2018, M. A-B 1 / 41

Kod znak-moduł. Wartość liczby wynosi. Reprezentacja liczb w kodzie ZM w 8-bitowym formacie:

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

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

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

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

dr inż. Jarosław Forenc

Odczyt danych z klawiatury Operatory w Javie

( wykł. dr Marek Piasecki )

Zapis liczb binarnych ze znakiem

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

Zestaw 3. - Zapis liczb binarnych ze znakiem 1

DYDAKTYKA ZAGADNIENIA CYFROWE ZAGADNIENIA CYFROWE

Pracownia Komputerowa wyk ad IV

Programowanie Komputerów

while(wyrażenie) instrukcja

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

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

Kodowanie informacji. Kody liczbowe

System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.

Stan wysoki (H) i stan niski (L)

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

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

1 Podstawy c++ w pigułce.

Wstęp do informatyki- wykład 2

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Mikrokontroler ATmega32. Język symboliczny

Wstęp do informatyki- wykład 1 Systemy liczbowe

Architektura komputerów

Struktury, unie, formatowanie, wskaźniki

Pracownia Komputerowa wyk ad VI

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

Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015

Ogólny schemat prostego formularza: A może lepiej zamiast przycisku opartego o input tak:

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

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

Arytmetyka stałopozycyjna

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

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 5 Liczby w komputerze

Technologie Informacyjne

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

RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.

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

ARCHITEKRURA KOMPUTERÓW Kodowanie liczb ze znakiem

Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI

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

Kod U2 Opracował: Andrzej Nowak

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

Arytmetyka. Arytmetyka. Magdalena Lemańska. Magdalena Lemańska,

Transkrypt:

Instrukcja do ćwiczeń nr 4 typy i rodzaje zmiennych w języku C dla AVR, oraz ich deklarowanie, oraz podstawowe operatory Poniżej pozwoliłem sobie za cytować za wikipedią definicję zmiennej w informatyce. Najbardziej istotne elementy tego artykułu pozwoliłem sobie wstawić tutaj pogrubioną czcionką. Zmienna - konstrukcja programistyczna posiadająca trzy podstawowe atrybuty: symboliczną nazwę, miejsce przechowywania i wartość; pozwalająca w kodzie źródłowym odwoływać się przy pomocy nazwy do wartości lub miejsca przechowywania. Nazwa służy do identyfikowania zmiennej w związku z tym często nazywana jest identyfikatorem. Miejsce przechowywania przeważnie znajduje się w pamięci komputera i określane jest przez adres i długość danych. Wartość to zawartość miejsca przechowywania. Zmienna zazwyczaj posiada również czwarty atrybut: typ, określający rodzaj danych przechowywanych w zmiennej i co za tym idzie sposób reprezentacji wartości w miejscu przechowywania. W programie wartość zmiennej może być odczytywana lub zastępowana nową wartością, tak więc wartość zmiennej może zmieniać się w trakcie wykonywania programu, natomiast dwa pierwsze atrybuty (nazwa i miejsce przechowywania) nie zmieniają się w trakcie istnienia zmiennej [1]. W zależności od rodzaju języka typ może być stały lub zmienny. Konstrukcją podobną lecz nie pozwalającą na modyfikowanie wartości jest stała. Tabela poniżej przedstawia zestawienie zmiennych dla kompilatora AVR-GCC oraz ich zakresy i wielkość zajmowanej pamięci: Typ char 8 Rozmiar (bitów) Wartość minimalna Wartość maksymalna signed char 8-128 127 unsigned char 8 0 255 short int 16-32768 32767 unsigned short int 16 0 65535 int 16-32768 32767 unsigned int 16 0 65535 long int 32-2 31 2 31-1 unsigned long int 32 0 2 32-1 long long int 64-2 63 2 63-1 unsigned long long int 64 0 2 64-1 float 32 ±1.18 10-38 ±3.4 10 38 double 32 ±1.18 10-38 ±3.4 10 38 long double 32 ±1.18 10-38 ±3.4 10 38

W AVR-GCC funkcjonują jeszcze typy takie jak na przykład: uint8_t - co oznacza odpowiednik typu unsigned char z tabeli powyżej albo uint16_t - odpowiednik unsigned short int zapis uint32_t oznacza unsigned (czyli bez znaku) integer (czyli całkowity) na 32 bitach. dla ćwiczenia spróbuj odgadnąć jaki typ odpowiada poniższym zapisom ile miejsca w pamięci zajmują oraz jaki jest zakres liczb przechowywanych przez nie: int16_t - int64_t - int8_t - uint64_t - Operatory Operatory pozwalają na operowanie zmienymi np. zapis wartości do zmiennych kontruowanie wyrażeń logicznych i arytmetycznych. Słowem dla maszyny cyfrowej jaką jest komputer i języka programowania za pomocą tworzymy oprogramowanie realizujące nasze zamierzone cele jest to jedna z podstawowych konstrukcji których poznanie i zapamiętanie jest podstawą. Bez nich tworzenie oprogramowania było by bardzo trudnie a może i niemożliwe. Operatory przypisania Nową wartość można zapisać w zmiennej używając operatora przypisania "="; instrukcję przypisania należy zakończyć średnikiem. Przykład: a = 100; //zapisanie do zmiennej nowej wartości równej 100 (dziesiętnie) a = 0xFF; //zapisanie do zmiennej a nowej wartości równej 0xFF (szesnastkowo) a = 0b00010010; //zapisanie do zmiennej a nowej wartości 0b0001001 (binarnie) Ta sama zmienna może stać po obu stronach operatora przypisania, przykład: a = a + 10; Powyższy zapis oznacza:

weź wartość zmiennej a i dodaj do niej liczbę 10; następnie wynik zapisz z powrotem do zmiennej a Przykładowo jeśli zmienna a ma wartość 10 to po tej operacji w tej samej zmiennej będziemy mieli już wartość 20. Zapis ten w języku C można skrócić do postaci: a += 10; jest to samo działanie jak powyżej. Obok operatora += są do dyspozycji podobnie działające operatory przypisania: -=, *=, /=, %=, ^=, =, &=, <<=, >>=. przykładowo: a -= 17; // czyli a = a - 17 a *= 2; // czyli a = a * 2 a /= 4; // czyli a = a / 4 a %= 4; // czyli a = a % 4 a ^= 0xaaaa; a = 0x5555; a &= 0xaaaa; // czyli a = a ^ 0xaaaa // czyli a = a 0x5555 // czyli a = a & 0xaaaa a <<= 8; // czyli a = a << 8 a >>= 4; // czyli a = a >> 4 Operatory arytmetyczne W języku C istnieją operatory arytmetyczne: + dodawania - odejmowania * mnożenia / dzielenia % dzielenia modulo (reszta z dzielenia całkowitego)

Jeśli oba argumenty operatora dzielenia / będą typu całkowitego, wtedy wynik operacji dzielenia będzie typu całkowitego i część ułamkowa wyniku będzie tracona. Resztę z dzielenia liczb całkowitych można wyliczyć posługując się operatorem % (dzielenia modulo). Inaczej jest, jeśli dzielna lub dzielnik albo oba argumenty operatora dzielenia / będą typu zmiennopozycyjnego (float, double), wtedy wynik dzielenia także będzie typu zmiennopozycyjnego. Operatory zwiększania i zmiejszania. W języku C istnieją operatory zwiększające lub zmniejszające o jeden wartości zmiennych. ++ zwiększ -- zmniejsz Sposób działania tych operatorów zależy od tego, czy ++(--) znajdują się po lewej, czy po prawej stronie zmiennej. Jeśli operator ++(--) stoi po lewej stronie zmiennej, wartość zmiennej zwiększa(zmniejsza) się o jeden przed użyciem wartości zmiennej. Jeśli operator ++(--) stoi po prawej stronie zmiennej, wartość zmiennej zwiększa(zmniejsza) się o jeden po użyciu wartości tej zmiennej. int a, b; b = 5; /* 'a' i 'b' będą równe 6 */ a = ++b ; /* 'a' będzie równe 6, 'b' będzie równe 7 */ a = b++ ; /* 'a' i 'b' będą równe 6 */ a = --b ; /* 'a' będzie równe 6, 'b' będzie równe 5 */ a = b-- ; Operatory logiczne, relacji i porównania W języku C dostępne są operatory relacji: > większy >= większy równy < mniejszy <= mniejszy równy Operatory przyrównania: == równy!= różny

Operatory logiczne: && AND OR! operator negacji Wynikiem działania operatorów: relacji, przyrównania i logicznych są wartości liczbowe: 0 - gdy fałsz, 1 - gdy prawda. W języku C wartość liczbowa 0 oznacza jednocześnie wartość logiczną FAŁSZ, a wartość 1 i każda inna wartość liczbowa różna od zera oznacza wartość logiczną PRAWDA Operatory bitowe W języku C istnieje sześć operatorów bitowych: bitowe OR & bitowe AND ^ bitowe XOR >> przesunięcie w prawo << przesunięcie w lewo ~ dopełnienie jednykowe Operacje bitowe działają na wartościach całkowitych i służą do manipulowania bitami, więc są szczególnie użyteczne przy programowaniu sprzętu - przy zabawie z bitami rejestrów I/O. Operatory bitowe & i mogą się mylić z opisanymi wcześniej operatorami logicznymi && i, dlatego szczegółowo, na przykładach, wyjaśnię różnice w działaniu operatorów bitowych i logicznych. W poniższych przykładach liczby wypisane są w postaci dwójkowej. operator bitowy " " - alternatywa (OR) 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 = 0 1 1 1 0 1 1 1 operator logiczny OR " " 0 1 0 1 0 1 0 1(PRAWDA bo wartość różna od zera) 0 0 1 1 0 0 1 1(PRAWDA) = 0 0 0 0 0 0 0 1(PRAWDA) operator "&" - bitowa koniunkcja (AND) 0 1 0 1 0 1 0 1 & 0 0 1 1 0 0 1 1 = 0 0 0 1 0 0 0 1 operator logiczny AND "&&" 0 1 0 1 0 1 0 1(PRAWDA) & 0 0 1 1 0 0 1 1(PRAWDA) = 0 0 0 0 0 0 0 1(PRAWDA)

operator "~" - dopełnienie jedynkowe ~ 1 0 0 1 1 0 0 1 = 0 1 1 0 0 1 1 0 operator logiczny negacja "!"! 1 0 0 1 1 0 0 1(PRAWDA) = 0 0 0 0 0 0 0 0(FAŁSZ) operator "^" - bitowa alternatywa wykluczająca (XOR) 0 1 0 1 0 1 0 1 ^ 0 0 1 1 0 0 1 1 = 0 1 1 0 0 1 1 0 operator "<<" - przesunięcie w lewo 1 0 0 1 1 0 0 1 << 3 = 1 1 0 0 1 0 0 0 operator ">>" - przesunięcie w prawo liczby bez znaku (unsigned) 1 0 0 1 1 0 0 1 >> 5 = 0 0 0 0 0 1 0 0 liczby ze znakiem (signed) 1 0 0 1 1 0 0 1 >> 5 = 1 1 1 1 1 1 0 0 Proszę zauważyć że, przesuwając bity liczby o jedną pozycję w lewo mnożymy wartość liczby razy dwa; a przesuwając o jedno pozycję w prawo, dzielimy liczbę przez dwa. Jeśli trzeba mnożyć(dzielić) liczby całkowite razy(przez) 2,4,8,2 n, to można przesuwać bity. A po co? Przecież są operatory arytmetyczne mnożenia i dzielenia: *, /. Na przykład, żeby zoptymalizować program pod kątem szybkości. Przesuwanie bitów liczby jest o wiele prostszą operacją w porównaniu z mnożeniem i dzieleniem. Dla 8 bitowych mikroprocesorów operacje mnożenia i dzielenia mogą być znaczącym obciążeniem. 2 * 2 = 4 00000010 << 1 = 00000100 3 * 4 = 12 00000011 << 2 = 00001100 9 * 8 = 72 00001001 << 3 = 01001000 67 / 16 = 4 (dzielenie całkowite) 01000011 >> 4 = 00000100 W liczbach ze znakiem(signed) najstarszy bit decyduje o znaku, więc w operacji przesuwania bitów w prawo liczb ze znakiem najstarszy bit pozostanie bez zmian. W przypadku przesuwania w prawo liczb bez znaku(unsigned) najstarszy bit otrzymuje wartość 0.

literatura: https://pl.wikipedia.org/wiki/zmienna_%28informatyka%29 http://hobby.abxyz.bplaced.net/index.php?pid=4&aid=4