Wykład 6. Operacje na łańcuchach znakowych

Save this PDF as:
 WORD  PNG  TXT  JPG

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

Download "Wykład 6. Operacje na łańcuchach znakowych"

Transkrypt

1 Wykład 6. Operacje na łańcuchach znakowych 1. Łańcuch znaków jako tablica Do przechowania łańcucha znaków służy tablica znakowa. W kolejnych pozycjach tej tablicy są pamiętane kolejne znaki. Ostatnim znakiem musi być znak końca, czyli znak ASCII o numerze 0. Poniżej pokazano przykład deklaracji tablicy znakowej, która może przechowywać łańcuch o maksymalnej długości 9 znaków. Tablica ma 10 elementów, bo musi jeszcze pomieścić znak końca. char s[10]; Deklarując taka tablicę, można do niej od razu wpisać jakiś łańcuch, na przykład char s[10]='p','r','o','g','r','a','m','\0'; Nie wolno wtedy pominąć końcowego znaku '\0'. Prostszy sposób polega na przypisaniu do deklarowanej tablicy odpowiedniej stałej łańcuchowej: char s[r]= "program"; Końcowy znak \0 wpisze się teraz automatycznie. s[0] s[1] s[2] s[3] s[4] s[5] s[6] char s[10]; p r o g r a m s[7] \0 s[8] s[9] Rys. 1. Przykład tablicy przechowującej łańcuch znakowy

2 2 2. Pisanie i czytanie łańcuchów 2.1. Użycie printf i scanf Łańcuch można wyprowadzić na ekran za pomocą instrukcji printf. Jeżeli chcemy wyprowadzić tylko jawny tekst, to umieszczamy go pomiędzy apostrofami, bez kodu formatującego. Do tekstu można dokleić znak, na przykład znak przejścia na nowy wiersz: printf( \npodaj imie i nazwisko: ); Pisząc zawartość tablicy pamiętającej łańcuch, stosuje się kod formatujący "%s", jak poniżej: char wezwanie[40]= Podaj nazwisko: ; printf( %s, wezwanie); Łańcuch można odczytać z klawiatury za pomoc instrukcji scanf z kodem formatującym "%s". Przy tym: 1. Przed nazwą tablicy, w której jest zapamiętywany łańcuch, nie ma operatora adresu, ponieważ nazwa tablicy jest jej adresem. 2. Jeżeli czytamy łańcuch zawierający spację, to zostanie zapamiętana tylko ta jego część, która poprzedza spację, ponieważ spacja zostanie potraktowana jako separator. Przykład użycia funkcji printf i scanf do wczytania danej, którą jest nazwisko osoby: char name[40]; printf( Podaj nazwisko: ); scanf( %s,name) 2.2. Użycie puts i gets Funkcje biblioteczne puts i gets służą do wypisywania i wczytywania łańcuchów. Funkcje puts i gets nie wymagają kodów formatujących.

3 Funkcja puts wyprowadza na ekran łańcuch będący jej argumentem; następnie przesuwa kursor na początek następnej linii ekranu. Argument funkcji puts może być jawną stałą łańcuchową, lub nazwą tablicy, która przechowuje łańcuch. Funkcja gets odczytuje łańcuch z klawiatury i zapamiętuje go w tablicy, której nazwa jest jej argumentem. Funkcja gets odczytuje bez problemu także łańcuchy, zawierające spacje. Przykład: char name[40]; puts( Podaj nazwisko: ); gets(name); Uwaga: Funkcji gets oraz scanf nie należy używać jedna po drugiej. Może to powodować błędny odczyt danych. 3. Odwoływanie się do znaków łańcucha Do elementów łańcucha odwołujemy się tak, jak do elementów tablicy (przez indeks lub wskaźnik). Długość łańcucha pamiętanego w tablicy może być mniejsza, niż rozmiar tablicy. Do określenia długości łańcucha aktualnie pamiętanego w tablicy służy funkcja biblioteczna strlen, opisana w zbiorze nagłówkowym <string.h>. Przykładzie poniżej pokazuje dwie różne realizacje funkcji, która zlicza liczbę wystąpień znaku z w łańcuchu s. Funkcja ile_z1 stosuje pętlę for ze zmienną licznikową j, która służy jako indeks kolejnych znaków łańcucha. Liczba kroków jest wyznaczona przez funkcję strlen. Funkcja ile_z2 wykorzystuje pętlę while i wskaźnikowe odwołania do elementów. Warunek działania pętli to po prostu *(s+j). Gdy j-ty znak jest znakiem końca o wartości liczbowej zero, instrukcja while przestaje działać i stan licznika ile zostaje przekazany przez return. 3

