dr inż. Jarosław Forenc

Podobne dokumenty
dr inż. Jarosław Forenc

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

Kodowanie liczb. Reprezentacja liczb całkowitych. Standard IEEE 754. dr inż. Jarosław Forenc

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

dr inż. Jarosław Forenc

Kodowanie informacji. Kody liczbowe

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

dr inż. Jarosław Forenc

Politechnika Białostocka

Pracownia Komputerowa wykład IV

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

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

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

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

Pracownia Komputerowa wyk ad IV

Jednostki informacji cyfrowej. Kodowanie znaków. Kodowanie liczb. Reprezentacja liczb w systemach komputerowych. Reprezentacja stałoprzecinkowa

Techniki multimedialne

Podstawy programowania w języku C i C++

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

Kodowanie liczb całkowitych w systemach komputerowych

1.1. Pozycyjne systemy liczbowe

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

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

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

ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów

dr inż. Jarosław Forenc

Wstęp do programowania

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

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

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

2 Przygotował: mgr inż. Maciej Lasota

Języki i paradygmaty programowania

Pracownia Komputerowa wykład V

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

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

Temat 7. Dekodery, enkodery

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

dr inż. Jarosław Forenc

Systemy pozycyjne. Systemy niepozycyjne. Kodowanie liczb. Kodowanie znaków. dr inż. Jarosław Forenc

Technologie Informacyjne

Jednostki informacji - bit. Kodowanie znaków: ASCII, ISO 8859, Unicode liczb: NKB (BCN), U2, BCD. Liczby zmiennoprzecinkowe standard IEEE 754

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

Cyfrowy zapis informacji. 5 grudnia 2013 Wojciech Kucewicz 2

Cyfrowy zapis informacji

Kodowanie liczb. Kodowanie znaków. Reprezentacja liczb w systemach komputerowych Reprezentacja stałoprzecinkowa. dr inŝ.

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

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

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

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

Reprezentacja stałoprzecinkowa. Reprezentacja zmiennoprzecinkowa zapis zmiennoprzecinkowy liczby rzeczywistej

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

Systemy liczenia. 333= 3*100+3*10+3*1

Naturalny kod binarny (NKB)

Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych

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

Podstawy programowania w języku C

Zmienne, stałe i operatory

DZIESIĘTNY SYSTEM LICZBOWY

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

( wykł. dr Marek Piasecki )

Spis treści WSTĘP CZĘŚĆ I. PASCAL WPROWADZENIE DO PROGRAMOWANIA STRUKTURALNEGO. Rozdział 1. Wybór i instalacja kompilatora języka Pascal

Programowanie strukturalne i obiektowe : podręcznik do nauki zawodu technik informatyk / Adam Majczak. Gliwice, cop

dr inż. Jarosław Forenc

Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,

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

Wielkości liczbowe. Wykład z Podstaw Informatyki dla I roku BO. Piotr Mika

SYSTEMY LICZBOWE. SYSTEMY POZYCYJNE: dziesiętny (arabski): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 rzymski: I, II, III, V, C, M

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

Teoretyczne Podstawy Informatyki

Język C zajęcia nr 5

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

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

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

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika

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

INFORMATYKA. Zajęcia organizacyjne. Arytmetyka komputerowa.

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Podstawy programowania C. dr. Krystyna Łapin

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

Wstęp do informatyki. Pojęcie liczebności. Zapis liczb. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

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

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

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

Język ludzki kod maszynowy

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Programowanie strukturalne i obiektowe

Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek

Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe

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

Arytmetyka binarna - wykład 6

Stan wysoki (H) i stan niski (L)

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

Pracownia Komputerowa wyk ad V

Wielkość analogowa w danym przedziale swojej zmienności przyjmuje nieskończoną liczbę wartości.

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

Zapis liczb binarnych ze znakiem

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

Transkrypt:

Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 2018/2019 Wykład nr 7 (12.04.2019)

Rok akademicki 2018/2019, Wykład nr 7 2/33 Plan wykładu nr 7 Kodowanie liczb Język C kod 2 z 5, kod Graya pętla for, operatory ++ i Reprezentacja liczb całkowitych liczby bez znaku

Rok akademicki 2018/2019, Wykład nr 7 3/33 Kodowanie Kodowanie - proces przekształcania jednego rodzaju postaci informacji na inną postać Kody Alfanumeryczne Liczbowe Inne ASCII ISO 646 ISO 8859 EBCDIC Unicode NKB BCD 1 z N 2 z 5 U2 Graya Morse a

