Podstawy programowania Typ znakowy. Typ znakowy

Wielkość: px
Rozpocząć pokaz od strony:

Download "Podstawy programowania Typ znakowy. Typ znakowy"

Transkrypt

1 Typ znakowy 295 Typ znakowy Typ znakowy jest zbiorem podstawowych znaków używanych do komunikacji komputera z człowiekiem. Każdy element typu znakowego (znak) posiada przyporządkowany mu kod liczbowy, na przykład litera A może mieć kod 65, litera B może mieć kod 66, Wewnętrzna reprezentacja znaków to binarny zapis liczb będących ich kodami. 296 dr inż. P. Borowiecki (KAMS, WETI, PG) 1

2 Standardy kodowania znaków (1) W standardowym C/C++ używany jest zbiór znaków zgodny ze standardem ISO/IEC 646. Bardziej znaną wersją tego standardu jest amerykański standard narodowy ANSI X3.4 definiujący zbiór 7. bitowych znaków tzw. podstawowy zbiór ASCII (American Standard Code for Information Interchange). <tabela> 297 Standardy kodowania znaków (2) Wykorzystanie ósmego bitu pozwoliło na stworzenie rozszerzonego zbioru ASCII zawierającego 256 znaków. W reprezentacji wewnętrznej każdy znak z tego zbioru wymaga jednego bajtu. Dla różnych grup języków istnieją różne wersje rozszerzonego zbioru ASCII tzw. strony kodowe, różniące się znakami o kodach od 128 do 255. Strona kodowa zawierająca znaki narodowe języka polskiego zdefiniowana jest przez standard ISO Oprócz Polski, ze standardu tego korzystają również : Albania, Bośnia, Chorwacja, Czechy, Finlandia, Węgry, Rumunia, Serbia, Słowacja i Słowenia. W systemie Windows dla Polski używana jest domyślnie strona Windows <tabela> 298 dr inż. P. Borowiecki (KAMS, WETI, PG) 2

3 Standardy kodowania znaków (3) EBCDIC (Extended Binary-Coded Decimal Interchange Code) to zbiór znaków 8 bitowych. Llitery i cyfry nie muszą mieć kolejnych kodów. Używany np. na komputerach typu mainframe. Unicode stworzony i rozwijany przez Unicode Consortium ( W tym standardzie kodowania każdy znak posiada swój unikalny numer. W języku C++ dostępne są typy znakowe pozwalające na pracę ze znakami Unicode. Standard Unicode określa też reguły sortownia dla poszczególnych języków etnicznych. 299 Uporządkowanie znaków języka etnicznego Ustawienia międzynarodowe systemu operacyjnego określają między innymi zbiór dostępnych znaków oraz reguły ich sortowania, np. Kolejne znaki alfabetu etnicznego nie muszą mieć kolejnych kodów. Litera eszett występująca w języku niemieckim podczas sortowania musi być traktowana jak dwa osobne znaki. znaki ch w języku hiszpańskim podczas sortowania muszą być traktowane jak jedna litera występująca pomiędzy literą c a literą d. Zagadnienie to nie jest więc tak trywialne na jakie wygląda na pierwszy rzut oka ;) 300 dr inż. P. Borowiecki (KAMS, WETI, PG) 3

4 Typ znakowy Zmienne typu znakowego w C++ deklarujemy następująco char c; wchar_t c; // zwykłe znaki // znaki "szerokie" Typ wchar_t jest stosunkowo nowym typem (ANSI/ISO draft 1995). W kompilatorze g++ ver. 2.95, sizeof(wchar_t) daje 4. Zapis stałych dosłownych: a jest znakiem reprezentującym literę a 8 jest znakiem reprezentującym cyfrę 8 ( nie chodzi o liczbę 8! ) 301 Typ znakowy Znaki sterujące: \b - kasownik (ang. Backspace) \f - nowa strona (ang. Form feed) \n - nowa linia (ang. New line) \r - powrót karetki (ang. carriage Return) \t - tabulator poziomy (ang. Tabulator) \v - tabulator pionowy (ang. Vertical tabulator) \a - sygnał dźwiękowy (ang. Alarm) Znaki specjalne: \\ - ukośnik lewostronny \ - apostrof \ - cudzysłów \0 - NULL (znak o kodzie 0) \? - znak zapytania 302 dr inż. P. Borowiecki (KAMS, WETI, PG) 4

5 Znaki Wykonanie tego fragmentu programu Pominięcie niektórych znaków niedrukowalnych for (int i = 14; i < 256; i++) cout << setw(5) << i << setw(3) << static_cast<char>(i); daje aktualnie używany zestaw znaków, np !! ! 34 " 35 # 36 $ 37 % 38 & 39 ' 40 ( 41 ) 42 * , / : 59 ; 60 < 61 = 62 > 63? 65 A 66 B 67 C 68 D 69 E 70 F 71 G 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z ~ Ç 129 ü 130 é 131 â 132 ä 133 ů 174 «175» Á 182 Â 183 Ě 184 Ş Ż 190 ż Ă 199 ă Wybrane funkcje dla znaków Wybrane funkcje biblioteki cctype operujące na znakach. int isalpha(int c); Jeżeli c jest literą, to zwraca true a w przeciwnym przypadku false. int isupper(int c); Jeżeli c jest dużą literą, to zwraca true a w przeciwnym przypadku false. int islower(int c); Jeżeli c jest małą literą, to zwraca true a w przeciwnym przypadku false. int isdigit(int c); Jeżeli c jest cyfrą, to zwraca true a w przeciwnym przypadku false. int isxdigit(int c); Jeżeli c jest cyfrą systemu o podst. 16, to zwraca true a w p. p. false. int ispunct(int c); Jeżeli c jest znakiem drukowalnym różnym od spacji, cyfry lub litery, to zwraca true a w przeciwnym przypadku false. int isprint(int c); Jeżeli c jest znakiem drukowalnym włączając w to spację i c < 128, to zwraca true a w przeciwnym przypadku false. int iscntrl(int c); Jeżeli c jest znakiem kontrolnym, to zwraca true a w p. p. zwraca false. 304 dr inż. P. Borowiecki (KAMS, WETI, PG) 5