4 4 Przykład: Funkcje, zwracające liczbę znaków z w łańcuchu s. int ile_z1(char z, char s[]) int j, ile=0; for(j=0;j<strlen(s);j++) if(s[j]==z) ile++; return ile; int ile_z2(char z, char *s) int j=0, ile=0; while(*(s+j)) if(*(s+j)==z) ile++; j++; return ile; 4. Kopiowanie łańcuchów W języku C++ jest specjalna funkcja biblioteczna strcpy, przeznaczona do kopiowania łańcuchów (zbiór naglówkowy <string.h>). Instrukcja wywołania funkcji strcpy ma dwa argumenty. Pierwszy argument to nazwa zmiennej tablicowej, do której kopiujemy łańcuch. Drugi argument to kopiowany łańcuch. Ten drugi argument może mieć postać jawnej stałej łańcuchowej, lub nazwy tablicy, która pamięta kopiowany łańcuch. Na przykład, chcąc zapisać w tablicy name1 imię Jacek, a w tablicy name2 imię Beata, użyjemy instrukcji: char name1[20],name2[20],bufor[20]; strcpy(name1, Jacek ); strcpy(name2, Beata ); Zamieńmy teraz miejscami zawartość tablic name1 oraz name2. Będzie to wymagało trzech instrukcji:

5 strcpy(bufor,name1); strcpy(name1,name2); strcpy(name2,bufor); 5. Funkcje biblioteczne operujące na łańcuchach W języku C++ występuje kilka funkcji bibliotecznych, zdefiniowanych w zbiorze nagłówkowym <string.h>, które są przeznaczone do operacji na łańcuchach znakowych. Zestawiono je tabeli 1. Tabela 1. Funkcje biblioteczne operujące na łańcuchach 5 Instrukcja wywołania char *p=strcat(s1,s2); strcpy(s,s1); strncpy(s,s1,n); int d=strlen(s); int d=strcmp(s1,s2); int d=stricmp(s1,s2); int d=strncmp(s1,s2,n); char *p=strstr(s,s1); Działanie funkcji Skleja łańcuch s1 z łańcuchem s2. Zwraca wskaźnik na łańcuch wynikowy Kopiuje łańcuch s1 do łańcucha s. Argument s1 może być także stałą łańcuchową. Kopiuje n początkowych znaków łańcucha s1 do łańcucha s. Zwraca aktualną długość łańcucha s, bez uwzględnienia znaku końca. Porównuje łańcuchy s1 i s2. Zwraca wartość: = = 0, gdy łańcuchy są jednakowe, > 0, gdy s1 jest alfabetycznie większy od s2, < 0, gdy s2 jest alfabetycznie mniejszy od s1. Porównuje łańcuchy s1 i s2 bez rozróżniania dużych i małych liter. Porównuje tylko n początkowych znaków łańcuchów s1 i s2. Zwraca wskaźnik na początek pierwszego wystąpienia podłańcucha s1 w łańcuchu s. Gdy s nie zawiera s1, zwraca wartość NULL. Następujące dwa przykłady ilustrują niektóre możliwe zastosowania funkcji łańcuchowych. W przykładzie poniżej pokazano program z funkcją własną, która z łańcucha usuwa wszystkie wystąpienia danego podłańcucha. Opis działania funkcji usun: W każdym kroku pętli while instrukcja strstr(p,p1) sprawdza, czy w łańcuchu p występuje podłańcuch p1. Jeżeli tak nie jest, pętla ulega przerwaniu za

6 6 pomocą instrukcji break i funkcja kończy działanie. W przeciwnym przypadku, za pomocą instrukcji strcpy(pos,pos+d); jest usuwane kolejne wystąpienie podłańcucha p1 (d jest długością podłańcucha p1). Mechanizm działania funkcji strcpy przy usuwaniu fragmentu łańcucha wyjaśnia rysunek 9.2. Pierwszy argument funkcji nie zawsze musi być nazwą łańcucha, czyli wskaźnikiem na początek łańcucha s[0]. Na rys. 9.2 wskaźnik pos wskazuje na element s[4], natomiast wskaźnik pos+3 wskazuje na element s[7]. Ponieważ pos jest pierwszym argumentem funkcji strcpy, a pos+3 jest jej drugim argumentem, zostaną przekopiowane wszystkie znaki z pozycji nr 7, 8, 9, 10, 11 na pozycje nr 4, 5, 6, 7, 8. Poprzednia zawartość pozycji 4, 5, 6, które zajmował usuwany podłańcuch big, zostanie tym samym wymazana. Stan początkowy s s[0] s[1] s[2] s[3] pos s[4] s[5] s[6] pos+3 s[7] s[8] s[9] s[10] s[11] T h e b i g c a t \0 Stan po wykonaniu instrukcji: strcpy(pos,pos+3); T h e c a t \0 Rys. 2. Przykład użycia funkcji strcpy do usunięcia fragmentu łańcucha Przykład: Usuwanie z łańcucha wszystkich wystąpień podłańcucha #include <stdio.h> #include <conio.h> #include <string.h> //dla strstr,strcpy,strlen void usun(char[],char[]);