Rok akademicki 2018/2019, Wykład nr 7 4/33 Kody liczbowe - Kod 2 z 5 Kod 5-bitowy: 2 bity zawsze równe 1, a 3 bity zawsze równe 0 Koduje 10 znaków (cyfry dziesiętne), kody nie są wzajemnie jednoznaczne (ta sama wartość może być zakodowana w różny sposób) Kod stałowagowy Kod detekcyjny Stosowany głównie w kodach kreskowych

Rok akademicki 2018/2019, Wykład nr 7 5/33 Kody liczbowe - Kod 2 z 5 Industrial (1960 r.) Jednowymiarowy kod kreskowy kodujący cyfry: 0 9 Znak to 5 pasków: 2 szerokie i 3 wąskie Szeroki pasek jest wielokrotnością wąskiego, szerokości muszą być takie same dla całego kodu Struktura kodu: start: 11011010 numer stop: 11010110

Rok akademicki 2018/2019, Wykład nr 7 6/33 Kod Graya (refleksyjny) Kod dwójkowy, bezwagowy, niepozycyjny Dwa kolejne słowa kodowe różnią się stanem jednego bitu Kod cykliczny - ostatni i pierwszy wyraz również różnią się stanem jednego bitu

Rok akademicki 2018/2019, Wykład nr 7 7/33 Kod Graya Stosowany w przetwornikach analogowo-cyfrowych, do cyfrowego pomiaru analogowych wielkości mechanicznych (np. kąt obrotu) http://tams-www.informatik.uni-hamburg.de /applets/hades/webdemos/10-gates/15-graycode/dual2gray.html

Rok akademicki 2018/2019, Wykład nr 7 8/33 Język C - suma kolejnych 10 liczb: 1+2+ +10 #include <stdio.h> Suma wynosi: 55 int main(void) { int suma; suma = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10; printf("suma wynosi: %d\n",suma); } return 0;

Rok akademicki 2018/2019, Wykład nr 7 9/33 Język C - suma kolejnych 100 liczb: 1+2+ +100 #include <stdio.h> Suma wynosi: 5050 int main(void) { int suma=0, i; for (i=1; i<=100; i=i+1) suma = suma + i; printf("suma wynosi: %d\n",suma); } return 0;

Rok akademicki 2018/2019, Wykład nr 7 10/33 Język C - pętla for for (wyr1; wyr2; wyr3) instrukcja wyr1 wyr1, wyr2, wyr3 - dowolne wyrażenia w języku C wyr2 0 TAK NIE Instrukcja: instrukcja prosta - jedna instrukcja zakończona średnikiem złożona - jedna lub kilka instrukcji objętych nawiasami klamrowymi wyr3

Rok akademicki 2018/2019, Wykład nr 7 11/33 Język C - pętla for Najczęściej stosowana postać pętli for int i; for (i = 0; i < 10; i = i + 1) instrukcja Instrukcja zostanie wykonana 10 razy (dla i = 0, 1, 2, 9) Funkcje pełnione przez wyrażenia for (inicjalizacja;test;aktualizacja) instrukcja

Rok akademicki 2018/2019, Wykład nr 7 12/33 Język C - pętla for (wyświetlenie tekstu) #include <stdio.h> int main(void) { int i; Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne Programowanie nie jest trudne for (i=0; i<5; i=i+1) printf("programowanie nie jest trudne\n"); } return 0;

Rok akademicki 2018/2019, Wykład nr 7 13/33 Język C - pętla for (suma liczb: 1 + 2 + + N) #include <stdio.h> #define N 1234 Suma 1234 liczb to 761995 int main(void) { int i, suma=0; for (i=1; i<=n; i++) suma = suma + i; printf("suma %d liczb to %d\n", N, suma); } return 0;

Rok akademicki 2018/2019, Wykład nr 7 14/33 Język C - pętla for (przykłady) for (i=0; i<10; i++) printf("%d ",i); 0 1 2 3 4 5 6 7 8 9 for (i=0; i<10; i++) printf("%d ",i+1); 1 2 3 4 5 6 7 8 9 10 for (i=1; i<=10; i++) printf("%d ",i); 1 2 3 4 5 6 7 8 9 10