6 Wybrane funkcje dla znaków Wybrane funkcje biblioteki cctype operujące na znakach c.d. int isspace(int c); Jeżeli c jest białym znakiem, to zwraca true a w przeciwnym przypadku false. int toupper(int c); Jeżeli c jest małą literą, to zwraca literę dużą w przeciwnym przypadku zwraca argument bez zmian. int tolower(int c); Jeżeli c jest dużą literą, to zwraca literę małą w przeciwnym przypadku zwraca argument bez zmian. Przykład for (int i = 0; i < 128; i++) if (isprint(i)) cout << setw(5) << i << setw(3) << static_cast<char>(i); else cout << setw(5) << i << setw(3) << ' '; 305 Wybrane funkcje dla znaków Wybrane funkcje biblioteki cctype operujące na znakach. Nul + znaki steruj. Znaki iscntrl isspace isupper islower isalpha \t, \f, \v, \n, \r X X X isdigit/ isxdigit ispunct Spacja X X! #$%& ()*+,-./ X X X / X X : ; < = X X ABCDEF X X - / X X GHIJKLMNOPQRSTUVW XYZ isprint X X X [ ] ^ _ ` \ X X abcdef X X - / X X ghijklmnopqrstuvw xyz X X X ~ X X Dla znaków ASCII o kodach do dr inż. P. Borowiecki (KAMS, WETI, PG) 6

7 Tablice znaków Tablice znaków służą do przechowywania ciągów znaków z 1,1 z 1,2 z 1,3 z 1,k1 Ciągi te nazywane są również łańcuchami znakowymi lub napisami (ang. string). Ciągi znaków, zwykle za sprawą wyróżnionych znaków formatujących mogą mieć różne interpretacje. Na przykład ciąg znaków zawierający znaczniki końca linii często nazywany jest tekstem z 1,1 z 1,2 z 1,k1 #z 2,1 z 2,2 z 2,k2 #z r,1 z r,2 z r,kr # gdzie # jest znakiem końca linii (w C/C++ jest to '\n'). 307 Tablice znaków Specjalny ciąg znaków, zakończony znakiem NULL o kodzie ASCII równym 0 nazywamy C-napisem (ang. C-string, ASCII-Z string). D o m '\0' n-2 n-1 Nazwa C-string ma wskazywać na pochodzenie takiej reprezentacji z języka C i odróżniać od obiektów klasy string dostępnych w C++. Klasa string jest odpowiedzią na problemy związane ze złożoną obsługą operacji na C-napisach i stanowi obecnie część biblioteki standardowej C++. Ponieważ jednak w wielu programach można spotkać zaczniemy właśnie od nich. 308 dr inż. P. Borowiecki (KAMS, WETI, PG) 7

8 Tablice znaków Stałe dosłowne reprezentujące napisy są literałami składającymi się z ciągu znaków ujętych w cudzysłów "Dom na polu" Stałe takie traktowane są jak. Tablicę znaków deklarujemy następująco char nazwa[rozmiar]; Podczas definicji tablicę znaków można inicjalizować, np: char zdanie[80] = "Dom na polu"; Za ostatnią literą w tablicy dodany zostanie znak '\0'. Dzieje się tak dlatego, że znaki ujęte w cudzysłów są C-napisem. Tak utworzona tablica może być traktowana jak C-napis. 309 Tablice znaków Inicjalizacja zbiorcza pojedynczymi znakami char zdanie[80]='d','o','m',' ','n','a',' ','p','o','l','u'; Można jej używać gdy mamy na myśli tablicę pewnych znaków, która nie będzie używana jako napis. Unikać przy inicjalizacji napisów! Można liczyć, że zgodnie z zasadą inicjalizacji zbiorczej nieokreślone jawnie elementy tablicy zostaną uzupełnione zerami, jednak gdy cała tablica jest wypełniona, uzupełnienie nie będzie możliwe. char zdanie[11]='d','o','m',' ','n','a',' ','p','o','l','u'; Podobne zjawisko wystąpi, gdy pozostawimy wyznaczenie rozmiaru tablicy kompilatorowi tablica 11. elementowa char zdanie1[]='d','o','m',' ','n','a',' ','p','o','l','u'; char zdanie2[] = "Dom na polu"; tablica 12. elementowa, '\0' na końcu 310 dr inż. P. Borowiecki (KAMS, WETI, PG) 8