7 int main () char s1[81]; char s[81]= "Jak sie nie ma, co sie lubi, to sie lubi, co sie ma."; printf("\npierwotna postac lancucha:\n%s\n",s); printf("\npodaj usuwany podlancuch: "); gets(s1); printf("\nkolejne postacie lancucha:\n"); usun(s,s1); printf("\nkoncowa postac lancucha:\n%s\n",s); getch(); return 0; void usun(char s[],char s1[]) char * pos; int d=strlen(s1); while(1) pos=strstr(s,s1); if(pos==null) break; strcpy(pos,pos+d); puts(s); Poniżej pokazano wydruk uzyskany przy usuwaniu podłańcucha sie. Dzięki umieszczeniu w pętli while instrukcji puts można obserwować, jak w kolejnych krokach algorytmu zmienia się postać łańcucha. 7 Pierwotna postac lancucha: Jak sie nie ma, co sie lubi, to sie lubi, co sie ma. Podaj szukany podlancuch: sie Kolejne postacie lancucha: Jak nie ma, co sie lubi, to sie lubi, co sie ma. Jak nie ma, co lubi, to sie lubi, co sie ma. Jak nie ma, co lubi, to lubi, co sie ma. Jak nie ma, co lubi, to lubi, co ma. Koncowa postac lancucha: Jak nie ma, co lubi, to lubi, co ma.

8 8 Następną ilustrację zastosowania bibliotecznych funkcji łańcuchowych stanowi pokazana w przykładzie poniżej funkcja własna licz, która znajduje liczbę wystąpień podłańcucha w łańcuchu. Przykład: Znajdowanie liczby wystąpień podłańcucha w łańcuchu. int licz(char *p,char *p1) int n=strlen(p),n1=strlen(p1); int j=0,w=0; while(j<n-n1+1) if(strncmp(p+j,p1,n1)) j++; else w++; j+=n1; return w; Opis działania funkcji licz: Funkcja ma dwa argumenty: Łańcuch p i szukany podłańcuch p1. Jako licznik wystąpień zastosowano zmienną w, a jako licznik indeksów zmienną j. W pętli while za pomocą instrukcji: strncmp(p+j,p1,n1) porównujemy n1 pozycji łańcucha p, poczynając od pozycji o adresie p+j (a więc fragment p, rozpoczynający się od znaku p[j]), z podłańcuchem p1, przy czym n1 jest długością p1. Jeżeli nie ma zgodności, to funkcja zwraca wartość różną od zera, więc warunek po if jest spełniony. Następuje inkrementacja indeksu j++, dzięki czemu w następnym kroku porównywany fragment łańcucha będzie przesunięty o jedną pozycję w prawo. W przypadku, gdy badany fragment łańcucha p jest identyczny z szukanym podłańcuchem p1, funkcja strncmp zwraca zero, więc warunek po if nie jest spełniony, wobec czego stan licznika w zwiększa się o jeden. Jednocześnie licznik

9 indeksów j zwiększa stan o wartość n1, aby następny badany fragment p rozpoczynał się za znalezionym podłańcuchem. Warunkiem zakończenia działania pętli jest osiągnięcie przez zmienną indeksową wartości j=n-n1. Dalsze zwiększanie indeksu nie miałoby sensu, bo szukany podłańcuch nie mógłby się zmieścić w krótszym od tej wartości granicznej końcowym fragmencie łańcucha. O N W I E,. \0 9 Rys. 3. Ilustracja metody zliczania wystąpień podłańcucha w łańcuchu 6. Tablice łańcuchów 6.1. Przykładowe operacje na tablicy łańcuchów W programie poniżej pokazano sposób definiowania tablicy łańcuchów. Łańcuch jest tablicą, więc tablica t, która zawiera M łańcuchów N-znakowych, jest tablicą dwuwymiarową: char t[m][n]; Tablicę taką można wstępnie zapełnić przy deklarowaniu, wpisując wartości poszczególnych wierszy w cudzysłowach jako stałe łańcuchowe. Pokazany program korzysta z dwóch funkcji własnych, operujących na tablicy łańcuchów. Opis funkcji sortuj: Funkcja porządkuje wiersze w kolejności alfabetycznej. Zastosowano znany algorytm bąbelkowy, jednak