Rok akademicki 2018/2019, Wykład nr 7 15/33 Język C - pętla for (przykłady) for (i=1; i<10; i=i+2) printf("%d ",i); 1 3 5 7 9 for (i=10; i>0; i--) printf("%d ",i); 10 9 8 7 6 5 4 3 2 1 for (i=-9; i<=9; i=i+3) printf("%d ",i); -9-6 -3 0 3 6 9

Rok akademicki 2018/2019, Wykład nr 7 16/33 Język C - pętla for (break, continue) W pętli for można stosować instrukcje skoku: break i continue int i; for (i=1; i<10; i++) { if (i%2==0) continue; } if (i%7==0) break; printf("%d\n",i); continue przerywa bieżącą iterację i przechodzi do obliczania wyr3 break przerywa wykonywanie pętli 1 3 5

Rok akademicki 2018/2019, Wykład nr 7 17/33 Język C - pętla for (najczęstsze błędy) Postawienie średnika na końcu pętli for int i; for (i=0; i<10; i++); printf("%d ",i); 10 Przecinki zamiast średników pomiędzy wyrażeniami int i; for (i=0, i<10, i++) printf("%d ",i); Błąd kompilacji! error C2143: syntax error : missing ';' before ')'

Rok akademicki 2018/2019, Wykład nr 7 18/33 Język C - pętla for (najczęstsze błędy) Błędny warunek - brak wykonania instrukcji int i; for (i=0; i>10; i++) printf("%d ",i); Błędny warunek - pętla nieskończona int i; for (i=1; i>0; i++) printf("%d ",i); 1 2 3 4 5 6 7 8 9...

Rok akademicki 2018/2019, Wykład nr 7 19/33 Język C - pętla nieskończona for (wyr1; wyr2; wyr3) instrukcja Wszystkie wyrażenia (wyr1, wyr2, wyr3) w pętli for są opcjonalne for ( ; ; ) instrukcja - pętla nieskończona W przypadku braku wyr2 przyjmuje się, że jest ono prawdziwe

Rok akademicki 2018/2019, Wykład nr 7 20/33 Język C - zagnieżdżanie pętli for Jako instrukcja w pętli for może występować kolejna pętla for int i, j; for (i=1; i<=3; i++) // pętla zewnętrzna for (j=1; j<=2; j++) // pętla wewnętrzna printf("i: %d j: %d\n",i,j); i: 1 j: 1 i: 1 j: 2 i: 2 j: 1 i: 2 j: 2 i: 3 j: 1 i: 3 j: 2

Rok akademicki 2018/2019, Wykład nr 7 21/33 Język C - operator inkrementacji (++) Jednoargumentowy operator ++ zwiększa wartość zmiennej o 1 (nie wolno stosować go do wyrażeń) Operator ++ może występować jako przedrostek lub przyrostek Zapis Nazwa Znaczenie ++x x++ preinkrementacji postinkrementacji wartość zmiennej jest modyfikowana przed jej użyciem wartość zmiennej jest modyfikowana po użyciu jej poprzedniej wartości

Rok akademicki 2018/2019, Wykład nr 7 22/33 Język C - operator inkrementacji (++) Przykład int x = 1, y; y = 2 * ++x; int x = 1, y; y = 2 * x++; Kolejność operacji ++x x = 2 2 * ++x 2 * 2 y = 2 * ++x y = 4 2 * x 2 * 1 y = 2 * x y = 2 x++ x = 2 Wartości zmiennych x = 2 y = 4 x = 2 y = 2

Rok akademicki 2018/2019, Wykład nr 7 23/33 Język C - operator inkrementacji (++) Miejsce umieszczenia operatora ++ nie ma znaczenia w przypadku instrukcji typu: x++; ++x; równoważne x = x + 1; Nie należy stosować operatora ++ do zmiennych pojawiających się w wyrażeniu więcej niż jeden raz x = x++; x = ++x; Zgodnie ze standardem języka C wynik powyższych instrukcji jest niezdefiniowany

Rok akademicki 2018/2019, Wykład nr 7 24/33 Język C - operator dekrementacji (--) Jednoargumentowy operator -- zmniejsza wartość zmiennej o 1 (nie wolno stosować go do wyrażeń) Operator -- może występować jako przedrostek lub przyrostek Zapis Nazwa Znaczenie --x x-- predekrementacji postdekrementacji wartość zmiennej jest modyfikowana przed jej użyciem wartość zmiennej jest modyfikowana po użyciu jej poprzedniej wartości

