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

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

Tablice deklaracja, reprezentacja wewnętrzna

Tablice deklaracja, reprezentacja wewnętrzna Tablice deklaracja, reprezentacja wewnętrzna Tablica jest zmienną złożoną z elementów tego samego typu. Obejmuje ona ciągły obszar pamięci operacyjnej dokładnie tak duży, aby zmieścić wszystkie jej elementy.

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

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

Ł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

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

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

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

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

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

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

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

Podstawy programowania 1

Podstawy programowania 1 Podstawy programowania 1 Krzysztof Grudzień kgrudzi@kis.p.lodz.pl Wykład nr 2 1 Plan spotkań Wskaźniki Tablice jednowymiarowe & wska źniki. Programowanie w C. Wikibooks 2 Co to jest wskaźnik?? Wskaźnik

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

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

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

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

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

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

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

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

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

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

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

Ć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

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

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe

Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe Podstawy programowania Wykład IV PASCAL - łańcuch znaków, - procedury i funkcje, - sortowanie bąbelkowe 1 Podstawy programowania Część I Łańcuchy znaków 2 I. Zmienne łańcuchowe Klasyfikacja zmiennych statycznych

Bardziej szczegółowo

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) 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

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

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1 Podstawy programowania, Poniedziałek 30.05.2016, 8-10 Projekt, część 1 1. Zadanie Projekt polega na stworzeniu logicznej gry komputerowej działającej w trybie tekstowym o nazwie Minefield. 2. Cele Celem

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

Tablice, funkcje - wprowadzenie

Tablice, funkcje - wprowadzenie Tablice, funkcje - wprowadzenie Przemysław Gawroński D-10, p. 234 Wykład 5 25 marca 2019 (Wykład 5) Tablice, funkcje - wprowadzenie 25 marca 2019 1 / 12 Outline 1 Tablice jednowymiarowe 2 Funkcje (Wykład

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

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

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

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

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

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal Instrukcja wyboru, pętle 2 wykład. Podstawy programowania - Paskal Tematy Instrukcja wyboru jeden z wielu wariantów: case Pętle while repeat for Instrukcje sterowania pętli break continue goto Instrukcja

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

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

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

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

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

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

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

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

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 2 Składnia języka C# (cz. 1)

Wykład 2 Składnia języka C# (cz. 1) Wizualne systemy programowania Wykład 2 Składnia języka C# (cz. 1) 1 dr Artur Bartoszewski -Wizualne systemy programowania, sem. III- WYKŁAD Wizualne systemy programowania Budowa projektu 2 Struktura programu

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

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

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

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

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

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka

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

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

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

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

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych

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

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

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

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2)

funkcje rekurencyjne Wykład 12. Podstawy programowania (język C) Funkcje rekurencyjne (1) Funkcje rekurencyjne (2) Podstawy programowania (język C) funkcje rekurencyjne Wykład 12. Tomasz Marks - Wydział MiNI PW -1- Tomasz Marks - Wydział MiNI PW -2- Funkcje rekurencyjne (1) W języku C funkcja moŝe wywoływać samą siebie.

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

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

lekcja 8a Gry komputerowe MasterMind

lekcja 8a Gry komputerowe MasterMind lekcja 8a Gry komputerowe MasterMind Posiadamy już elementarną wiedzę w zakresie programowania. Pora więc zabrać się za rozwiązywanie problemów bardziej złożonych, które wymagają zastosowania typowych

Bardziej szczegółowo

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje

ISO/ANSI C - funkcje. Funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje. ISO/ANSI C - funkcje Funkcje (podprogramy) Mianem funkcji określa się fragment kodu, który może być wykonywany wielokrotnie z różnych miejsc programu. Ogólny zapis: typ nazwa(argumenty) ciało funkcji typ określa typ danych

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

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

. 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

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

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami

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

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

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

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 2. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Algorytmy liniowe Algorytmy z rozgałęzieniami

Bardziej szczegółowo

Lab 9 Podstawy Programowania

Lab 9 Podstawy Programowania Lab 9 Podstawy Programowania (Kaja.Gutowska@cs.put.poznan.pl) Wszystkie kody/fragmenty kodów dostępne w osobnym pliku.txt. Materiały pomocnicze: Wskaźnik to specjalny rodzaj zmiennej, w której zapisany

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

#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

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

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1

Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Podstawy programowania. Wykład 7 Tablice wielowymiarowe, SOA, AOS, itp. Krzysztof Banaś Podstawy programowania 1 Tablice wielowymiarowe C umożliwia definiowanie tablic wielowymiarowych najczęściej stosowane

Bardziej szczegółowo

INFORMATYKA Studia Niestacjonarne Elektrotechnika

INFORMATYKA Studia Niestacjonarne Elektrotechnika INFORMATYKA Studia Niestacjonarne Elektrotechnika Wydział Elektrotechniki i Informatyki dr inż. Michał Łanczont Wydział Elektrotechniki i Informatyki p. E419 tel. 81-538-42-93 m.lanczont@pollub.pl http://lanczont.pollub.pl

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

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

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

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

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

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