10 10 w jego implementacji łańcuchowej występują dwie ważne cechy, różniące ją od postaci używanej do sortowania tablic liczbowych: 1. Do porównania wierszy nie wolno stosować operatorów relacyjnych > lub <, które nie działają na tablicach. Zamiast tego stosujemy funkcję strcmp. 2. Do kopiowania wierszy tablicy przy ich zamianie miejscami nie można użyć operatora przypisania, bo nie działa on na tablicach. Zamiast tego stosujemy funkcję biblioteczną strcpy. Opis funkcji pisz_tab: Funkcja jest przeznaczona do wyprowadzania zawartości tablicy na ekran. Łańcuchy pamiętane w tablicy są drukowane jako kolejne wiersze tekstu na ekranie. W zależności od wartości argumentu c, funkcja może wyprowadzać pamiętany w tablicy tekst na trzy sposoby: a/ Dokładnie tak, jak jest pamiętany, b/ używając wyłącznie małych liter, c/ używając wyłącznie dużych liter. Do zmiany liter z małych na duże lub odwrotnie służą funkcje biblioteczne toupper, tolower, zdefiniowane w zbiorze nagłówkowym <ctype.h>. Ponadto, za pomocą argumentu p określamy, czy tekst ma być pisany znak po znaku, czy też szeroko, z dodatkową spacją po każdym znaku. Przykładowy wydruk programu przedstawia rys. 4. Ze względu na konieczność modyfikowania pojedynczych znaków, tablica jest tutaj wyprowadzana znak po znaku, za pomocą dwóch zagnieżdżonych instrukcji for. Na ogół jednak wystarcza do tego pojedyncza pętla for, która wyprowadza tablicę łańcuchów wiersz po wierszu, jak poniżej: void pisz_tab(char t[m][n]) for(j=0;j<m;j++) printf( %s\n,t[j]);

11 Przykład: Sortowanie i wypisywanie tablicy łańcuchów #include <stdio.h> #include <conio.h> #include <string.h> #include <ctype.h> const int M=4, N=12; void pisz_tab(char[][n],int,int); void sortuj(char[][n]); //dla toupper, tolower int main() char t[m][n]="tomek", "Jarek", "Zbyszek", "Agata"; puts("tablica przed sortowaniem:\n"); pisz_tab(t,0,0); sortuj(t); puts("\n\ntablica po sortowaniu:\n"); pisz_tab(t,0,0); puts("\n\ntablica malymi literami:\n"); pisz_tab(t,-1,0); puts("\n\ntablica wielkimi literami:\n"); pisz_tab(t,1,0); puts("\ntablica szeroko:\n"); pisz_tab(t,0,1); getch(); return 0; 11 void sortuj(char t[][n]) int i,j; char buf[n]; for (j=0; j<m-1; j++) for (i=j+1; i<m; i++) if (strcmp(t[j],t[i])>0) strcpy(buf,t[i]); strcpy(t[i],t[j]); strcpy(t[j],buf);

12 12 void pisz_tab(char s[][n],int c,int p) int j,k; for (j=0;j<m;j++) for (k=0; k<strlen(s[j]); k++) if (c==0) printf("%c",s[j][k]); else if (c>=1) printf("%c",toupper(s[j][k])); else printf("%c",tolower(s[j][k])); if (p) printf("%c",'\x20'); printf("\n"); Tablica przed sortowaniem: Tomek Jarek Zbyszek Agata Tablica po sortowaniu: Agata Jarek Tomek Zbyszek Tablica malymi literami: agata jarek tomek zbyszek Tablica wielkimi literami: AGATA JAREK TOMEK ZBYSZEK Tablica szeroko: A g a t a J a r e k T o m e k Z b y s z e k Rys. 4. Wydruk uzyskany po wykonaniu programu

13 Tablica wskaźników na łańcuchy znakowe Użycie znakowej tablicy dwuwymiarowej nie jest jedynym sposobem pamiętania łańcuchów znakowych. Można posłużyć się również tablicą wskaźników na znaki, inicjując ją tak, jak poniżej: char *tab[6]="adam", "TADEUSZ", "EWA", "GRZEGORZ", "IGNACY", "ZENON"; Po takiej deklaracji, kompilator umieści inicjowane łańcuchy w pamięci bezpośrednio po sobie, niezależnie od ich długości. Po znaku końca pierwszego łańcucha znajdzie się początkowy znak drugiego łańcucha itd. Dzięki temu nie ma niewykorzystanych miejsc i znacznie zmniejsza się rozmiar pamięci, potrzebnej do zapamiętania tekstu. Jednocześnie z lokowaniem łańcuchów w pamięci, ich adresy są umieszczane w kolejnych pozycjach tablicy tab. Dlatego za pomocą elementów tej tablicy można odwoływać się do kolejnych łańcuchów w pamięci. Ilustracją opisanej metody jest rysunek 5. Dla porównania pokazano, w jaki sposób są zapamiętane łańcuchy w dwuwymiarowej tablicy znakowej. W rozpatrywanym przykładzie użycie tablicy wskaźników zmniejszyło zajęty obszar pamięci o 33 bajty w porównaniu z obszarem pamięci zajmowanym przez tablicę dwuwymiarową z rysunku 6. Program pokazany w przykładzie poniżej operuje na grupie łańcuchów, posługując się tablicą wskaźników na te łańcuchy. W przedstawionym programie zdefiniowano dwie funkcje własne: pisztab oraz sortuj.

