Informatyka Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia stacjonarne I stopnia Rok akademicki 8/9 Wykład nr 4 (.3.9)
Rok akademicki 8/9, Wykład nr 4 /33 Plan wykładu nr 4 Systemy liczbowe systemy pozycyjne (dziesiętny, dwójkowy, szesnastkowy) systemy niepozycyjne (rzymski) Konwersje między systemami liczbowymi Język C instrukcja warunkowa if operatory relacyjne (porównania) i logiczne wyrażenia logiczne
Rok akademicki 8/9, Wykład nr 4 3/33 Systemy liczbowe System liczbowy - zbiór zasad umożliwiających zapis liczb za pomocą cyfr oraz wykonywanie działań na tych liczbach Pozycyjny - znaczenie cyfry jest zależne od miejsca (pozycji), które zajmuje ona w liczbie system dziesiętny - liczba (każda cyfra ma inne znaczenie) Niepozycyjny - znaczenie cyfry jest niezależne od miejsca położenia w liczbie system rzymski - liczba III
Rok akademicki 8/9, Wykład nr 4 4/33 System dziesiętny (ang. decimal) p - podstawa systemu pozycyjnego, D - zbiór dozwolonych cyfr p, D {,,, 3, 4, 5, 6, 7, 8, 9} 48,5 3 + 4 + + 8 + + 5 + 4 + + 8 +, +,5
Rok akademicki 8/9, Wykład nr 4 5/33 System dwójkowy (ang. System dwójkowy (ang. binary binary) w systemie dwójkowym: p, D {, } 3 3 () 3,65,5,5 4 8, + + + + + + + + + + + +
Rok akademicki 8/9, Wykład nr 4 6/33 System dwójkowy - zastosowania Powszechnie używany w informatyce, technice cyfrowej
Rok akademicki 8/9, Wykład nr 4 7/33 System szesnastkowy (ang. hexadecimal) System heksadecymalny p 6, D {,,, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F} Powszechnie używany w informatyce - jeden bajt można zapisać za pomocą tylko dwóch cyfr szesnastkowych 3 A5D 3 ( 6) 3 6 + 6 + 5 6 + 3 6 494 Sposoby zapisu liczb w systemie szesnastkowym:
Rok akademicki 8/9, Wykład nr 4 8/33 System szesnastkowy - zastosowania Zapis 4-bitowego koloru RGB (Red-Green-Blue), 6 mln kolorów Każda barwa przyjmuje wartość z zakresu:..55,..ff (6) #FF48B8
Rok akademicki 8/9, Wykład nr 4 9/33 System szesnastkowy - zastosowania Zapis 4-bitowego koloru RGB (Red-Green-Blue), 6 mln kolorów Kolory w dokumentach HTML: <BODY bgcolor"#336699" text"#" link"#ffff" vlink"#33ffff" alink"#ff">
Rok akademicki 8/9, Wykład nr 4 /33 System szesnastkowy - zastosowania 48-bitowy adres fizyczny urządzenia (MAC - Media Access Control) http://hwaddress.com
Rok akademicki 8/9, Wykład nr 4 /33 Przykład systemu niepozycyjnego - system rzymski W systemie rzymskim posługujemy się siedmioma znakami: I - V - 5 X - L - 5 C - D - 5 M - Za pomocą dostępnych symboli można określić liczby od do 3999 System addytywny - wartość liczby określa się na podstawie sumy wartości cyfr, np. II (+), XXX (++3) CLX (+5+6), MMXII (++++) Wyjątkiem od powyższej zasady są liczby do opisu których używa się odejmowania, np. IV (5-4), IX (-9), XL (5-4), XC (-9) Stosowany w łacińskiej części Europy do końca Średniowiecza Niewygodny w prowadzeniu nawet prostych działań arytmetycznych, brak ułamków
Rok akademicki 8/9, Wykład nr 4 /33 Przykład systemu niepozycyjnego - system rzymski Zasady tworzenia liczb: zestawiamy odpowiednie znaki od oznaczającego liczbę największą do oznaczającego liczbę najmniejszą XVI (X) + 5(V) + (I) 6 jeżeli składnik liczby, którą piszemy, jest wielokrotnością liczby nominalnej, wtedy zapisywany jest z użyciem kilku następujących po sobie znaków CCC (C) + (C) + (C) 3 dodatkowo należy zachować zasadę nie pisania czterech tych samych znaków po sobie, lecz napisać jeden znak wraz ze znakiem oznaczającym wartość większą o jeden rząd liczbowy CD 5(D) - (C) 4
Rok akademicki 8/9, Wykład nr 4 3/33 Przykład systemu niepozycyjnego - system rzymski Zasady odczytu liczb: cyfry jednakowe są dodawane MMM (M) + (M) + (M) 3 cyfry mniejsze stojące przed większymi są odejmowane od nich CDXCIV 5(D) - (C) + (C) - (X) + 5(V) - (I) 494 cyfry mniejsze stojące za większymi są do nich dodawane MDCLX (M) + 5(D) + (C) + 5(L) + (X) 66
Rok akademicki 8/9, Wykład nr 4 4/33 Konwersja na system dziesiętny p 4, D {,,, 3} 3 3 3 (4) (4) (4) (4)? 4 + 4 + 3 4 + 4 + 3 6 + 64 + 56 + 4 3 + + 48 + 64 + 5 66 3 + 4 4 p 7, D {,,, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, G} 7 3 7 7 7 AC4 AC4 AC4 AC4 AC4 (7) (7) (7) (7)? 4 7 + 7 + 7 4 + 7 + 89 + 493 4 + 34 + 3468 + 493 5636 + 7 3
Rok akademicki 8/9, Wykład nr 4 5/33 Konwersja na system dziesiętny (schemat Hornera) p 4, D {,,, 3} 3 w w w w w w (4) x x x x x 4 3 w x 4 x3 x x x w( ) + w + w + w + w + w p + 4 p + 4 9 p 3 + 9 4 39 p + 39 4 56 p + 56 4 66
Rok akademicki 8/9, Wykład nr 4 6/33 Konwersja z systemu dziesiętnego na dowolny zamiana liczby z systemu p na system p 66?() 66 () 66 / 33/ 56 / 78/ 39 / 9 / 9 / 4 / / / 33 56 78 39 9 9 4 kolejność odczytywania cyfr liczby w systemie dwójkowym kończymy, gdy liczba dziesiętna ma wartość
Rok akademicki 8/9, Wykład nr 4 7/33 Konwersja z systemu dziesiętnego na dowolny zamiana liczby z systemu p na system p 7 66?(7) 66 553(7) 66 / 7 89 / 7 / 7 / 7 89 zamiana liczby z systemu p na system p 4 66 /4 44 /4 3/4 44 3 66?(4) 66 3Α(4) 3 5 5 3 Α
Rok akademicki 8/9, Wykład nr 4 8/33 Szybkie konwersje: 4, 8, 6 4, 8, 6 4 8 6 4 8 6
Rok akademicki 8/9, Wykład nr 4 9/33 Język C - Pierwiastek kwadratowy #include <stdio.h> #include <math.h> int main(void) { float x, y; Podaj liczbe: 5 Pierwiastek liczby: 3.87983 Podaj liczbe: -5 Pierwiastek liczby: -.#IND printf("podaj liczbe: "); scanf("%f",&x); y sqrt(x); printf("pierwiastek liczby: %f\n",y); } return ;
Rok akademicki 8/9, Wykład nr 4 /33 Język C - Pierwiastek kwadratowy #include <stdio.h> #include <math.h> int main(void) { float x, y; printf("podaj liczbe: "); scanf("%f",&x); Podaj liczbe: 5 Pierwiastek liczby: 3.87983 Podaj liczbe: -5 Blad! Liczba ujemna if (x>) { y sqrt(x); printf("pierwiastek liczby: %f\n",y); } else printf("blad! Liczba ujemna\n"); } return ;
Rok akademicki 8/9, Wykład nr 4 /33 Język C - instrukcja warunkowa if if (wyrażenie) instrukcja if (wyrażenie) instrukcja else instrukcja jeśli wyrażenie jest prawdziwe, to wykonywana jest instrukcja gdy wyrażenie jest fałszywe, to instrukcja nie jest wykonywana jeśli wyrażenie jest prawdziwe, to wykonywana jest instrukcja, zaś instrukcja nie jest wykonywana gdy wyrażenie jest fałszywe, to wykonywana jest instrukcja, zaś instrukcja nie jest wykonywana Wyrażenie w nawiasach: prawdziwe - gdy jego wartość jest różna od zera fałszywe - gdy jego wartość jest równa zero
Rok akademicki 8/9, Wykład nr 4 /33 Język C - instrukcja warunkowa if if (wyrażenie) instrukcja Instrukcja: prosta - jedna instrukcja zakończona średnikiem złożona - jedna lub kilka instrukcji objętych nawiasami klamrowymi if (x>) printf("inst"); if (x>) { printf("inst"); printf("inst");... }
Rok akademicki 8/9, Wykład nr 4 3/33 Język C - instrukcja warunkowa if if (wyr) if (wyr) { } if (wyr) else if (wyr) { } else { } if (wyr) { } else if (wyr) else { } if (wyr) { } else { }
Rok akademicki 8/9, Wykład nr 4 4/33 Język C - Operatory relacyjne (porównania) Operator Przykład Znaczenie > a > b a większe od b < a < b a mniejsze od b > a > b a większe lub równe b < a < b a mniejsze lub równe b a b a równe b! a! b a nierówne b (a różne od b) Wynik porównania jest wartością typu int i jest równy: - gdy warunek jest prawdziwy - gdy warunek jest fałszywy (nie jest prawdziwy)
Rok akademicki 8/9, Wykład nr 4 5/33 Język C - Operatory logiczne Operator Znaczenie! NOT, nie && AND, i OR, lub Opis jednoargumentowy operator negacji logicznej - zmienia argument różny od zera na wartość, a argument równy zero na wartość dwuargumentowy operator koniunkcji, iloczyn logiczny dwuargumentowy operator alternatywy, suma logiczna Wynikiem zastosowania operatorów logicznych && i jest wartość typu int równa (prawda) lub (fałsz) if (x>5 && x<8) if (x<5 x>8)
Rok akademicki 8/9, Wykład nr 4 6/33 Język C - Wyrażenia logiczne Wyrażenia logiczne mogą zawierać: operatory relacyjne operatory logiczne operatory arytmetyczne operatory przypisania zmienne stałe wywołania funkcji Kolejność operacji wynika z priorytetu operatorów Operator Typ operatora! logiczny * / % arytmetyczne + - arytmetyczne > < > < relacyjne! relacyjne && logiczny logiczny przypisania
Rok akademicki 8/9, Wykład nr 4 7/33 Język C - Wyrażenia logiczne int x, y, z ; if (x ) if (x ) wynik: (prawda) wynik: (fałsz) (!!!) if (x! ) if (x! ) wynik: (fałsz) wynik: (prawda) (!!!) if ( z > x + y ) if (z > (x + y)) wynik: (prawda)
Rok akademicki 8/9, Wykład nr 4 8/33 Język C - Wyrażenia logiczne int x, y, z ; if (x>&&x<5) if ((x>)&&(x<5)) wynik: (fałsz) Wyrażenia logiczne obliczane są od strony lewej do prawej Proces obliczeń kończy się, gdy wiadomo, jaki będzie wynik całego wyrażenia if (<x<5) wynik: (prawda) (!!!)
Rok akademicki 8/9, Wykład nr 4 9/33 Język C - Wyrażenia logiczne W przypadku sprawdzania czy wartość wyrażenia jest równa lub różna od zera można zastosować skrócony zapis Zamiast: if (x) if (x!) można napisać: if (!x) if (x)
Rok akademicki 8/9, Wykład nr 4 3/33 Język C - BMI BMI - współczynnik powstały przez podzielenie masy ciała podanej w kilogramach przez kwadrat wzrostu podanego w metrach BMI masa wzrost Dla osób dorosłych: BMI < 8,5 - wskazuje na niedowagę BMI 8,5 i BMI < 5 - wskazuje na prawidłową masę ciała BMI 5 - wskazuje na nadwagę
Rok akademicki 8/9, Wykład nr 4 3/33 Język C - BMI #include <stdio.h> int main(void) { double masa, wzrost, bmi; Podaj mase [kg]: 84 Podaj wzrost [m]:.85 bmi: 4.54 Norma printf("podaj mase [kg]: "); scanf("%lf",&masa); printf("podaj wzrost [m]: "); scanf("%lf",&wzrost); bmi masa / (wzrost*wzrost); printf("bmi: %.f\n",bmi); if (bmi<8.5) printf("niedowaga\n"); if (bmi>8.5 && bmi<5) printf("norma\n"); if (bmi>5) printf("nadwaga\n"); } return ;
Rok akademicki 8/9, Wykład nr 4 3/33 Język C - BMI Zamiast trzech instrukcji if: if (bmi<8.5) printf("niedowaga\n"); if (bmi>8.5 && bmi<5) printf("norma\n"); if (bmi>5) printf("nadwaga\n"); można zastosować tylko dwie: if (bmi<8.5) printf("niedowaga\n"); else if (bmi<5) printf("norma\n"); else printf("nadwaga\n");
Rok akademicki 8/9, Wykład nr 4 33/33 Koniec wykładu nr 4 Dziękuję za uwagę!