Rok akademicki 2018/2019, Wykład nr 7 25/33 Język C - priorytet operatorów ++ i -- Priorytet Operator / opis 1 ++ -- (przyrostki) () []. -> 2 ++ -- (przedrostki) sizeof (typ) + -! ~ * & (jednoargumentowe) 3 * / % 4 + - (dwuargumentowe) 5 << >> 6 < > <= >= 7 ==!= 8 & (bitowy) 9 ^

Rok akademicki 2018/2019, Wykład nr 7 26/33 Reprezentacja liczb w systemach komputerowych

Rok akademicki 2018/2019, Wykład nr 7 27/33 Liczby całkowite bez znaku Zapis liczby w systemie dwójkowym: Używając n-bitów można zapisać liczbę z zakresu: n X( 2) = 0, 2 1 8 bitów 16 bitów 32 bity 64 bity 0... 255 0... 65 535 0... 4 294 967 295 0... 18 446 744 073 709 551 615 18 trylionów 446 biliardów 744 biliony 73 miliardy 709 milionów 551 tysięcy 615

Rok akademicki 2018/2019, Wykład nr 7 28/33 Liczby całkowite bez znaku w języku C Typy zmiennych całkowitych bez znaku stosowane w języku C: Nazwa typu Rozmiar (bajty) Zakres wartości unsigned char 1 bajt 0 255 unsigned short int 2 bajty 0 65 535 unsigned int 4 bajty 0 4 294 967 295 unsigned long int 4 bajty 0 4 294 967 295 unsigned long long int 8 bajtów 0 18 446 744 073 709 551 615 W nazwach typów short i long można pominąć słowo int: unsigned short int unsigned short unsigned long int unsigned long unsigned long long int unsigned long long

Rok akademicki 2018/2019, Wykład nr 7 29/33 Liczby całkowite bez znaku w języku C Typ unsigned char (1 bajt): MSB (Most Significant Bit) - najbardziej znaczący bit, najstarszy bit, największa waga LSB (Least Significant Bit) - najmniej znaczący bit, najmłodszy bit, najmniejsza waga Zakres wartości: dolna granica: 00000000 (2) = 00 (16) = 0 (10) górna granica: 11111111 (2) = FF (16) = 255 (10)

Rok akademicki 2018/2019, Wykład nr 7 30/33 Liczby całkowite bez znaku w języku C Typ unsigned short int (2 bajty): Typy unsigned int (4 bajty) i unsigned long int (4 bajty): 2 15 0 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 15 14 13 12 11 10 9 8 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 7 6 5 4 3 2 1 0 Typ unsigned long long int (8 bajtów):

Rok akademicki 2018/2019, Wykład nr 7 31/33 Liczby całkowite bez znaku w języku C #include <stdio.h> unsigned short int: 65535 0 1 unsigned int: 4294967295 0 1 unsigned long int: 4294967295 0 1 unsigned long long int: 18446744073709551615 0 1 int main() /* przepełnienie zmiennej, ang. integer overflow */ { unsigned short int usi = 65535; unsigned int ui = 4294967295; unsigned long int uli = 4294967295; unsigned long long int ulli = 18446744073709551615; } printf("unsigned short int: %hu %hu %hu\n",usi,usi+1,usi+2); printf("unsigned int: %u %u %u\n",ui,ui+1,ui+2); printf("unsigned long int: %lu %lu %lu\n",uli,uli+1,uli+2); printf("unsigned long long int: %llu %llu %llu\n", ulli,ulli+1,ulli+2); return 0;

Rok akademicki 2018/2019, Wykład nr 7 32/33 Liczby całkowite bez znaku w języku C #include <stdio.h> unsigned short int: 1 0 65535 unsigned int: 1 0 4294967295 unsigned long int: 1 0 4294967295 unsigned long long int: 1 0 18446744073709551615 int main() /* przepełnienie zmiennej, ang. integer overflow */ { unsigned short int usi = 1; unsigned int ui = 1; unsigned long int uli = 1; unsigned long long int ulli = 1; } printf("unsigned short int: %hu %hu %hu\n",usi,usi-1,usi-2); printf("unsigned int: %u %u %u\n",ui,ui-1,ui-2); printf("unsigned long int: %lu %lu %lu\n",uli,uli-1,uli-2); printf("unsigned long long int: %llu %llu %llu\n", ulli,ulli-1,ulli-2); return 0;

Rok akademicki 2018/2019, Wykład nr 7 33/33 Koniec wykładu nr 7 Dziękuję za uwagę!