14 14 Przed sortow. Po sortow. tab[0] Adr0 Adr2 Adr0 A D A M \0 tab[1] Adr1 Adr0 Adr1 T A D E U S Z \0 tab[2] Adr2 Adr5 Adr2 E W A \0 tab[3] Adr3 Adr4 Adr3 G R Z E G O R Z \0 tab[4] Adr4 Adr1 Adr4 I G N A C Y \0 tab[5] Adr5 Adr3 Adr5 Z E N O N \0 Rys. 5. Tablica łańcuchów deklarowana jako char * tab[6] tab[0] A D A M \0 tab[1] T A D E U S Z \0 tab[2] E W A \0 tab[3] G R Z E G O R Z \0 tab[4] I G N A C Y \0 tab[5] Z E N O N \0 Rys. 6. Tablica łańcuchów deklarowana jako char tab [6][12] Opis funkcji pisz_tab: W pętli for odwołujemy się przez indeks j do kolejnych pozycji tablicy tab, Adres j tego łańcucha tab[j] jest argumentem funkcji puts, która wyprowadza ten łańcuch na ekran, po czym przenosi kursor na początek następnego wiersza ekranu. Opis funkcji sortuj: Funkcja ta porządkuje łańcuchy według ich długości, stosując algorytm bąbelkowy. ale łańcuchy w czasie sortowania nie zmieniają swojego położenia w pamięci. Zmiany dotyczą tylko położenia elementów tablicy wskaźników. Jak widać na rysunku 5, po zakończeniu sortowania kolejne pozycje tablicy tab wskazują na coraz dłuższe łańcuchy. Ponieważ zamieniamy miejscami nie łańcuchy, lecz wskaźniki, możemy posłużyć się operatorem przypisania. W warunku po if porównujemy ze so-

15 bą nie łańcuchy, lecz długości łańcuchów. Te długości, zwracane przez funkcję strlen, są liczbami, dlatego do porównania można użyć operatora większości. Obie opisane funkcje mają argument tablicowy zapisany jako char ** tab. Wymaga to krótkiego wyjaśnienia. Ponieważ nie pracujemy na tablicy znaków, ale na tablicy wskaźników na znaki, argument tablicowy zamiast postaci char tab[ ] musi mieć postać char * tab[ ]. Tę postać argumentu można by z powodzeniem zastosować w definicjach obu funkcji. Jednak jak pamiętamy, tab[ ] można równoważnie zapisać jako *tab. W ten sposób powstał użyty w przykładzie 9.5 zapis argumentu tablicowego jako char ** tab. Druga gwiazdka pokazuje, że mamy argument tablicowy, a pierwsza że chodzi o tablicę wskaźników na znaki. Słowo const użyte przed argumentem w funkcji pisz_tab powoduje, że argument nie będzie mógł ulegać zmianom w czasie działania funkcji w ten sposób często zabezpiecza się argumenty wejściowe. W przypadku tej konkretnej funkcji nie ma to znaczenia. Na rysunku 7 widać wydruk, uzyskany na ekranie po uruchomieniu opisanego programu. 15 Przykład: Operacje na łańcuchach za pośrednictwem tablicy wskaźników #include <stdio.h> #include <conio.h> #include <string.h> const int M=6; void pisz_tab(const char **); void sortuj(char **);

16 16 int main() char *tab[m]= "ADAM", "TADEUSZ", "EWA", "GRZEGORZ", "IGNACY", "ZENON"; pisz_tab(tab); sortuj(tab); pisz_tab(tab); getch(); return 0; void pisz_tab(const char **tab) int j; for (j=0; j<m; j++) puts(tab[j]); puts("\n"); void sortuj(char **tab) int j,k; char *buf; for (j=0; j<m-1; j++) for (k=j+1; k<m; k++) if (strlen(tab[j])>strlen(tab[k])) buf=tab[k]; tab[k]=tab[j]; tab[j]=buf;

17 17 ADAM TADEUSZ EWA GRZEGORZ IGNACY ZENON EWA ADAM ZENON IGNACY TADEUSZ GRZEGORZ Rys. 7. Wydruk otrzymany w wyniku działania programu