9 Wprowadzanie C-napisu ze standardowego wejścia. #include <iostream> const int MAX_N = 80; char s[max_n]; Podaj napis: ^^^^^Dobra^robota Podales napis: Dobra_ cout << "Podaj napis: "; cin >> s; cout << "Podales napis: " << s; znakiem ^ zaznaczono spację Znaki wyjmowane są z cin operatorem >> aż do napotkania pierwszego białego znaku, tzn. spacji, tabulatora albo znaku końca linii. Przed rozpoczęciem wyjmowania białe znaki poprzedzające w cin pierwszy znak, który nie jest biały, tzw. wiodące białe znaki są pomijane. Biały znak kończący wyjmowanie nie wchodzi do napisu i pozostaje w strumieniu wraz z ewentualnymi innymi znakami. 311 #include <iostream> Biały znak kończący wyjmowanie nie wchodzi do napisu i pozostaje w strumieniu wraz z ewentualnymi innymi znakami. const int MAX_N = 80; char s[max_n]; Podaj napis: ^^^^^Dobra^robota Podales napis: Dobra Ciag dalszy: robota_ cout << "Podaj napis: "; cin >> s; cout << "Podales napis: " << s << endl; cin >> s; cout << "Ciag dalszy: " << s; Czy w powyższym przykładzie po wyjęciu ^robota strumień jest pusty? Nie. Pozostaje w nim biały znak '\n' co może mieć wpływ na dalsze operacje, szczególnie gdy będą wykonane bez pomijania wiodących białych znaków. 312 dr inż. P. Borowiecki (KAMS, WETI, PG) 9

10 Jeżeli napis nie zawierający białych znaków jest dłuższy niż rozmiar tablicy, to można uznać to za błąd logiczny. Cała zawarość strumienia, aż do białego znaku kończącego wyjmowanie zostanie umieszczona w kolejnych komórkach pamięci co może nadpisać wartości zmiennych znajdujących się bezpośrenio za wczytywaną zmienną s. #include <iostream> const int MAX_N = 5; char s[max_n]; Podaj napis: ^^^^^Dobranocka Podales napis: Dobranocka_ cout << "Podaj napis: "; cin >> s; cout << "Podales napis: " << s ; Pozornie wszystko działa jak zaplanowano D o b r a n o c k a '\0' s??? 313 Wprowadzanie ze standardowego wejścia C-napisu zawierającego białe znaki, np. spacje ale również znaki końca linii. #include <iostream> const int MAX_N = 80; char s[max_n]; char ogr; ogr = '\n'; cout << "Podaj tekst: "; cin.getline(s,max_n,ogr); cout << endl; cout << "Podales tekst: " << s; Podaj tekst: Dobra robota ale jeszcze popracuj. Podales tekst: Dobra robota ale jeszcze popracuj. Funkcja getline wyjmuje ze strumienia co najwyżej MAX_N-1 znaków (również białych) i umieszcza je w s dodając za ostatnim znakiem '\0'. Napotkanie znaku ogranicznika ogr, natychmiast przerywa wyjmowanie. Znak ogr jest wyjmowany ze strumienia ale nie jest dodawany do s. 314 dr inż. P. Borowiecki (KAMS, WETI, PG) 10

11 Jeżeli po zakończeniu wyjmowania przez cin.getline są jeszcze w strumieniu inne znaki, to gdy wyjmowanie przerwano z powodu napotkania ogranicznika, znaki po ograniczniku nie zostaną wyjęte (pozostaną do dalszego przetwarzania) char s[10] = " "; cout << "Wpisz max 9 znakow: "; cin.getline(s,10,'x') cout << "Podales znaki:" << endl; for (int i=0; i < 10; i++) cout << "s[" << i << "]= " << s[i] << endl; // tu można przetwarzać "bet" Domyślnie ogranicznikiem jest '\n'. Wpisz max 9 znakow: Alfaxbet Podales znaki: s[0]= A s[1]= l s[2]= f s[3]= a s[4]= s[5]= 6 s[6]= 7 s[7]= 8 s[8]= 9 s[9]= _ Gdy korzystamy z '\n' można użyć cin.getline z dwoma parametrami. '\0' 315 Jeżeli po zakończeniu wyjmowania przez cin.getline są w strumieniu inne znaki, to: gdy wyjmowanie przerwano z powodu napotkania ogr, znaki po ogr nie zostaną wyjęte (pozostaną do dalszego przetwarzania), gdy wyjmowanie przerwano po wyjęciu MAX_N-1 znaków i pozostały w strumieniu znaki różne od ogranicznika, to wystąpi błąd i będzie on sygnalizowany przez ustawienie flagi failbit (obsługę tego typu sytuacji omówimy w późniejszej części wykładu). Podczas operacji na C-napisach obowiązek kontrolowania zakresów poszczególnych tablic znakowych spoczywa na programiście!! 316 dr inż. P. Borowiecki (KAMS, WETI, PG) 11

12 #include <iostream> Problemy podczas równoczesnego używania cin >> oraz cin.getline char s1[80]; char s2[80]; Podaj pierwszy napis: ^^Dobranoc Podaj drugi napis: Podales napisy: Dobranoc _ cout << "Podaj pierwszy napis: "; cin >> s1; cout << "Podaj drugi napis: "; cin.getline(s2,80); cout << "Podales napisy: " << endl; << s1 << " " << s2; Po wyjęciu oc strumień nie jest pusty. Pozostał w nim biały znak '\n'. Ponieważ cin.getline nie pomija wiodących białych znaków a znak '\n' jest domyślnym ogranicznikiem, więc nie są wyjmowane żadne znaki i s2 jest pusty. 317 Problemy podczas równoczesnego używania cin >> oraz cin.getline char s1[80]; char s2[80]; Podaj pierwszy napis: ^^Dobrej^nocy Podaj drugi napis: Podales napisy: Dobrej nocy_ cout << "Podaj pierwszy napis: "; cin >> s1; cout << "Podaj drugi napis: "; cin.getline(s2,80); cout << "Podales napisy: " << endl; << s1 << " " << s2; Podobnie po wyjęciu ^^Dobrej przez operator >> strumień nie jest pusty. Pozostała w nim spacja i napis nocy oraz znak '\n'. Ponieważ cin.getline nie pomija wiodących białych znaków a znak '\n' jest domyślnym ogranicznikiem, więc do s2 wyjmowane są znaki: spacja i nocy, natomiast '\n' jest pomijany. 318 dr inż. P. Borowiecki (KAMS, WETI, PG) 12

