Podstawy programowania
|
|
- Wacława Laskowska
- 2 lat temu
- Przeglądów:
Transkrypt
1 Podstawy programowania Grzegorz Jabłoński Katedra Mikroelektroniki i Technik Informatycznych tel. (631)
2 Historia języka C Ken Thompson projektuje Unix, język B z BCPL Thompson & Ritchie przekształcają B na C K&R s The C Programming Language ANSI tworzy komitet standaryzacyjny języka C K&R uaktualniony zgodnie z wersją roboczą ANSI C ANSI zatwierdza C (zwany C89 ) ISO zatwierdza C (zwany C90 ) Uformowany nowy komitet dla C9X Nowy standard ISO (zwany C99 ) ANSI zatwierdza C99
3 Historia języka C 3
4 Programowanie strukturalne C, Pascal, Fortran są proceduralnymi językami programowania. Program w języku proceduralnym składa się z listy instrukcji, pętli i skoków warunkowych. Dla małych programów żadna inna zasada organizacyjna (paradygmat) nie jest potrzebna. Większe programy dzieli się na mniejsze jednostki. Program proceduralny jest podzielony na funkcje, które w idealnym przypadku mają ściśle określony cel i interfejs dla innych funkcji. Koncepcja podziału programu na funkcję można dalej rozszerzyć poprzez grupowanie pokrewnych funkcji w moduły. Podział programu na funkcje i moduły jest kluczową koncepcją programowania strukturalnego. 4
5 Problemy z programowaniem strukturalnym 5 Funkcje mają nieograniczony dostęp do danych globalnych Funkcja A: dane lokalne Funkcja B: dane lokalne Funkcja C: dane lokalne dane globalne X dane globalney dane globalne Z Duża liczba potencjalnych powiązań między funkcjami i danymi (wszystko jest powiązane z wszystkim, brak wyraźnych granic) trudno wyrazić strukturę programu trudno modyfikować i utrzymywać program np. trudno stwierdzić, która funkcja operuje na których danych
6 Od danych do struktur danych 6 dane na poziomie procesora proste typy danych 'A' agregaty tablica struktura struktury danych stos kolejka drzewo
7 Na każdym poziomie abstrakcji... 7 Nie chcemy zajmować się budową obiektów niższego poziomu Chcemy zajmować się semantyką danych na bieżącym poziomie Co to jest? Co z tym możemy zrobić?
8 Proste typy danych 8
9 Proste typy danych 9 Liczby całkowite 1, 10, 999, Liczby zmiennoprzecinkowe , 0.003, Znaki 'A', 'B', '_', 'A'
10 Reprezentacja liczb całkowitych notacja pozycyjna Podstawa systemu liczbowego B B symboli na cyfrę: Podstawa 10 (dziesiętny): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Podstawa 2 (dwójkowy): 0, 1 Reprezentacja liczb: d 31 d d 1 d 0 jest liczbą 32-bitową wartość = d 31 B 31 + d 30 B d 1 B 1 + d 0 B 0 Binarnie: 0,1 (Używając cyfr dwójkowych, tzw. bitów) liczby dwójkowe często zapisywane 0b niestandardowe rozszerzenie 0b11010 = = = 26 5-cyfrowa liczba binarna zamienia się w dwucyfrową dziesiętną Czy istnieje podstawa łatwo konwertowalna do podstawy 2? 10
11 Liczby szesnastkowe podstawa Cyfry szesnastkowe: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Normalne cyfry + 6 dodatkowych z alfabetu W C zapisywane jako 0x (np., 0xFAB5) Konwersja: liczba binarna liczba szesnastkowa 1 cyfra szesnastkowa reprezentuje 16 różnych wartości 4 cyfry binarne reprezentują 16 różnych wartości 1 cyfra szesnastkowa zastępuje 4 cyfry binarne Jedna cyfra szesnastkowa to nibble. Dwie to bajt. Przykład: (binarnie) = 0x?
12 Liczby dziesiętne, szesnastkowe, binarne 12 Przykłądy: (binarnie) = 0xAC (binarnie) = (binarnie) = 0x17 0x3F9 = (binarnie) Jak konwertować między liczbami szesnastkowymi i dziesiętnymi? ZAPAMIĘTAĆ! A B C D E F 1111
13 Reprezentacja liczb ujemnych 13 Najprostsze rozwiązanie: najbardziej znaczący bit określa znak liczby 0 +, 1 - Reszta bitów reprezentuje moduł liczby Reprezentacja znak-moduł dla 32 bitowych liczb ma postać: w reprezentacji znak-moduł ma postać:
14 Wady reprezentacji znak-moduł 14 Komplikacja układów arytmetycznych Specjalne warunki określające, czy znaki są jednakowe, czy różne dwa zera 0x = x = Co dwa zera oznaczają dla programisty? Dlatego reprezentacji znak-moduł nie stosuje się w praktyce
15 Standardowa reprezentacja liczb ujemnych 15 Jaki będzie rezultat przy odejmowaniu liczby większej od mniejszej przy kodowaniu w naturalnym kodzie binarnym? Nastąpi pożyczka od łańcucha wiodących zer, w wyniku czego rezultat będzie miał szereg wiodących jedynek = Z braku lepszej alternatywy, wybierzmy reprezentację upraszczającą sprzęt Jak w przypadku reprezentacji znak-moduł, wiodące zera liczba dodatnia, wiodące jedynki liczba ujemna xxx 0, xxx < to -1 Ta reprezentacja zwana jest kodem uzupełnień do dwóch (U2)
16 Oś liczbowa w kodzie U2: N = N-1 liczb nieujemnych 2 N-1 liczb ujemnych jedno zero ile liczb dodatnich?
17 Kod uzupełnień do dwóch dla N= = = = = 2,147,483, = 2,147,483, = 2,147,483, = 2,147,483, = 2,147,483, = 2,147,483, t2 = = = 1 10 Jedno zero, najstarszy bit zwany bitem znaku 1 dodatkowa liczba ujemna: brak dodatniego odpowiednika dla 2,147,483,
18 Wzór na kod uzupełnień do dwóch 18 Może reprezentować dodatnie i ujemne liczby jako sumę wartości poszczególnych bitów pomnożonych przez potęgi dwójki: d 31 x -(2 31 ) + d 30 x d 2 x d 1 x d 0 x 2 0 Przykład: = 1x-(2 3 ) + 1x x x2 0 = = = = -3 10
19 Kod uzupełnień do dwóch: liczba przeciwna 19 Zamienić każde 0 na 1 oraz 1 na 0 (zanegować, uzupełnić do jedynki), a następnie dodać 1 do wyniku Dowód: Suma liczby i jej uzupełnienia jedynkowego wynosi Jednocześnie = Niech x dopełnienie jedynkowe reprezentacji liczby x Wówczas x + x = -1 x + x + 1 = 0 x + 1 = -x Przykład: x : x : : () : :
20 Kod uzupełnień do dwóch: rozszerzenie bitem znaku 20 Konwersja liczby w kodzie U2 zapisanej z użyciem n bitów na więcej niż n bitów Należy powielić najbardziej znaczący bit (bit znaku) wypełniając nim nowe bity dodatnia liczba w kodzie U2 ma nieskończoną liczbę wiodących zer ujemna liczba w kodzie U2 ma nieskończoną liczbę wiodących jedynek Reprezentacja binarna ukrywa wiodące bity, rozszerzenie bitem znaku pokazuje niektóre z nich Rozszerzenie 16-bitowej reprezentacji na 32-bity:
21 Kod U2: mnożenie i dzielenie przez 2 21 Mnożenie przez 2 to przesunięcie w lewo (o ile nie wystąpi przepełnienie) (-5 10 ) * 2 10 = * 2 10 = * 2 10 = * 2 10 = Dzielenie przez 2 wymaga wsunięcia z lewej strony kopii najbardziej znaczącego bitu (-4 10 ) / 2 10 = / 2 10 = (4 10 ) / 2 10 = / 2 10 =
22 Przepełnienie 22 Układy bitów zaprezentowane uprzednio nie są liczbami całkowitymi, mogą reprezentować ograniczony zakres liczb. Liczby mają nieskończoną liczbę cyfr prawie wszystkich jednakowych (00 0 or 11 1) z wyjątkiem pewnej liczby cyfr z prawej strony Zazwyczaj nie pokazujemy cyfr wiodących Jezeli wynik dodawania (lub -, *, / ) nie może być reprezentowany przez liczbę bitów zaimplementowaną sprzętowo, mówimy że wystąpiło przepełnienie unsigned
23 Typy całkowite w języku C 23 signed i unsigned traktowane jako liczby odpowiednio ze znakiem i bez znaku liczby ze znakiem zwykle implementowane w kodzie U2 ta sama liczba bitów, różny zakres dokładny rozmiar i zakres typów całkowitych nie jest zdefiniowany w standardzie, zależy od implementacji. liczbę bajtów zajmowaną przez zmienną danego typu można odczytać za pomocą operatora sizeof() zakres wartości które zmienna danego typu może przyjmować można odczytać używając makrodefinicji z pliku nagłówkowego limits.h
24 24 Typ char standard nie określa, czy to typ ze znakiem, czy bez znaku musi przechować każdy znak z zestawu znaków można go dodatkowo uściślić przy pomocy słowa kluczowego signed lub unsigned z definicji, sizeof(char) == 1 ma co najmniej 8 bitów char c1; /* signed or unsigned */ unsigned char c2; signed char c3; printf("%d\n", sizeof(c1)); /* prints 1 */ printf("%d\n", sizeof(char)); /* also prints 1 */
25 Typ char makrodefinicje w <limits.h> 25 CHAR_BIT Makro podaje liczbę bitów używaną do reprezentacji obiektu typu char CHAR_MAX Makro podaje maksymalną wartość dla typu char. Jest ona równa: SCHAR_MAX jeżeli char może przechowywać liczby ujemne UCHAR_MAX w przeciwnym przypadku CHAR_MIN Makro podaje minimalną wartość dla typu char. Jest ona równa: SCHAR_MIN jeżeli char może przechowywać liczby ujemne zero w przeciwnym przypadku SCHAR_MAX Makro podaje maksymalną wartość dla typu signed char SCHAR_MIN Makro podaje minimalną wartość dla typu signed char UCHAR_MAX Makro podaje maksymalną wartość dla typu unsigned char
26 Zestawy znaków ASCII Sposób na reprezentację znaków alfabetu łacińskiego jako liczb, w którym każdej literze przypisuje się liczbę z zakresu; nie wszystkie znaki są drukowalne. Skrót określenia American Standard Code for Information Interchange. Znaki sterujące ASCII przedstawia tabela po prawej EBCDIC Extended Binary Coded Decimal Interchange Code 8-bitowe rozszerzenie firmy IBM 4-bitowego kodowania cyfr 0-9 zwanego Binary Coded Decimal ( ). Char Dec Control-Key Control Action NUL 0 NULl character SOH 1 ^A Start Of Heading STX 2 ^B Start of TeXt ETX 3 ^C End of TeXt EOT 4 ^D End Of Transmission ENQ 5 ^E ENQuiry ACK 6 ^F ACKnowledge BEL 7 ^G BELl, rings terminal bell BS 8 ^H BackSpace (non-destructive) HT 9 ^I Horizontal Tab (move to next tab position) LF 10 ^J Line Feed VT 11 ^K Vertical Tab FF 12 ^L Form Feed CR 13 ^M Carriage Return SO 14 ^N Shift Out SI 15 ^O Shift In DLE 16 ^P Data Link Escape DC1 17 ^Q Device Control 1, normally XON DC2 18 ^R Device Control 2 DC3 19 ^S Device Control 3, normally XOFF DC4 20 ^T Device Control 4 NAK 21 ^U Negative AcKnowledge SYN 22 ^V SYNchronous idle ETB 23 ^W End Transmission Block CAN 24 ^X CANcel line EM 25 ^Y End of Medium SUB 26 ^Z SUBstitute ESC 27 ^[ ESCape FS 28 ^\ File Separator GS 29 ^] Group Separator RS 30 ^^ Record Separator US 31 ^_ Unit Separator 26
27 Znaki drukowalne ASCII 27 Dec Description Char Dec Description Char Dec Description At-sign ` 96 Opening single quote 33 Exclamation mark A 65 Upper case A a 97 Lower case a 34 Quotation mark B 66 Upper case B b 98 Lower case b 35 Cross hatch (number sign) C 67 Upper case C c 99 Lower case c 36 Dollar sign D 68 Upper case D d 100 Lower case d 37 Percent sign E 69 Upper case E e 101 Lower case e 38 Ampersand F 70 Upper case F f 102 Lower case f 39 Closing single quote (apostrophe) G 71 Upper case G g 103 Lower case g 40 Opening parentheses H 72 Upper case H h 104 Lower case h 41 Closing parentheses I 73 Upper case I i 105 Lower case i 42 Asterisk (star, multiply) J 74 Upper case J j 106 Lower case j 43 Plus K 75 Upper case K k 107 Lower case k 44 Comma L 76 Upper case L l 108 Lower case l 45 Hyphen, dash, minus M 77 Upper case M m 109 Lower case m 46 Period N 78 Upper case N n 110 Lower case n 47 Slash (forward or divide) O 79 Upper case O o 111 Lower case o 48 Zero P 80 Upper case P p 112 Lower case p 49 One Q 81 Upper case Q q 113 Lower case q 50 Two R 82 Upper case R r 114 Lower case r 51 Three S 83 Upper case S s 115 Lower case s 52 Four T 84 Upper case T t 116 Lower case t 53 Five U 85 Upper case U u 117 Lower case u 54 Six V 86 Upper case V v 118 Lower case v 55 Seven W 87 Upper case W w 119 Lower case w 56 Eight X 88 Upper case X x 120 Lower case x 57 Nine Y 89 Upper case Y y 121 Lower case y 58 Colon Z 90 Upper case Z z 122 Lower case z 59 Semicolon [ 91 Opening square bracket { 123 Opening curly brace 60 Less than sign \ 92 Backslash (Reverse slant) 124 Vertical line 61 Equals sign ] 93 Closing square bracket } 125 Closing curly brace 62 Greater than sign ^ 94 Caret (Circumflex) ~ 126 Tilde (approximate) 63 Question mark _ 95 Underscore DEL 127 Delete (rubout), cross-hatch box
28 Zestaw znaków EBCDIC 28 DecASCII EBCDIC DecASCII EBCDIC DecASCII EBCDIC DecASCII EBCDIC 0 NUL Null 38 ETB End of Transmission Block 110 > Greater-than Sign 193 A 1 SOH Start of Heading 39 ESC Escape 111? Question Mark 194 B 2 STX Start of Text 42 SM Set Mode 122 : Colon 195 C 3 ETX End of Text 43 CU2 Customer Use # Number Sign, Octothorp, "pound" 196 D 4 PF Punch Off 45 ENQ Enquiry At Sign 197 E 5 HT Horizontal Tab 46 ACK Acknowledge 125 ' Apostrophe, Prime 198 F 6 LC Lower Case 47 BEL Bell 126 = Equal Sign 199 G 7 DEL Delete 50 SYN Synchronous Idle 127 " Quotation Mark 200 H 10 SMM Start of Manual Message 52 PN Punch On 129 a a 201 I 11 VT Vertical Tab 53 RS Reader Stop 130 b b 209 J 12 FF Form Feed 54 UC Upper Case 131 c c 210 K 13 CR Carriage Return 55 EOT End of Transmission 132 d d 211 L 14 SO Shift Out 59 CU3 Customer Use e e 212 M 15 SI Shift In 60 DC4 Device Control f f 213 N 16 DLE Data Link Escape 61 NAK Negative Acknowledge 135 g g 214 O 17 DC1 Device Control 1 63 SUB Substitute 136 h h 215 P 18 DC2 Device Control 2 64 SP Space 137 i i 216 Q 19 TM Tape Mark 74 Cent Sign 145 j j 217 R 20 RES Restore 75. Period, Decimal Point, "dot" 146 k k 226 S 21 NL New Line 76 < Less-than Sign 147 l l 227 T 22 BS Backspace 77 ( Left Parenthesis 148 m m 228 U 23 IL Idle 78 + Plus Sign 149 n n 229 V 24 CAN Cancel 79 Logical OR 150 o o 230 W 25 EM End of Medium 80 & Ampersand 151 p p 231 X 26 CC Cursor Control 90! Exclamation Point 152 q q 232 Y 27 CU1 Customer Use 1 91 $ Dollar Sign 153 r r 233 Z 28 IFS Interchange File Separator 92 * Asterisk, "star" 162 s s IGS Interchange Group Separator 93 ) Right Parenthesis 163 t t IRS Interchange Record Separator 94 ; Semicolon 164 u u IUS Interchange Unit Separator 95 Logical NOT 165 v v DS Digit Select 96 - Hyphen, Minus Sign 166 w w SOS Start of Significance 97 / Slash, Virgule 167 x x FS Field Separator 107, Comma 168 y y BYP Bypass 108 % Percent 169 z z LF Line Feed 109 _ Underline, Underscore 185 ` Grave Accent
29 Typ int 29 typ ze znakiem podstawowy typ całkowity, reprezentuje typ całkowity naturalny dla danego komputera co najmniej 16-bitowy można go uzupełnić słowem kluczowym signed lub unsigned int i1; /* signed */ unsigned int i2; signed int i3; printf("%d\n", sizeof(i1)); /* result is implementation defined */
30 Typ long int 30 typ ze znakiem co najmniej 32 bity, nie mniej niż int może być uzupełniony słowem kluczowym signed lub unsigned słowo kluczowe int może być pominięte w deklaracjach long int i1; /* signed */ unsigned long int i2; signed long int i3; long i4; /* same type as i1 */ unsigned long i5; /* same type as i2 */ signed long i6; /* same type as i3 */ printf("%d\n", sizeof(i1)); /* result is implementation defined */
31 Typ short int 31 typ ze znakiem co najmniej 16 bitów, nie więcej niż int może być uzupełniony słowem kluczowym signed lub unsigned słowo kluczowe int może być pominięte w deklaracjach short int i1; /* signed */ unsigned short int i2; signed short int i3; short i4; /* same type as i1 */ unsigned short i5; /* same type as i2 */ signed short i6; /* same type as i3 */ printf("%d\n", sizeof(i1)); /* result is implementation defined */
32 dodany w standardzie C99 typ ze znakiem Typ long long int co najmniej 64 bity, nie mniej niż long może być uzupełniony słowem kluczowym signed lub unsigned słowo kluczowe int może być pominięte w deklaracjach long long int i1; /* signed */ unsigned long long int i2; signed long long int i3; long long i4; /* same type as i1 */ unsigned long long i5; /* same type as i2 */ signed long long i6; /* same type as i3 */ printf("%d\n", sizeof(i1)); /* result is implementation defined */ 32
33 Typy całkowite Makrodefinicje w <limits.h> 33 INT_MAX Makro zwraca maksymalną wartość dla typu int INT_MIN Makro zwraca minimalną wartość dla typu int UINT_MAX Makro zwraca maksymalną wartość dla typu unsigned int LONG_MAX, LONG_MIN, ULONG_MAX Analogicznie dla typu long SHRT_MAX, SHRT_MIN, USHRT_MAX Analogicznie dla typu short LLONG_MAX, LLONG_MIN, ULLONG_MAX Analogicznie dla typu long long
34 Notacja dziesiętna: Stałe całkowite (literały) int: 1234 long int: 1234L, 1234l unsigned int: 1234U, 1234u unsigned long int: 1234UL, 1234ul, 1234Ul, 1234uL long long int: 1234LL, 1234ll unsigned long long: 1234ULL, 1234ull, 1234uLL, 1234Ull Notacja ósemkowa (oktalna): liczba zaczyna się od 0 (zero) 031 == 25 (31 Oct == 25 Dec, łatwo pomylić dwa święta) dozwolone te same sufiksy co w poprzednim przypadku Notacja szesnastkowa (heksadecymalna): liczba zaczyna się od 0x (zero x) 0x31 == 49 dozwolone te same sufiksy co w poprzednich przypadkach 34
35 Notacja bezpośrednia: 'a', 'b',..., 'z', '0',..., '9' Znaki specjalne: '\n'- znak nowego wiersza '\r'- powrót karetki '\a'- alert wizualny '\b'- cofacz '\f'- wysuw strony '\t'- tabulator poziomy '\v'- tabulator pionowy '\''- apostrof '\"'- cudzysłów '\?'- pytajnik '\\'- odwrotny ukośnik Stałe znakowe (literały) Notacja ósemkowa: '\077' '\0' (zwany NUL przez jedno 'l') Notacja szesnastkowa: '\x32' 35
36 Liczby zmiennoprzecinkowe 36 Liczby zmiennoprzecinkowe są używane do reprezentacji liczb rzeczywistych , , Liczby zmiennoprzecinkowe to podzbiór zbioru liczb rzeczywistych Zakres przechowywanych liczb jest ograniczony Zależy od zastosowanej liczby bitów Ograniczona precyzja > Liczby zmiennoprzecinkowe to przybliżenie liczb rzeczywistych, podczas gdy liczby całkowite są reprezentowane dokładnie
37 Notacja wykładnicza x 10 2 = Znak Mantysa Wykładnik x 10 3 = Forma znormalizowana: jedna cyfra przed przecinkiem dziesiętnym E+03 = Notacja zmiennoprzecinkowa 8-cyfrowa mantysa może reprezentować jedynie 8 cyfr znaczących
38 Binarne liczby zmiennoprzecinkowe = 1 x x x x x x x 2-4 = /2 + 1/ /16 = E+2 Notacja znormalizowana, czyli taka, w której przecinek dwójkowy występuje zaraz za pierwszą cyfrą Uwaga: pierwsza cyfra jest zawsze niezerowa --> pierwsza cyfra jest zawsze jedynką
39 Format zmiennoprzecinkowy IEEE The Institute of Electrical and Electronics Engineers Wymawiany "I-triple-E" Najbardziej znany z projektowania standardów dla przemysłu komputerowego i elektronicznego bits 23 bits Znak Wykładnik Mantysa 0: Dodatni 1: Ujemny Przesunięty o 127. Wiodące 1 występuje niejawnie, nie jest reprezentowane w pamięci Liczba = -1 S * (1 + M) x 2 E-127 Pozwala na reprezentację liczb w zakresie do (10 ±38 ) Ponieważ mantysa zawsze zaczyna się od 1, nie trzeba tego jawnie zapisywać Mantysa ma efektywnie 24 bity 39
40 Format IEEE o podwójnej precyzji 40 Znak bits 20 bits Wykładnik Przesunięcie:1023 Mantysa bits Liczba = -1 S * (1 + M) x 2 E-1023 Pozwala na reprezentację liczb w zakresie od do (10 ± 308 ) Większa mantysa pozwala na większą precyzję
41 Format IEEE o rozszerzonej precyzji 41 Opcjonalna rekomendacja IEEE dla dokładności większej niż float/double Zaimplementowana sprzętowo (Intel 80-bit) Pojedyncza precyzja Co najmniej p = 32 Co najmniej 11 bitów na wykładnik Podwójna precyzja p >= 64 Wykładnik >= 15 bitów
42 Typy zmiennoprzecinkowe w języku C Trzy typy zmiennoprzecinkowe w C float double long double Najczęściej przechowywane z użyciem standardu IEEE niekoniecznie, mogą nawet używać podstawy innej niż 2 charakterystyka typów opisana w pliku <float.h> Dodatkowo trzy typy zespolone w C99 Stałe: stała typu double e7 stała typu double 123.4f stała typu float 123.4F stała typu float 123.4l stała typu long double 123.4L stała typu long double 42
43 Problemy z liczbami zmiennoprzecinkowymi 43 Wiele liczb nie może być przedstawionych dokładnie Reprezentacja 1/3 to * 1/3 1 Podobny problem 1/10 w przypadku ułamków binarnych Wyniki operacji zmiennoprzecinkowych prawie nigdy nie są równe dokładnie odpowiadające wartości matematycznej Wyniki obliczeń mogą się nieco różnić dla różnych systemów komputerowych i wszystkie być poprawne. Jeżeli komputery przestrzegają tego samego standardu, różnice znacznie się zmniejszają. Wyniki mogą zależeć od włączonych opcji optymalizacji Wartości mogą być przechowywane z większą precyzją w rejestrach procesora, niż w pamięci
44 Problemy z liczbami zmiennoprzecinkowymi int main() { float a = 2.501f; a *= f; if (a == ) printf("expected value\n"); else printf("unexpected value\n"); return 0; } Nigdy nie należy porównywać liczb zmiennoprzecinkowych nie używać if (a == b)... zamiast tego używać if( fabs(a - b) < error)... 44
45 Identyfikatory 45 Nazwy obiektów w programie (zmienne, funkcje, itd.) int nmypresentincome = 0; int DownloadOrBuyCD(); Do 31 znaków (litery, cyfry, znak _) Musi zaczynać się od litery Wielkość liter jest ważna! ( Url to coś innego niż URL )
46 Style nazewnictwa 46 Style: lower_case CAPITAL_CASE camelcase PascalCase (zwany również TitleCase) szhungariannotation Notacja węgierska: Wymyślona przez Charlesa Simonyi'ego, Węgra, urodzonego w Budapeszcie w 1948
47 Niejawna konwersja typów 47 Niejawne konwersje char b = 9 ; /* Converts '9' to 57 */ int a = 1; int s = a + b; Promocja całkowita przed operacją: char/short int Przy wywoływaniu niezadeklarowanych funkcji, również promocja zmiennoprzecinkowa: float double Jeżeli jeden operand ma typ double, drugi jest konwertowany do double w przeciwnym wypadku jeżeli jeden operand ma typ float, drugi jest konwertowany do float int a = 3; float x = 97.6F; double y = ; y = x * y; x = x + a;
48 Jawna konwersja typów 48 Zwana również rzutowaniem Czasami nie odpowiadają nam konwersje niejawne float x = 97.6; x = (int)x + 1; Czasami musimy pomóc kompilatorowi float x = 97.6f; printf("%d\n", x); printf("%d\n", (int) x); 97 Prawie każda konwersja jest wykonalna - ale niekoniecznie oznacza to, co mamy na myśli!!
49 Niewłaściwa konwersja typów Przykład: int x = 35000; short s = x; printf("%d %d\n", x, s); Otrzymujemy:
50 Stałe Do deklaracji każdej zmiennej możemy dodać słowo kluczowe const const int base = 345; Ta zmienna zostaje stałą Stała musi mieć przypisaną wartość w momencie deklaracji Próba modyfikacji stałej spowoduje błąd kompilacji int main() { const int a = 20; a = 31; /* error */ return 0; } 50
51 Wartości logiczne w języku C 51 C89 nie ma typu logicznego C99 definiuje typ _Bool Możemy zaemulować przez typ int lub char, używając wartości 0 (fałsz) i 1 lub wartość różna od zera (prawda) Dozwolone w instrukcjach sterujących: if ( success == 0 ) { } printf( "something wrong" ); Możemy zdefiniować własne stałe logiczne: #define FALSE 0 #define TRUE 1
52 Wartości logiczne w języku C 52 Nie zawsze jest to dobrym pomysłem: if ( success == TRUE ) { } printf( "everything is a-okay" ); success może być niezerowa, ale nie równa 1; powyższe to NIE to samo, co: if ( success ) { } printf( "Something is rotten in the state of " "Denmark" );
53 Typ wyliczeniowy 53 Typy wyliczeniowe pozwalają na pogrupowanie logicznie powiązanych ze sobą stałych enum color {BLACK, RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW, WHITE, COLOR_MAX}; Oto kolejny sposób na zdefiniowanie typu logicznego: enum boolean { FALSE, TRUE }; enum boolean eanswer = TRUE; Stałe wyliczeniowe traktowane są jak typ całkowity
54 Typ wyliczeniowy Zaczyna się od 0 chyba że jawnie napisano inaczej enum boolean { FALSE, TRUE }; enum genre { TECHNO, TRANCE=4, HOUSE }; Można równiez przypisać wszystkie wartości enum channel { TVP1=1, HBO=32, RTL=44 }; Nazwy stałych muszą być różne, ale wartości mogą się powtarzać enum boolean { FALSE=0, TRUE=1, NO=0, YES=1 }; 54
55 Typ wyliczeniowy a konstrukcja typedef 55 Można użyć konstrukcji typedef w celu zaoszczędzenia miejsca enum boolean { FALSE, TRUE }; typedef enum boolean Eboolean; EBoolean eanswer = TRUE; Jeszcze lepiej jest połączyć typedef z anonimowym typem wyliczeniowym typedef enum { FALSE, TRUE } Eboolean; EBoolean eanswer = TRUE; Konstrukcje typedef przydadzą się jeszcze przy okazji struktur i wskaźników do funkcji
56 Operatory arytmetyczne Podstawowe: x+y, x-y, x*y, x/y Uwaga: Niezgodne operandy są konwertowane do "większego" typu: char/short int float double Dzielenie całkowite obcina część ułamkową: 5/ /2 2.5 (float)5/
57 Modulo (%) Znane również jako reszta z dzielenia Powinno być stosowane jedynie dla dodatnich liczb całkowitych Przykłady: 13 / 5 == 2 13 % 5 == 3 czy x jest nieparzyste? czy x jest podzielne przez y? odwzorowanie kąta 765 do zakresu konwersja 18:45 do formatu 12-godzinnego symulacja rzutu sześcienną kostką Czy rok 2000 był przestępny? Rok jest przestępny, jeżeli jest podzielny przez 4 i niepodzielny przez 100, chyba że jest podzielny przez 400 Jak to zapisać? 57
58 Przypisania (=( i <op>=) 58 Przypisanie jest wyrażeniem jego wartość jest wartością lewej strony po przypisaniu Zwykłe przypisanie: x = x + y Równoważny sposób: x += y Więcej: x += y, x -= y, x *= y, x /= y, x %= y Lewa strona operatora przypisania jest obliczana tylko raz (c=getchar()) += 1; to coś innego niż (c=getchar()) = (c=getchar()) + 1;
59 Inkrementacja/dekrementacja 59 Pre-inkrementacja/dekrementacja: ++x, --x Post-inkrementacja/dekrementacja: x++, x-- ++x i x++ działają jak x = x + 1 lub x += 1 Różnica uwidacznia się w wyrażeniach ++x najpierw zwiększa, a potem zwraca nową wartość x x++ zwraca x najpierw, a potem inkrementuje int x = 0; assert(x == 0); assert(++x == 1); assert(x == 1); assert(x++!= 2); assert(x == 2);
60 Operatory bitowe 60 Kiedy chcemy zmieniać lub czytać pojedyncze bity Tylko dla typów całkowitych (char, short, int, long, unsigned/signed) Operatory bitowe: & Bitowy AND Bitowy OR ^ Bitowy exclusive OR (XOR) << Przesunięcie w lewo >> Przesunięcie w prawo ~ Dopełnienie jedynkowe (operator unarny) Z przypisaniem: x &= y, x = y, x ^= y, x <<= y, x >>= y
61 Operatory bitowe 61 Przykłady: & Bitowy AND 0110 & Bitowy OR ^ Bitowy XOR 0110 ^ << Przesunięcie w lewo << >> Przesunięcie w prawo >> ~ Dopełnienie jedynkowe~ Uwaga: << i >> mnożą/dzielą przez 2 n operator >> może nie działać zgodnie z oczekiwaniami dla typów ze znakiem - może wykonywać przesunięcie logiczne lub arytmetyczne (z powieleniem bitu znaku) Nie mylić operatorów bitowych & z op. logicznymi &&
62 Upakowanie informacji o kolorach w 32 bity 62 /* * Format of RGBA colors is * * alpha red green blue * */ #define GET_ALPHA(val) ((val) >> 24) #define GET_RED(val) #define GET_GREEN(val) #define GET_BLUE(val) (((val) >> 16) & 0xff) (((val) >> 8) & 0xff) ((val) & 0xff) #define MAKE_ARGB(a,r,g,b) (((a) << 24) ((r) << 16) ((g) << 8) (b))
63 Flagi bitowe 63 Można traktować pojedyncze bity jako znaczniki (1=włączone 0=wyłączone) Pozwala to na upakowanie do 32 znaczników w jedną liczbę całkowitą bez znaku Przykład: #define READONLY #define NOSYSLOCK #define NOOVERWRITE #define DISCARD 0x x x x #define NO_DIRTY_UPDATE 0x Używamy aby włączyć flagę int flags = READONLY DISCARD; Używamy & aby sprawdzić flagę if (flags & READONLY)...
64 Operatory logiczne i porównań Logiczne: x == y Równy x!= y Nie równy x && y logiczne AND x y logiczne OR!x NOT Porównania: x < y Mniejszy niż x <= y Mniejszy niż lub równy x > y Większy niż x >= y Większy niż lub równy 64
65 Inne operatory 65 sizeof podaje rozmiar w bajtach int x = 0; unsigned size = sizeof(int); 4 size = sizeof(x); 4 operator wyboru x? y : z to notacja skrócona od: if (x) y else z np.: z=(a>b)?a:b; /* z = max(a,b) */ przecinek x, y
66 Łączność i priorytet Dodawanie i odejmowanie są lewostronnie łączne jest równoważne (((4 + 5) + 6) + 7) Mnożenie, dzielenie i modulo są lewostronnie łączne 4 * 5 * 6 * 7 jest równoważne (((4 * 5) * 6) * 7) Operatory przypisania są prawostronnie łączne a = b = c = d jest równoważne (a=(b=(c=d))) Dla złożonych wyrażeń z różnymi operatorami, priorytet operatorów określa kolejnośc operacji: np.: c = getchar()!= EOF Ponieważ!= ma wyższy priorytet niż =, powyższe jest równoważne c = (getchar()!= EOF) Zdecydowanie nie to, o co nam chodziło! W przypadku wątpliwości lub skomplikowanych wyrażeń używamy nawiasów (c = getchar())!= EOF 66
67 Łączność i priorytet Operatory Łączność () [] ->. lewostronna! ~ * (type) sizeof prawostronna * / % lewostronna + - lewostronna << >> lewostronna < <= > >= lewostronna ==!= lewostronna & lewostronna ^ lewostronna lewostronna && lewostronna lewostronna?: prawostronna = += -= *= /= %= &= ^= = <<= >>= prawostronna, lewostronna 67
68 Efekty uboczne i kolejność obliczeń Wywołania funkcji, zagnieżdżone instrukcje przypisania oraz operatory inkrementacji i dekrementacji mają efekty uboczne - pewne zmienne ulegają zmianie przy okazji obliczania wyrażenia. Jeżeli wyrażenie ma efekty uboczne, mogą wystąpić subtelne zależności wyniku operacji od kolejności uaktualniania zmiennych występujących w wyrażeniu. Standard C nie specyfikuje kolejności obliczania argumentów operatorów z wyjątkiem operatorów &&,,?:, i ','. W wyrażeniu jak x = f() + g(); f może być wywołane przed g lub odwrotnie. W celu zapewnienia określonej kolejności obliczeń należy przechować wyniki pośrednie w zmiennych tymczasowych obliczanych oddzielnie. Kolejność obliczania argumentów funkcji nie jest określona, a więc instrukcja printf("%d %d\n", ++n, power(2, n));/* WRONG */ może dać różne wyniki przy kompilacji różnymi kompilatorami. Inna typowa sytuacja tego rodzaju jest reprezentowana przez wyrażenie: a[i] = i++; 68
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Programowanie strukturalne i obiektowe
Programowanie strukturalne i obiektowe Język C część I Opracował: Grzegorz Flesik Literatura: A. Majczak, Programowanie strukturalne i obiektowe, Helion, Gliwice 2010 P. Domka, M. Łokińska, Programowanie
Programowanie strukturalne język C - wprowadzenie
Programowanie strukturalne język C - wprowadzenie Dr inż. Sławomir Samolej D102 C, tel: 865 1766, email: ssamolej@prz-rzeszow.pl WWW: ssamolej.prz-rzeszow.pl Cechy programowania strukturalnego Możliwość
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Informatyka, Ćwiczenie 1. 1. Uruchomienie Microsoft Visual C++ Politechnika Rzeszowska, Wojciech Szydełko. I. ZałoŜenie nowego projektu
Informatyka, Ćwiczenie 1 1. Uruchomienie Microsoft Visual C++ I. ZałoŜenie nowego projektu Wybieramy menu: File>New>Files jak na rys. poniŝej Zapisujemy projekt pod nazwą LAN, w katalogu d:\temp\lab typu
Języki i metodyka programowania. Wprowadzenie do języka C
Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia
Język ludzki kod maszynowy
Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza
Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu
Programowanie strukturalne Opis ogólny programu w Turbo Pascalu STRUKTURA PROGRAMU W TURBO PASCALU Program nazwa; } nagłówek programu uses nazwy modułów; } blok deklaracji modułów const } blok deklaracji
4 Standardy reprezentacji znaków. 5 Przechowywanie danych w pamięci. 6 Literatura
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 1 2 Standardy reprezentacji wartości całkowitoliczbowych
Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.
Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów. Prezentacja jest współfinansowana przez Unię Europejską w ramach Europejskiego Funduszu Społecznego w projekcie pt. Innowacyjna dydaktyka
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
2 Przygotował: mgr inż. Maciej Lasota
Laboratorium nr 2 1/7 Język C Instrukcja laboratoryjna Temat: Wprowadzenie do języka C 2 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie do języka C. Język C jest językiem programowania ogólnego zastosowania
Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.
Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice
Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.
Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using
ARCHITEKTURA KOMPUTERÓW. Reprezentacja danych w komputerach
Reprezentacja danych w komputerach dr inż. Wiesław Pamuła wpamula@polsl.katowice.pl Literatura 2. J.Biernat: Architektura komputerów, Oficyna Wydawnicza Politechniki Wrocławskiej, Wrocław2002. 3. Null
DZIESIĘTNY SYSTEM LICZBOWY
DZIESIĘTNY SYSTEM LICZBOWY Do zapisu dowolnej liczby system wykorzystuje dziesięć symboli (cyfr): 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Dowolną liczbę w systemie dziesiętnym możemy przedstawić jako następująca
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH
ARCHITEKTURA SYSTEMÓW KOMPUTEROWYCH reprezentacja danych ASK.RD.01 c Dr inż. Ignacy Pardyka UNIWERSYTET JANA KOCHANOWSKIEGO w Kielcach Rok akad. 2011/2012 c Dr inż. Ignacy Pardyka (Inf.UJK) ASK.RD.01 Rok
Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:
Zmienna i typ Pascal typy danych Zmienna to obiekt, który może przybierać różne wartości. Typ zmiennej to zakres wartości, które może przybierać zmienna. Deklarujemy je w nagłówku poprzedzając słowem kluczowym
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
WPROWADZENIE DO JĘZYKA C++
WPROWADZENIE DO JĘZYKA C++ 1. Pierwszy program w C++ Przykład 1.1. pierwszy_program.cpp 1: #include //Dołączenie do programu biblioteki 2: using namespace std; //Deklaracja przestrzeni
Architektura komputerów
Architektura komputerów Wykład 4 Jan Kazimirski 1 Reprezentacja danych 2 Plan wykładu Systemy liczbowe Zapis dwójkowy liczb całkowitych Działania arytmetyczne Liczby rzeczywiste Znaki i łańcuchy znaków
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
1. System pozycyjny zapisu liczb
W.K.: Kody i liczby 1. System pozycyjny zapisu liczb Oznaczenia: R - podstawa pozycyjnego systemu liczenia (liczba naturalna) L - wartość liczby a i - cyfra ; a i {0,1,.., R-1} Zapis liczby (łańcuch cyfr):
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość
1. Wartość, jaką odczytuje się z obszaru przydzielonego obiektowi to: a) I - wartość b) definicja obiektu c) typ oboektu d) p - wartość 2. Poprawna definicja wskażnika b to: a) float *a, **b = &a; b) float
Zadanie 04 Ktory z ponizszych typow danych w jezyku ANSI C jest typem zmiennoprzecinkowym pojedynczej precyzji?
Zadanie 01 W przedstawionym ponizej programie w jezyku ANSI C w miejscu wykropkowanym brakuje jednej linii: #include... int main() { printf("tralalalala"); return 0; } A. B. "iostream" C.
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include
1. Wprowadzanie danych z klawiatury funkcja scanf
1. Wprowadzanie danych z klawiatury funkcja scanf Deklaracja int scanf ( const char *format, wskaźnik, wskaźnik,... ) ; Biblioteka Działanie stdio.h Funkcja scanf wczytuje kolejne pola (ciągi znaków),
Arytmetyka komputera. Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka. Opracował: Kamil Kowalski klasa III TI
Arytmetyka komputera Na podstawie podręcznika Urządzenia techniki komputerowej Tomasza Marciniuka Opracował: Kamil Kowalski klasa III TI Spis treści 1. Jednostki informacyjne 2. Systemy liczbowe 2.1. System
Typy danych, zmienne i tablice. Tomasz Borzyszkowski
Typy danych, zmienne i tablice Tomasz Borzyszkowski Silne typy Javy Java jest językiem wyposażonym w silny system typów. Wywodzi się stąd siła i bezpieczeństwo tego języka. Co to znaczy silny system typów?
PROGRAMOWANIE w C prolog
PROGRAMOWANIE w C prolog dr inż. Jarosław Stańczyk Uniwersytet Przyrodniczy we Wrocławiu Wydział Biologii i Hodowli Zwierząt Katedra Genetyki 1 / jaroslaw.stanczyk@up.wroc.pl programowanie w c 17.10.2014
Programowanie w języku C++
INE 2022 JĘZYKI PROGRAMOWANIA 1 INE 0050 WSTĘP DO PROGRAMOWANIA Programowanie w języku C++ ( wykł. dr Marek Piasecki ) Literatura: do wykładu dowolny podręcznik do języka C++ na laboratoriach Borland C++
Systemy zapisu liczb.
Systemy zapisu liczb. Cele kształcenia: Zapoznanie z systemami zapisu liczb: dziesiętny, dwójkowy, ósemkowy, szesnastkowy. Zdobycie umiejętności wykonywania działań na liczbach w różnych systemach. Zagadnienia:
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane
Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane Stałe Oprócz zmiennych w programie mamy też stałe, które jak sama nazwa mówi, zachowują swoją wartość przez cały czas działania programu. Można
JAVA. Platforma JSE: Środowiska programistyczne dla języka Java. Wstęp do programowania w języku obiektowym. Opracował: Andrzej Nowak
JAVA Wstęp do programowania w języku obiektowym Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Platforma JSE: Opracował: Andrzej Nowak JSE (Java Standard
Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna
Dane, informacja, programy Kodowanie danych, kompresja stratna i bezstratna DANE Uporządkowane, zorganizowane fakty. Główne grupy danych: tekstowe (znaki alfanumeryczne, znaki specjalne) graficzne (ilustracje,
Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych
1 Podstawowe operacje arytmetyczne i logiczne dla liczb binarnych 1. Podstawowe operacje logiczne dla cyfr binarnych Jeśli cyfry 0 i 1 potraktujemy tak, jak wartości logiczne fałsz i prawda, to działanie
Podstawy Informatyki
Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 5 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 5 1 / 23 LICZBY RZECZYWISTE - Algorytm Hornera
Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego
Arytmetyka cyfrowa Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego (binarnego). Zapis binarny - to system liczenia
Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)
Uwagi dotyczące notacji kodu! Wyrazy drukiem prostym -- słowami języka VBA. Wyrazy drukiem pochyłym -- inne fragmenty kodu. Wyrazy w [nawiasach kwadratowych] opcjonalne fragmenty kodu (mogą być, ale nie
Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.
Wykład 3 ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors. Waldi Ravens J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 75 / 146 deklaracje zmiennych instrukcja podstawienia
Technologie informacyjne (3) Zdzisław Szyjewski
Technologie informacyjne (3) Zdzisław Szyjewski Technologie informacyjne Technologie pracy z komputerem Funkcje systemu operacyjnego Przykłady systemów operacyjnych Zarządzanie pamięcią Zarządzanie danymi
Stan wysoki (H) i stan niski (L)
PODSTAWY Przez układy cyfrowe rozumiemy układy, w których w każdej chwili występują tylko dwa (zwykle) możliwe stany, np. tranzystor, jako element układu cyfrowego, może być albo w stanie nasycenia, albo
Rekurencja (rekursja)
Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java
Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java Cechy C++ Język ogólnego przeznaczenia Można programować obiektowo i strukturalnie Bardzo wysoka wydajność kodu wynikowego
do instrukcja while (wyrażenie);
Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie
Proste typy zmiennych języka C++ *) Zapis 3.4 e-38 jest równoważny zapisowi 3,
WYKŁAD 1. PODSTAWY 1_1. Typy zmiennych Proste typy zmiennych języka C++ Nazwa typu (nazwa skrócona) Rozmiar (bajtów) unsigned char 1 signed char (char) unsigned short int (unsigned) signed short int (int)
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 2 Stałe całkowite inne niż dziesiętne Stałe ósemkowe Stałe szesnastkowe Aby wskazać czy dane maj a
Jak napisać program obliczający pola powierzchni różnych figur płaskich?
Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy
Techniki multimedialne
Techniki multimedialne Digitalizacja podstawą rozwoju systemów multimedialnych. Digitalizacja czyli obróbka cyfrowa oznacza przetwarzanie wszystkich typów informacji - słów, dźwięków, ilustracji, wideo
Wstęp doinformatyki. Systemy liczbowe i arytmetyka komputerów. System dziesiętny. Inne systemy. System dwójkowy
Wstęp doinformatyki Systemy liczbowe i arytmetyka komputerów Dr inż. Ignacy Pardyka kademia Świętokrzyska Kielce, System dziesiętny Liczba: 5= *+5*+* - każdą z cyfr mnożymy przez tzw. wagę pozycji, która
ECLIPSE wnioski z dwóch pierwszych laboratoriów
PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową)
znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.
Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6
PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6 TEMAT: Programowanie w języku C/C++: instrukcje iteracyjne for, while, do while Ogólna postać instrukcji for for (wyr1; wyr2; wyr3) Instrukcja for twory pętlę działającą
Kiedy i czy konieczne?
Bazy Danych Kiedy i czy konieczne? Zastanów się: czy często wykonujesz te same czynności? czy wielokrotnie musisz tworzyć i wypełniać dokumenty do siebie podobne (faktury, oferty, raporty itp.) czy ciągle
Podstawy programowania C. dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/
Podstawy programowania C dr. Krystyna Łapin http://www.mif.vu.lt/~moroz/c/ Tematy Struktura programu w C Typy danych Operacje Instrukcja grupująca Instrukcja przypisania Instrukcja warunkowa Struktura
Funkcja (podprogram) void
Funkcje Co to jest funkcja? Budowa funkcji Deklaracja, definicja i wywołanie funkcji Przykłady funkcji definiowanych przez programistę Przekazywanie argumentów do funkcji Tablica jako argument funkcji
Microsoft IT Academy kurs programowania
Microsoft IT Academy kurs programowania Podstawy języka C# Maciej Hawryluk Język C# Język zarządzany (managed language) Kompilacja do języka pośredniego (Intermediate Language) Kompilacja do kodu maszynowego
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Algorytmika i Programowanie VBA 1 - podstawy
Algorytmika i Programowanie VBA 1 - podstawy Tomasz Sokół ZZI, IL, PW Czas START uruchamianie środowiska VBA w Excelu Alt-F11 lub Narzędzia / Makra / Edytor Visual Basic konfiguracja środowiska VBA przy
ARYTMETYKA BINARNA. Dziesiątkowy system pozycyjny nie jest jedynym sposobem kodowania liczb z jakim mamy na co dzień do czynienia.
ARYTMETYKA BINARNA ROZWINIĘCIE DWÓJKOWE Jednym z najlepiej znanych sposobów kodowania informacji zawartej w liczbach jest kodowanie w dziesiątkowym systemie pozycyjnym, w którym dla przedstawienia liczb
#include int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
Wstęp do programowania
Wstęp do programowania Podstawowe konstrukcje programistyczne Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk (Wydział Fizyki) WP w. II Jesień 2013 1 / 34 Przypomnienie Programowanie imperatywne Program
System liczbowy jest zbiorem reguł określających jednolity sposób zapisu i nazewnictwa liczb.
2. Arytmetyka komputera. Systemy zapisu liczb: dziesietny, dwójkowy (binarny), ósemkowy, szesnatskowy. Podstawowe operacje arytmetyczne na liczbach binarnych. Zapis liczby binarnej ze znakiem. Reprezentacja
Wstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
KURS C/C++ WYKŁAD 6. Wskaźniki
Wskaźniki KURS C/C++ WYKŁAD 6 Każda zmienna ma unikalny adres wskazujący początkowy obszar pamięci zajmowany przez tą zmienną. Ilość pamięci zajmowanej przez zmienną zależy od typu zmiennej. Adres można
Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna
Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,
Naturalny kod binarny (NKB)
SWB - Arytmetyka binarna - wykład 6 asz 1 Naturalny kod binarny (NKB) pozycja 7 6 5 4 3 2 1 0 wartość 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 wartość 128 64 32 16 8 4 2 1 bity b 7 b 6 b 5 b 4 b 3 b 2 b 1 b 0 System
Stałe i zmienne znakowe. Stała znakowa: znak
Stałe i zmienne znakowe. Stała znakowa: znak Na przykład: a, 1, 0 c Każdy znak jest reprezentowany w pamięci przez swój kod. Kody alfanumerycznych znaków ASCII to liczby z przedziału [32, 127]. Liczby
Kompilator języka C na procesor 8051 RC51 implementacja
Kompilator języka C na procesor 8051 RC51 implementacja Implementowane typy danych bit 1 bit char lub char signed 8 bitów char unsigned 8 bitów int lub signed int 16 bitów unsigned int 16 bitów long lub
Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest
1.1. Pozycyjne systemy liczbowe
1.1. Pozycyjne systemy liczbowe Systemami liczenia nazywa się sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Dla dowolnego
#include void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }
OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;
KURS C/C++ WYKŁAD 7. struct Punkt { int x, y; int kolor; };
Typy pochodne. Referencje Referencja jest inną nazwą zmiennej. KURS C/C++ WYKŁAD 7 Referencje tworzymy przy pomocy unarnego operatora &: int a; int &refer = a; // referencja musi być inicjowana Powyższe
3.3.1. Metoda znak-moduł (ZM)
3.3. Zapis liczb binarnych ze znakiem 1 0-1 0 1 : 1 0 0 1 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 reszta 0 0 0 0 0 0 0 1 3.3. Zapis liczb binarnych ze znakiem W systemie dziesiętnym liczby ujemne opatrzone są specjalnym
Wykład I. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład I I Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Zaliczenie przedmiotu Na laboratorium można zdobyć 100 punktów. Do zaliczenia niezbędne jest
Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych
1. Wstawianie skryptu na stroną: Laboratorium 1 Do umieszczenia skryptów na stronie służy znacznik: //dla HTML5 ...instrukcje skryptu //dla HTML4 ...instrukcje
LICZBY ZMIENNOPRZECINKOWE
LICZBY ZMIENNOPRZECINKOWE Liczby zmiennoprzecinkowe są komputerową reprezentacją liczb rzeczywistych zapisanych w formie wykładniczej (naukowej). Aby uprościć arytmetykę na nich, przyjęto ograniczenia
Podstawy Informatyki
Podstawy Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 3 Bożena Woźna-Szcześniak (AJD) Podstawy Informatyki Wykład 3 1 / 42 Reprezentacja liczb całkowitych
Języki programowania zasady ich tworzenia
Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie
Pliki. Informacje ogólne. Obsługa plików w języku C
Pliki Informacje ogólne Plik jest pewnym zbiorem danych, zapisanym w systemie plików na nośniku danych (np. dysku twardym, pendrive, płycie DVD itp.). Może posiadać określone atrybuty, a odwołanie do niego
20. Pascal i łączenie podprogramów Pascala z programem napisanym w C
Opublikowano w: WEREWKA J..: Podstawy programowana dla automatyków. Skrypt AGH Nr 1515, Kraków 1998 20. i łączenie podprogramów a z programem napisanym w Ze względu na duże rozpowszechnienie języka, szczególnie
Języki i metodyka programowania. Reprezentacja danych w systemach komputerowych
Reprezentacja danych w systemach komputerowych Kod (łac. codex - spis), ciąg składników sygnału (kombinacji sygnałów elementarnych, np. kropek i kresek, impulsów prądu, symboli) oraz reguła ich przyporządkowania
Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015
Metody numeryczne Technika obliczeniowa i symulacyjna Sem. 2, EiT, 2014/2015 1 Metody numeryczne Dział matematyki Metody rozwiązywania problemów matematycznych za pomocą operacji na liczbach. Otrzymywane
Pracownia Komputerowa wyk ad VII
Pracownia Komputerowa wyk ad VII dr Magdalena Posiada a-zezula Magdalena.Posiadala@fuw.edu.pl http://www.fuw.edu.pl/~mposiada Magdalena.Posiadala@fuw.edu.pl 1 Notacja szesnastkowa - przypomnienie Szesnastkowy
Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):
1. SYSTEMY LICZBOWE UŻYWANE W TECHNICE KOMPUTEROWEJ System liczenia - sposób tworzenia liczb ze znaków cyfrowych oraz zbiór reguł umożliwiających wykonywanie operacji arytmetycznych na liczbach. Do zapisu
Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)
Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013
Wstęp do informatyki. Pojęcie liczebności. Liczenie bez liczebników. Podstawy arytmetyki komputerowej. Cezary Bolek
Wstęp do informatyki Podstawy arytmetyki komputerowej Cezary Bolek cbolek@ki.uni.lodz.pl Uniwersytet Łódzki Wydział Zarządzania Katedra Informatyki Pojęcie liczebności Naturalna zdolność człowieka do postrzegania
Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak
Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego
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 Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: ES1C200 009 (studia stacjonarne)
RODZAJE INFORMACJI. Informacje analogowe. Informacje cyfrowe. U(t) U(t) Umax. Umax. R=(0,Umax) nieskończony zbiór możliwych wartości. Umax.
RODZAJE INFORMACJI Informacje analogowe U(t) Umax Umax 0 0 R=(0,Umax) nieskończony zbiór możliwych wartości WE MASZYNA ANALOGOWA WY Informacje cyfrowe U(t) Umaxq Umax R=(U, 2U, 3U, 4U) # # MASZYNA # CYFROWA
Podstawy programowania - 1
Podstawy programowania - 1 doc. dr inż. Tadeusz Jeleniewski Wykład: sobota B, godz. 10.30 12.55 sala 12 Laboratorium: sobota B, godz. 13.00 15.25 sala 2 sobota B, godz. 15.30-17.55 sala 2 e-mail: tadeusz.jeleniewski@pwr.wroc.pl
KURS C/C++ WYKŁAD 1. Pierwszy program
KURS C/C++ WYKŁAD 1 Pierwszy program Tworzenie programu odbywa sie w dwóch etapach: 1. opracowanie kodu źródłowego 2. generowanie kodu wynikowego Pierwszy etap polega na zapisaniu algorytmu za pomocą instrukcji
Instrukcja dotycząca kodów kreskowych
Instrukcja dotycząca kodów kreskowych Wersja 0 POL 1 Wprowadzenie 1 Omówienie 1 1 Niniejsza skrócona instrukcja zawiera informacje na temat drukowania kodów kreskowych z wykorzystaniem poleceń sterujących
Wprowadzenie do programowania w języku C
Wprowadzenie do programowania w języku C Część czwarta Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów
Cw.12 JAVAScript w dokumentach HTML
Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane
Podstawy programowania (1)
Podstawy programowania (1) doc. dr inż. Tadeusz Jeleniewski Konsultacje pokój 19 Poniedziałki, godz. 9:45 11:20 e-mail: tadeusz.jeleniewski@neostrada.pl Podstawy programowania (1) - wykład 1. Wprowadzenie
Wielkości liczbowe. Wykład z Podstaw Informatyki. Piotr Mika
Wielkości liczbowe Wykład z Podstaw Informatyki Piotr Mika Wprowadzenie, liczby naturalne Komputer to podstawowe narzędzie do wykonywania obliczeń Jeden bajt reprezentuje oraz liczby naturalne od do 255
Znaki w tym systemie odpowiadają następującym liczbom: I=1, V=5, X=10, L=50, C=100, D=500, M=1000
SYSTEMY LICZBOWE I. PODZIAŁ SYSTEMÓW LICZBOWYCH: systemy liczbowe: pozycyjne (wartośd cyfry zależy od tego jaką pozycję zajmuje ona w liczbie): niepozycyjne (addytywne) (wartośd liczby jest sumą wartości