Ć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

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

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)

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

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski

Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków. dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski Laboratorium 3: Tablice, tablice znaków i funkcje operujące na ciągach znaków dr inż. Arkadiusz Chrobot dr inż. Grzegorz Łukawski 7 kwietnia 2014 1. Wprowadzenie Pierwsza część instrukcji zawiera informacje

Bardziej szczegółowo

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, 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

Bardziej szczegółowo

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

int tab[5]; tab[1]; ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu macierz [ ] - dwuargumentowy operator indeksowania Rok akademicki 2013/2014, Pracownia nr 10 2/20 Informatyka 1 Tablica elementów ciągły obszar pamięci, w którym umieszczone są elementy tego samego typu Politechnika Białostocka - Wydział Elektryczny Elektrotechnika,

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

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 wskaźników w języku ANSI C

Wstęp do wskaźników w języku ANSI C Wstęp do wskaźników w języku ANSI C / Materiał dydaktyczny pomocniczy do przedmiotu Informatyka sem.iii kier. Elektrotechnika/ 1. Wprowadzenie W języku ANSI C dla każdego typu X (wbudowanego, pochodnego,

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

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

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst

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

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013

Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Kraków 2013 Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Obsługa plików Kraków 2013 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim będziemy mogli

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

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

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

Bardziej szczegółowo

Wskaźniki w C. Anna Gogolińska

Wskaźniki w C. Anna Gogolińska Wskaźniki w C Anna Gogolińska Zmienne Zmienną w C można traktować jako obszar w pamięci etykietowany nazwą zmiennej i zawierający jej wartość. Przykład: kod graficznie int a; a a = 3; a 3 Wskaźniki Wskaźnik

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

Argumenty wywołania programu, operacje na plikach

Argumenty wywołania programu, operacje na plikach Temat zajęć: Argumenty wywołania programu, operacje na plikach Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (Zmienne statyczne) W języku C można decydować o sposobie przechowywania zmiennych. Decydują

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

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

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom

Bardziej szczegółowo

1. Wprowadzanie danych z klawiatury funkcja scanf

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),

Bardziej szczegółowo

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1.

Ćwiczenie 4. Obsługa plików. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 4 Obsługa plików Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Obsługa plików Zanim

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

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

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z

Spis treści JĘZYK C - ŁAŃCUCHY ZNAKÓW. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu. Numer ćwiczenia INF10Z Politechnika Białostocka Wydział Elektryczny Katedra Elektrotechniki Teoretycznej i Metrologii Instrukcja do pracowni specjalistycznej z przedmiotu Informatyka 1 Kod przedmiotu: EZ1C200 010 (studia niestacjonarne)

Bardziej szczegółowo

Wprowadzenie do programowania w języku C

Wprowadzenie do programowania w języku C Wprowadzenie do programowania w języku C Część piąta Tablice koncepcja, reprezentacja, przetwarzanie Autor Roman Simiński Kontakt siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera

Bardziej szczegółowo

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 7 strlen size_t strlen(char const *s); Oblicza długość napisu wskazywanego przez s Przykładowy

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ęzyk C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop

Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop Język C : programowanie dla początkujących : przewodnik dla adeptów programowania / Greg Perry, Dean Miller. Gliwice, cop. 2016 Spis treści Wprowadzenie 11 Adresaci książki 12 Co wyróżnia tę książkę na

Bardziej szczegółowo

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1

Tablice i struktury. czyli złożone typy danych. Programowanie Proceduralne 1 Tablice i struktury czyli złożone typy danych. Programowanie Proceduralne 1 Tablica przechowuje elementy tego samego typu struktura jednorodna, homogeniczna Elementy identyfikowane liczbami (indeksem).

Bardziej szczegółowo

Wykład 5. Operacje na tablicach

Wykład 5. Operacje na tablicach Wykład 5. Operacje na tablicach 1. Opis i deklarowanie zmiennej tablicowej Tablica jest strukturą danych, zawierająca stałą liczbę elementów. Każdy z tych elementów jest jednakowego typu. Typem elementu

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

KURS C/C++ WYKŁAD 1. Pierwszy program

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

Bardziej szczegółowo

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

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================

Bardziej szczegółowo

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego

Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt

Bardziej szczegółowo

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

Temat 1: Podstawowe pojęcia: program, kompilacja, kod Temat 1: Podstawowe pojęcia: program, kompilacja, kod wynikowy. Przykłady najprostszych programów. Definiowanie zmiennych. Typy proste. Operatory: arytmetyczne, przypisania, inkrementacji, dekrementacji,

Bardziej szczegółowo

. Podstawy Programowania 1. Łańcuchy znaków. Arkadiusz Chrobot. 25 listopada 2015