13 Wybrane funkcje biblioteki string operujące na C-napisach. char *strcpy(char *s_cel, const char *s_zrodlo); Kopiuje zawartość napisu s_zrodlo do s_cel. Zwraca s_cel. Programista musi zadbać aby s_zrodlo zmieściło się w s_cel. Do przypisywania jednego napisu do drugiego, nie wolno używać operatora = char *strcat(char *s1, const char *s2); Rozszerza s1 dołączając s2 na końcu s1 (konkatenacja - złączenie). Zwraca s1. Pierwszy znak s2 nadpisuje '\0' na końcu s1. Napis s2 pozostaje bez zmian. Programista musi zagwarantować, że s1 pomieści połączone napisy s1 i s2. int strcmp(const char *s1, const char *s2); Porównuje napisy s1 i s2 i zwraca 0 gdy są jednakowe. Jeżeli s1 jest leksykograficznie mniejszy od s2 zwraca liczbę ujemną oraz liczbę dodatnią, gdy s1 jest leksykograficznie większy od s2. size_t strlen(const char *s); Zwraca długość napisu s. Znak '\0' kończący napis nie jest wliczany. Typ size_t nie jest specyficzny dla C++. Występuje w innych językach. Zalecany przez POSIX jako nazwa typu dla wartości unsigned int albo unsigned long, gdy wynik funkcji jest odpowiedzią na pytania: ile?, jak wiele? 319 Wybrane funkcje biblioteki string operujące na C-napisach c.d. char *strstr(const char *s_gdzie, const char *s_co); Szuka pierwszego wystąpienia napisu s_co w napisie s_gdzie. Jeżeli napis s_co został znaleziony, to zwracany jest wskaźnik do jego pierwszego znaku w napisie s_gdzie. W przeciwnym przypadku zwracany jest wskaźnik o wartości NULL. char *strtok(char *ptr, const char *s); Dzieli na "tokeny" napis podany jako pierwszy parametr. Aby dokonać podziału wymaga wielokrotnego wywoływania (patrz przykład w dalszej części). Wybrane funkcje biblioteki stdlib operujące na C-napisach. double atof(const char *s); Zamienia napis s na liczbę typu double. double atoi(const char *s); Zamienia napis s na liczbę typu int. double atol(const char *s); Zamienia napis s na liczbę typu long dr inż. P. Borowiecki (KAMS, WETI, PG) 13

14 #include <cstring> char s1[80], s2[80]; strcpy(s1, "C#"); strcpy(s2, "C++"); cout << "Dlugosci: " << strlen(s1) << " " << strlen(s2) << endl; cout << s1 << " i " << s2 << " to"; if(!strcmp(s1, s2)) cout << " takie same napisy." << endl; else cout << " rozne napisy." << endl; strcat(s1, s2); cout << "Zlaczenie: " << s1 << endl; Dlugosci: 2 3 C# i C++ to rozne napisy. Zlaczenie: C#C++ C#C++ oraz C#C++ to teraz takie same napisy. _ strcpy(s2, s1); cout << s1 << " oraz " << s2; if(!strcmp(s1, s2)) cout << " to teraz takie same napisy."; else cout << " wciaz sie roznia."; cout << endl; 321 Do poszczególnych znaków napisu można odwołać się jak do elementu tablicy podając indeks. Zamieniając litery napisu na duże, skorzystamy również z faktu, że C-napis zakończony jest znakiem o kodzie 0. #include <cstring> #include <cctype> // zamiana liter małych na wielkie char s[80]; Alternatywnie: s[i] == '\0' albo for (i = 0; s[i] = toupper(s[i]); i++); strcpy(s," NapiS Probny 234 &\"-._>"); for (int i=0; s[i]; i++) s[i] = toupper(s[i]); cout << s << endl; NAPIS PROBNY 234 &"-._> _ 322 dr inż. P. Borowiecki (KAMS, WETI, PG) 14

15 Podobnie można wykonać kopiowanie C-napisu #include <cstring> char cel[80], zrodlo[80]; int i=0; Wyrażenie to ma wartość ostatnio skopiowanego znaku. Alternatywa: ((cel[i] = zrodlo[i]) == '\0') strcpy(zrodlo,"napis probny"); while (cel[i] = zrodlo[i]) i++; cout << cel << endl; Co by się stało, gdyby rozmiar cel był mniejszy niż rozmiar zrodlo? Zapobieganie: stosować funkcje strncpy, strncat, strncmp, które posiadają dodatkowy trzeci parametr typu size_t pozwalający na określenie maksymalnej liczby przetwarzanych znaków. 323 Podział napisu na tokeny. #include <cstring> char zdanie[] = "To zdanie ma 5 tokenow"; cout << zdanie << endl; Separator(y) tokenów char* wsk_tokena; wsk_tokena = strtok( zdanie, " " ); while (wsk_tokena!= NULL) cout << wsk_tokena << endl; wsk_tokena = strtok( NULL, " " ); To zdanie ma 5 tokenow To zdanie ma 5 tokenow _ Pierwsze wywołanie przekazuje do strtok dzielony napis i zbiór separatorów. W wyniku dostajemy wskaźnik na pierwszy token a pierwsze wystąpienie separatora zamieniane jest na '\0' stanowiący zakończenie aktualnego tokena. Funkcja "zapamiętuje" wskaźnik do pierwszego znaku po aktualnym tokenie. NULL jako pierwszy par. kolejnych wywołań nakazuje kontynuację od znaku wskazywanego przez zapamiętany wskaźnik. Uwaga: dzielony napis ulega zmianie. Aby zachować oryginał, przed użyciem strtok należy zrobić kopię. 324 dr inż. P. Borowiecki (KAMS, WETI, PG) 15