. Podstawy Programowania 1. Łańcuchy znaków. Arkadiusz Chrobot. 25 listopada 2015 .. Podstawy Programowania 1 Łańcuchy znaków Arkadiusz Chrobot Zakład Informatyki 25 listopada 2015 1 / 47 Plan.1 Operacje na pojedynczych znakach.2 Typ danych dla ciągów znaków.3 Inicjacja łańcuchów.4

Bardziej szczegółowo

Pliki. Informacje ogólne. Obsługa plików w języku C

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

Bardziej szczegółowo

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych

Wykład 6_1 Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Wykład 6_ Abstrakcyjne typy danych stos Realizacja tablicowa i za pomocą rekurencyjnych typów danych Abstrakcyjny typ danych Klient korzystający z abstrakcyjnego typu danych: o ma do dyspozycji jedynie

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

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

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); } KURS C/C++ WYKŁAD 2 Instrukcje iteracyjne Instrukcja while Składnia tej instrukcji jest następująca: while (wyrażenie) instrukcja W pętli while wykonanie instrukcji powtarza się tak długo, jak długo wartość

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

Tablice (jedno i wielowymiarowe), łańcuchy znaków

Tablice (jedno i wielowymiarowe), łańcuchy znaków Tablice (jedno i wielowymiarowe), łańcuchy znaków wer. 8 z drobnymi modyfikacjami! Wojciech Myszka Katedra Mechaniki i Inżynierii Materiałowej 2017-04-07 09:35:32 +0200 Zmienne Przypomnienie/podsumowanie

Bardziej szczegółowo

Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 2. Funkcje, operatory i wyrażenia.

Laboratorium Podstaw Informatyki Strona 1. Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 2. Funkcje, operatory i wyrażenia. Laboratorium Podstaw Informatyki Strona 1 Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 2 Funkcje, operatory i wyrażenia. Kraków 2010 Laboratorium Podstaw Informatyki Strona 2 Funkcje

Bardziej szczegółowo

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

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

Bardziej szczegółowo

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje

Bardziej szczegółowo

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/ 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

Bardziej szczegółowo

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

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

Bardziej szczegółowo

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Język C zajęcia nr 5

Język C zajęcia nr 5 Język C zajęcia nr 5 Instrukcja wyboru switch switch ( wyr ) inst Głównym przeznaczeniem instrukcji switch jest rozgałęzianie wykonania programu na wiele różnych ścieżek w zależności od wartości pewnego

Bardziej szczegółowo

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty.

KURS C/C++ WYKŁAD 8. Deklaracja funkcji informuje komplilator jaką wartość funkcja będzie zwracała i jakiego typu są jej argumenty. Funkcje. Deklaracja funkcji: KURS C/C++ WYKŁAD 8 #include //deklaracje funkcji: printf(...), scanf(...) #include //double sqrt (double ) #include //void clrscr (void) void main

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

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

Bardziej szczegółowo

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński

WYKŁAD 9. Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c. Tomasz Zieliński WYKŁAD 9 Algorytmy sortowania elementów zbioru (tablic) Programy: c4_1.c... c4_3.c Tomasz Zieliński /* Przyklad 4.1 - SORTOWANIE TABLIC - metoda najprostsza */ #include #define ROZMIAR 11 void

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

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski

Programowanie w C/C++ Instrukcje - konstrukcje powtórka. LABORKA Piotr Ciskowski Programowanie w C/C++ Instrukcje - konstrukcje powtórka LABORKA Piotr Ciskowski zadanie 1. Licz się ze sobą Napisz funkcję bez argumentów i bez wyniku, która za każdym wywołaniem będzie podawała, ile razy

Bardziej szczegółowo

Programowanie strukturalne i obiektowe

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

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

Język C++ zajęcia nr 2

Język C++ zajęcia nr 2 Język C++ zajęcia nr 2 Inicjalizacja Definiowanie obiektu może być połączone z nadaniem mu wartości początkowej za pomocą inicjalizatora, który umieszczany jest po deklaratorze obiektu. W języku C++ inicjalizator

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

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> 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,... ) ;

Bardziej szczegółowo

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach

Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach Programowanie w C Typ wskaźnikowy do typu znakowego i operacje na łańcuchach Artur Opaliński (pokój E112) e-mail: (p. wykład administracyjny) URL: (p. wykład administracyjny) Treść wykładu Podstawowe funkcje

Bardziej szczegółowo

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n ) SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,

Bardziej szczegółowo

KURS C/C++ WYKŁAD 6. Wskaźniki

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

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

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

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

#include <stdio.h> 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,... ) ;

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

Pliki. Informacje ogólne. Obsługa plików w języku C

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. Może posiadać określone atrybuty, a odwołanie do niego odbywa się poprzez nazwę. Każdy plik ma skończoną

Bardziej szczegółowo

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