16 Przykład Zastosowanie wskaźników do C-napisów #include <cstring> // Odwócenie napisu w miejscu char s[] = "napis probny"; char *start, *end; int n; char buf; cout << "Przed odwroceniem: " << s << endl; n = strlen(s); start = s; '\0' ma zostać w tym end = &s[n-1]; samym miejscu while (start < end) buf = *start; *start = *end; *end = buf; start++; end--; cout << "Po odwroceniu: " << s << endl; 325 Tablica C-napisów #include <cstring> Tablica wskaźników na stałe napisy char* stacje[] = "Stocznia", "Politechnika", "Wrzeszcz", "Przymorze", "Oliwa", "Sopot" ; const int Rozmiar = sizeof(stacje)/sizeof(char*); // Rozmiar zostanie obliczony podczas kompilacji char* wsk[rozmiar]; // Tablica wskaźników na napisy. for (int i = 0; i < Rozmiar; i++) cout << "Stacja " << i+1 << ". " << stacje[i] << endl; wsk[0] = stacje[0]; wsk[1] = stacje[1]; wsk[2] = stacje[2]; cout << wsk[0] << wsk[1] << wsk[2] << endl; Stacja 1. Stocznia Stacja 2. Politechnika Stacja 3. Wrzeszcz Stacja 4. Przymorze Stacja 5. Oliwa Stacja 6. Sopot StoczniaPolitechnikaWrzeszcz _ Źródło: Język C++ w praktyce, T. Ratajczak + autor 326 dr inż. P. Borowiecki (KAMS, WETI, PG) 16

17 Tablica C-napisów // zapisanie do tablicy wsk wskaźników na tworzone dynamicznie bloki // pamięci o rozmiarach odpowiednich do zapamiętania napisów // o wartościach takich jak napisy w tablicy stacje for(int i = 0; i < Rozmiar; i++) wsk[i] = new char [strlen(stacje[i])+1]; strcpy(wsk[i],stacje[i]); wsk[0] wsk[1] wsk[rozmiar-1] Stocznia\0 Politechnika\0 Sopot\0 for (int i = 0; i < Rozmiar; i++) cout << "Stacja " << i+1 << ". " << wsk[i] << endl; cout << wsk[1][0]; // wypisze pierwszy znak drugiego napisu czyli 'P' // Uwaga: pamiętaj o zakresach indeksów! 327 dr inż. P. Borowiecki (KAMS, WETI, PG) 17

Języki programowania obiektowego Nieobiektowe elementy języka C++

Języki programowania obiektowego Nieobiektowe elementy języka C++ Języki programowania obiektowego Nieobiektowe elementy języka C++ Roman Simiński roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Przetwarzanie tablic znaków Łańcuchy znakowe jako tablice znaków

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania dr Elżbieta Gawrońska gawronska@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej dr Elżbieta Gawrońska (ICIS) Podstawy Programowania 05 1 / 15 Plan wykładu 1 Biblioteka

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część siódma Przetwarzanie tablic znaków Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.programowanie.siminskionline.pl Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie tablic znaków. Część druga. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część druga Przetwarzanie tablic znaków Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi uważnego w nim

Bardziej szczegółowo

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE

DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE DANE TEKSTOWE W JĘZYKU C/C++ - TABLICE ZNAKOWE Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem ASCII... J e s t e m t e k s t e m \0...

Bardziej szczegółowo

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119 Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek

Bardziej szczegółowo

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak:

Ćwiczenie nr 6. Poprawne deklaracje takich zmiennych tekstowych mogą wyglądać tak: Ćwiczenie nr 6 Temat: Operacje na łańcuchach znaków. Zagadnienia: Zasady pracy z łańcuchami tekstowymi (tablice wartości typu char). funkcje standardowe operacji na łańcuchach, funkcje I/O dla operacji

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Programowanie w C++ Wykład 5 Katarzyna Grzelak 26 marca 2018 9 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40 Pojęcia z poprzedniego wykładu Podział programu na funkcje podział na niezależne

Bardziej szczegółowo

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

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

Programowanie w języku C++

Programowanie w języku C++ Programowanie w języku C++ Część siódma Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie zastąpi

Bardziej szczegółowo

Podstawy programowania w języku C++

Podstawy programowania w języku C++ Podstawy programowania w języku C++ Część dziewiąta Tablice a zmienne wskaźnikowe Wersja skrócona, tylko C++ Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie

Bardziej szczegółowo

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 11. Elektrotechnika, semestr II rok akademicki 2008/2009

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 11. Elektrotechnika, semestr II rok akademicki 2008/2009 Informatyka 1 zajęcia nr 11 Elektrotechnika, semestr II rok akademicki 2008/2009 mgr inż.. Paweł Myszkowski Plan dzisiejszych zajęć 1. Łańcuchy znaków 2. Wprowadzanie i wyprowadzanie znaków w i łańcuchów

Bardziej szczegółowo

Inicjacja tablicy jednowymiarowej