for (i=0; i<10; i=i+1) instrukcja; instrukcja zostanie wykonana 10 razy for (inicjalizacja; test; aktualizacja) instrukcja; Rok akademicki 2014/2015, Pracownia nr 5 2/36 Informatyka 1 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr II, studia niestacjonarne I stopnia Rok akademicki 2014/2015 Pracownia

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for. Zadania do wykonania Rozwiązując poniższe zadania użyj pętlę for. 1. apisz program, który przesuwa w prawo o dwie pozycje zawartość tablicy 10-cio elementowej liczb całkowitych tzn. element t[i] dla i=2,..,9

Bardziej szczegółowo

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

Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.

Bardziej szczegółowo

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

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

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

Funkcja (podprogram) void

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

Bardziej szczegółowo

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek].

Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. ABAP/4 Instrukcja IF Opis: Instrukcja warunkowa Składnia: IF [NOT] warunek [AND [NOT] warunek] [OR [NOT] warunek]. [ELSEIF warunek. ] [ELSE. ] ENDIF. gdzie: warunek dowolne wyrażenie logiczne o wartości

Bardziej szczegółowo

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.:

Tablicę 2-wymiarową można przedstawić jako pewien zestaw tablic 1-wymiarowych np.: emat zajęć: ablice wielowymiarowe i struktury w języku C Autor: mgr inż. Sławomir Samolej Zagadnienie 1. (ablice liczbowe wielowymiarowe) ablicę 2-wymiarową można przedstawić jako pewien zestaw tablic

Bardziej szczegółowo

E S - uniwersum struktury stosu

E S - uniwersum struktury stosu Temat: Struktura stosu i kolejki Struktura danych to system relacyjny r I r i i I U,, gdzie U to uniwersum systemu, a i i - zbiór relacji (operacji na strukturze danych). Uniwersum systemu to zbiór typów

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres: Funkcje czyli wieloużywalność kodu Omówienie przekazywania argumentów: "przez

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja!

Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Podstawy Informatyki sem. I 2014/2015 studia zaoczne Elektronika i Telekomunikacja! Krzysztof Grudzień kgrudzi@kis.p.lodz.pl! Zbigniew Chaniecki zch@kis.p.lodz.pl 1 program zajęć - wykład Podstawowe pojęcia

Bardziej szczegółowo

1 Przetwarzanie tablic znakowych

1 Przetwarzanie tablic znakowych 1 Przetwarzanie tablic znakowych Ćwiczenie to poświęcone jest poznaniu i przetrenowaniu metod przetwarzania tablic znakowych. Tablice znakowe w języku C i C++ umożliwiają przetwarzanie napisów. Umiejętność

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Załóżmy, że uprawiamy jogging i chcemy monitorować swoje postępy. W tym celu napiszemy program, który zlicza, ile czasu

Bardziej szczegółowo

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki INFORMATYKA Z MERMIDONEM Programowanie Moduł 5 / Notatki Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Realizator projektu: Opracowano w ramach projektu

Bardziej szczegółowo

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY. LEKCJA 12. Wskaźniki i tablice w C i C++. W czasie tej lekcji: 1. Dowiesz się więcej o zastosowaniu wskaźników. 2. Zrozumiesz, co mają wspólnego wskaźniki i tablice w języku C/C++. WSKAŹNIKI I TABLICE

Bardziej szczegółowo

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci.

Powyższe wyrażenie alokuje 200 lub 400 w zależności od rozmiaru int w danym systemie. Wskaźnik wskazuje na adres pierwszego bajtu pamięci. 1. Tablice dynamiczne Początkowa zadeklarowana wielkość tablicy czasami może okazać niewystarczająca, lub nadmierna. Dynamiczna alokacja pamięci wykorzystywana jest w celu otrzymania bądź zwolnienia pamięci

Bardziej szczegółowo

Programowanie w językach wysokiego poziomu

Programowanie w językach wysokiego poziomu Programowanie w językach wysokiego poziomu zajęcia nr 2 Elektronika i Telekomunikacja, semestr III rok akademicki 2014/2015 Plan dzisiejszych zajęć Pliki tekstowe 1. Operacje na plikach - wprowadzenie

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

Zmienne i struktury dynamiczne

Zmienne i struktury dynamiczne Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest

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

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5

WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne

Bardziej szczegółowo

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

Laboratorium Podstaw Informatyki. Kierunek Elektrotechnika. Ćwiczenie 1. Podstawy. Wprowadzenie do programowania w języku C. Katedra Metrologii AGH Laboratorium Podstaw Informatyki Kierunek Elektrotechnika Ćwiczenie 1 Podstawy Wprowadzenie do programowania w języku C Kraków 2010 Twój pierwszy program w C Program w języku C, jak i w wielu innych językach

Bardziej szczegółowo