Inicjacja tablicy jednowymiarowej TABLICE C++ Inicjacja tablicy jednowymiarowej typ_komórek_tablicy nazwa_tablicy [ ilość elementów tablicy ] ; np.: int tablica[1000]; czyli tablica, która może przechowywać tysiąc elementów typu całkowitego,

Bardziej szczegółowo

Stałe i zmienne znakowe. Stała znakowa: znak

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

Bardziej szczegółowo

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 4

Programowanie komputerowe. Zajęcia 4 Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości

Bardziej szczegółowo

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... }

Tablice. int rozmiar; cout << Jaki ma być rozmiar tabeli? ; cin >> rozmiar; { int tablica[rozmiar]; /* TU JEST ŹLE */... } Tablice grupa obiektów tego samego typu tablica tablica ciąg obiektów tego samego typu, zajmujący ciągły obszar w pamięci korzyść zamiast wielu definicji poszczególnych obiektów jedna wspólna; odniesienia

Bardziej szczegółowo

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE 1. Proste typy danych- ciąg dalszy 2. Typy złożone danych : TABLICE Wykład 3 ZMIENNE PROSTE: TYPY WBUDOWANE Typy zmiennoprzecinkowe: float double long double Różne rozmiary bajtowe. W konsekwencji różne

Bardziej szczegółowo

Operacje na łańcuchach znaków

Operacje na łańcuchach znaków Operacje na łańcuchach znaków wer. 6 z drobnymi modyfikacjami Wojciech Myszka 2014-02-09 16:32:23 +0100 Łańcuch znaków 1. Z łańcuchów znaków korzystamy powszechnie. 2. Najprostszy przykład: p r i n t f

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

Podstawy programowania w C++

Podstawy programowania w C++ Podstawy programowania w C++ Zmienne typu znakowego Bibliografia: CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Opracował: Andrzej Nowak ASCII (American Standard Code for Information Interchange)

Bardziej szczegółowo

Reprezentacja symboli w komputerze.

Reprezentacja symboli w komputerze. Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1 ASCII The American Standard Code for Information Interchange, 1968 r. 7 bitów, liczby z zakresu 0-127

Bardziej szczegółowo

Kodowanie informacji. Przygotował: Ryszard Kijanka

Kodowanie informacji. Przygotował: Ryszard Kijanka Kodowanie informacji Przygotował: Ryszard Kijanka Komputer jest urządzeniem służącym do przetwarzania informacji. Informacją są liczby, ale także inne obiekty, takie jak litery, wartości logiczne, obrazy

Bardziej szczegółowo

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. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Tablice wielowymiarowe inaczej Efekt tablicy wielowymiarowej można uzyskać definiując tablicę jednowymiarową odpowiedniego

Bardziej szczegółowo

Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1

Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1 Reprezentacja symboli w komputerze. Znaki alfabetu i łańcuchy znakowe. Programowanie Proceduralne 1 ASCII The American Standard Code for Information Interchange, 1968 r. 7 bitów, liczby z zakresu 0-127

Bardziej szczegółowo

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Informatyka I Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 1 Plan wykładu

Bardziej szczegółowo

ŁAŃCUCHY W JĘZYKU C/C++

ŁAŃCUCHY W JĘZYKU C/C++ ŁAŃCUCHY W JĘZYKU C/C++ Stała tekstowa / łańcuchowa jest tablicą znaków zakończoną znakiem o kodzie: 0 np. stała łańcuchowa: Jestem tekstem... 74 101 115 116 101 109 32 116 101 107 115 116 101 109 0......

Bardziej szczegółowo

Podstawy Programowania Podstawowa składnia języka 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

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

DYNAMICZNE PRZYDZIELANIE PAMIECI DYNAMICZNE PRZYDZIELANIE PAMIECI Pamięć komputera, dostępna dla programu, dzieli się na cztery obszary: kod programu, dane statyczne ( np. stałe i zmienne globalne programu), dane automatyczne zmienne

Bardziej szczegółowo

Wskaźniki. Informatyka

Wskaźniki. Informatyka Materiały Wskaźniki Informatyka Wskaźnik z punktu widzenia programisty jest grupą komórek pamięci (rozmiar wskaźnika zależy od architektury procesora, najczęściej są to dwa lub cztery bajty ), które mogą

Bardziej szczegółowo

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady Pętle i tablice. Spotkanie 3 Dr inż. Dariusz JĘDRZEJCZYK Pętle: for, while, do while Tablice Przykłady 11/26/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Pętla w największym uproszczeniu służy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Zmienne, stałe i operatory

Zmienne, stałe i operatory Zmienne, stałe i operatory Przemysław Gawroński D-10, p. 234 Wykład 2 4 marca 2019 (Wykład 2) Zmienne, stałe i operatory 4 marca 2019 1 / 21 Outline 1 Zmienne 2 Stałe 3 Operatory (Wykład 2) Zmienne, stałe

Bardziej szczegółowo

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4 Dr inż. Dariusz JĘDRZEJCZYK Wskaźniki Dynamiczna alokacja pamięci Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania 2 Wskaźnik to

Bardziej szczegółowo

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 6: Ciągi znaków. mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 6: Ciągi znaków mgr inż. Leszek Ciopiński dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 17 listopada 2016 1. Wprowadzenie Instrukcja poświęcona jest zmiennym, które służą do przechowywania

Bardziej szczegółowo

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku

iii. b. Deklaracja zmiennej znakowej poprzez podanie znaku Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 5. Stałe i zmienne znakowe. Tablice. Wskaźniki do tablic. Operacje na wskaźnikach. Instrukcja switch, case. Wyrażenie przecinkowe. Funkcje

Bardziej szczegółowo

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

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ę

Bardziej szczegółowo

Pascal typy danych. Typy pascalowe. Zmienna i typ. Podział typów danych:

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

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

ZASADY PROGRAMOWANIA KOMPUTERÓW POLITECHNIKA WARSZAWSKA Instytut Automatyki i i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW Język Język programowania: C/C++ Środowisko programistyczne: C++Builder 6 Wykład 9.. Wskaźniki i i zmienne dynamiczne.

Bardziej szczegółowo

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny:

Wskaźniki. nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: Wskaźniki nie są konieczne, ale dają językowi siłę i elastyczność są języki w których nie używa się wskaźników typ wskaźnikowy typ pochodny: typ nw; /* definicja zmiennej nw typu typ */ typ *w_nw; /* definicja

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

dr inż. Jarosław Forenc

dr inż. Jarosław Forenc Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2011/2012 Pracownia nr 9 (20.01.2012) dr inż. Jarosław Forenc Rok

Bardziej szczegółowo

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

12. Wprowadzenie Sygnały techniki cyfrowej Systemy liczbowe. Matematyka: Elektronika: PRZYPOMNIJ SOBIE! Matematyka: Dodawanie i odejmowanie "pod kreską". Elektronika: Sygnały cyfrowe. Zasadę pracy tranzystorów bipolarnych i unipolarnych. 12. Wprowadzenie 12.1. Sygnały techniki cyfrowej

Bardziej szczegółowo

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

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy 1 Wprowadzenie do informatyki i użytkowania komputerów Kodowanie informacji System komputerowy Kodowanie informacji 2 Co to jest? bit, bajt, kod ASCII. Jak działa system komputerowy? Co to jest? pamięć

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Napisy w stylu C (tablice znaków) Łańcuch to ciąg znaków przechowywanych w kolejnych bajtach. Łańcuchy reprezentują napisy.

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Tablice wielowymiarowe Tablice wielowymiarowe, podobnie jak jednowymiarowe, przechowują wartości tego samego typu. Przykłady:

Bardziej szczegółowo

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p. Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Wskaźnik do pliku Dostęp do pliku: zapis, odczyt,

Bardziej szczegółowo

Java Podstawy. Michał Bereta

Java Podstawy. Michał Bereta Prezentacja współfinansowana przez Unię Europejską ze środków Europejskiego Funduszu Społecznego w ramach projektu Wzmocnienie znaczenia Politechniki Krakowskiej w kształceniu przedmiotów ścisłych i propagowaniu

Bardziej szczegółowo

Języki i metody programowania I

Języki i metody programowania I Języki i metody programowania I dr inż. Piotr Szwed Katedra Informatyki Stosowanej C2, pok. 403 e-mail: pszwed@agh.edu.pl http://home.agh.edu.pl/~pszwed/ Aktualizacja: 2013-01-18 8. Łańcuchy znaków Łańcuchy

Bardziej szczegółowo

Pracownia Komputerowa wyk ad VII

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

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++ Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

Bardziej szczegółowo

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład Funkcje Krzysztof Banaś Podstawy programowania 1 Programowanie proceduralne Pojęcie procedury (funkcji) programowanie proceduralne realizacja określonego zadania specyfikacja

Bardziej szczegółowo

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików

1 Pierwsze kroki w C++ cz.3 2 Obsługa plików 1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream.

Bardziej szczegółowo

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4];

Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4]; Prawidłowa konstrukcja (3 x 4) char** tab = new char*[3]; for (size_t i = 0; i < 3; i++) tab[i] = new char[4]; STOS STERTA tab for (size_t i = 0; i < 3; i++) delete[] tab[i]; delete[] tab; 1. Zrealizować

Bardziej szczegółowo

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych. 1. Rodzaje pamięci używanej w programach Pamięć komputera, dostępna dla programu,

Bardziej szczegółowo

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this

Wstęp do programowania obiektowego. WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this Wstęp do programowania obiektowego WYKŁAD 3 Dziedziczenie Pola i funkcje statyczne Funkcje zaprzyjaźnione, this 1 Nazwa typu Rozmiar Zakres Uwagi bool 1 bit wartości true albo false stdbool.h TYPY ZNAKOWE

Bardziej szczegółowo

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów

C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów. C++ - przeciążanie operatorów Operatory są elementami języka C++. Istnieje zasada, że z elementami języka, takimi jak np. słowa kluczowe, nie można dokonywać żadnych zmian, przeciążeń, itp. PRZECIĄŻANIE OPERATORÓW Ale dla operatorów

Bardziej szczegółowo

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady: 5 Tablice Tablica jest zestawem obiektów (zmiennych) tego samego typu, do których można się odwołać za pomocą wspólnej nazwy. Obiekty składowe tablicy noszą nazwę elementów tablicy. Dostęp do nich jest

Bardziej szczegółowo

Podstawy programowania w języku C i C++

Podstawy programowania w języku C i C++ Podstawy programowania w języku C i C++ Część czwarta Operatory i wyrażenia Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót treści wykładu,

Bardziej szczegółowo

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

Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy 1 Wstęp do informatyki- wykład 4 Deklaracja zmiennych Typy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy

Bardziej szczegółowo

C++ wprowadzanie zmiennych

C++ wprowadzanie zmiennych C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym

Bardziej szczegółowo

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6 JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 6 1 SPECYFIKATOR static Specyfikator static: Specyfikator ten powoduje, że zmienna lokalna definiowana w obrębie danej funkcji nie jest niszczona

Bardziej szczegółowo

Techniki multimedialne

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

Bardziej szczegółowo

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 9 - sem.iii. Dr inż. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 9 - sem.iii Dr inż. M. Czyżak Język ANSI C tablice znaków Tablice znaków (łańcuchy) Tablice znaków stanowią specjalny rodzaj tablic o budowie ułatwiającej

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

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,

Bardziej szczegółowo

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński

Języki programowania. Przetwarzanie plików amorficznych Konwencja języka C. Część siódma. Autorzy Tomasz Xięski Roman Simiński Języki programowania Część siódma Przetwarzanie plików amorficznych Konwencja języka C Autorzy Tomasz Xięski Roman Simiński Niniejsze opracowanie zawiera skrót treści wykładu, lektura tych materiałów nie

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

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ść 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

Bardziej szczegółowo

Biblioteka standardowa - operacje wejścia/wyjścia

Biblioteka standardowa - operacje wejścia/wyjścia Biblioteka standardowa - operacje wejścia/wyjścia Przemysław Gawroński D-10, p. 234 Wykład 6 15 stycznia 2019 (Wykład 6) Biblioteka standardowa - operacje wejścia/wyjścia 15 stycznia 2019 1 / 14 Outline

Bardziej szczegółowo

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

Typ użyty w deklaracji zmiennej decyduje o rodzaju informacji, a nazwa zmiennej symbolicznie opisuje wartość. Typy danych Aby zapisać w komputerze jakąś daną, trzeba zapamiętać trzy jej podstawowe cechy: miejsce przechowywania informacji, przechowywaną wartość, rodzaj przechowywanej wartości. Typ użyty w deklaracji

Bardziej szczegółowo

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string)

Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Pliki wykład 2 -przekazywanie strumieni do funkcji -funkcje get(char &) i getline(string) Dorota Pylak Struktura programu działającego na plikach 2 1) Dyrektywa preprocesora #include //zapewnia

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Tablica znaków w językach C i C++ (oraz pochodnych) łańcuch znaków przechowywany jest jako

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe

Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe Podstawy algorytmiki i programowania - wykład 1 Tablice powtórzenie Tablice znaków Tablice dwuwymiarowe Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie

Bardziej szczegółowo

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

Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów Architektura systemów komputerowych Laboratorium 5 Kodowanie liczb i tekstów Marcin Stępniak Informacje. Kod NKB Naturalny kod binarny (NKB) jest oparty na zapisie liczby naturalnej w dwójkowym systemie

Bardziej szczegółowo

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

Systemy liczenia. 333= 3*100+3*10+3*1 Systemy liczenia. System dziesiętny jest systemem pozycyjnym, co oznacza, Ŝe wartość liczby zaleŝy od pozycji na której się ona znajduje np. w liczbie 333 kaŝda cyfra oznacza inną wartość bowiem: 333=

Bardziej szczegółowo

2 Przygotował: mgr inż. Maciej Lasota

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

Bardziej szczegółowo

Podstawy Programowania C++

Podstawy Programowania C++ Wykład 3 - podstawowe konstrukcje Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu, instrukcja przypisania, podstawowe typy danych, zapis i odczyt danych, wyrażenia:

Bardziej szczegółowo

Wstęp do programowania. Wykład 1

Wstęp do programowania. Wykład 1 Wstęp do programowania Wykład 1 1 / 49 Literatura Larry Ullman, Andreas Signer. Programowanie w języku C++. Walter Savitch, Kenrick Mock. Absolute C++. Jerzy Grębosz. Symfonia C++. Standard. Stephen Prata.

Bardziej szczegółowo

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje Podstawy informatyki Informatyka stosowana - studia niestacjonarne - Zajęcia nr 4 Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w

Bardziej szczegółowo

tablica: dane_liczbowe

tablica: dane_liczbowe TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica

Bardziej szczegółowo

9 Napisy. Napisy w stylu języka C

9 Napisy. Napisy w stylu języka C 9 Napisy Napis (inne nazwy to tekst, łańcuch, ang. string) jest to grupa znaków traktowanych jako całość. Napis może zawierać litery, cyfry, znaki specjalne. Języki C/C++ nie posiadają wbudowanego podstawowego

Bardziej szczegółowo

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy: Kurs C++ częśd II Podstawowa obsługa konsoli + zmienne. Autor: Dawid Chróścielski. Wprowadzanie i wyprowadzanie danych z/do konsoli. Jak wyprowadzad dane dowiedzieliśmy się już wcześniej (metoda cout z

Bardziej szczegółowo

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

Struktura pliku projektu Console Application

Struktura pliku projektu Console Application Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 12 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Obsługa łańcuchów znakowych getchar(), putchar()

Bardziej szczegółowo

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 9. Łańcuchy znaków. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 9 Łańcuchy znaków 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Rodzaje plików Dane przechowywane w pliku mogą mieć reprezentację binarną (taką samą, jak

Bardziej szczegółowo

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle!

main( ) main( void ) main( int argc, char argv[ ] ) int MAX ( int liczba_1, liczba_2, liczba_3 ) źle! Funkcja wysoce niezależny blok definicji i instrukcji programu (podprogram) Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje

Bardziej szczegółowo

Język C++ wykład VIII

Język C++ wykład VIII Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,

Bardziej szczegółowo

Wstęp do informatyki- wykład 11 Funkcje

Wstęp do informatyki- wykład 11 Funkcje 1 Wstęp do informatyki- wykład 11 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum

Bardziej szczegółowo

Microsoft IT Academy kurs programowania

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo