Wykład 5. Operacje na tablicach

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

Download "Wykład 5. Operacje na tablicach"

Transkrypt

1 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 tablicy może być typ znakowy, jeden z typów liczbowych, lub typ strukturalny. Można także utworzyć tablicę, której elementy także są tablicami będzie to tablica dwuwymiarowa. Na rysunku 1 pokazano tablicę, która zawiera 6 elementów typu int. Adresy elementów FFDC FFDE FFE0 FFE2 FFE4 FFE6 Przykładowa zawartość Odwołania do elementów -1 tab[0] 4 tab[1] -10 tab[2] 8 tab[3] 17 tab[4] 2 tab[5] Rys. 1. Struktura zmiennej tablicowej int tab[6] Deklaracja zmiennej tablicowej ma ogólną postać: typ_elementów_tablicy nazwa_zmiennej_tablicowej [rozmiar_tablicy]; Rozmiaru tablicy, czyli liczby jej elementów, nie można zmieniać w czasie wykonywania programu. Jest to wartość stała, którą można zapisać w postaci stałej jawnej lub stałej definiowanej. Definiując stałą dla rozmiaru tablicy posługujemy się typem całkowitym, lub specjalnie do tego przeznaczonym typem size_t. Na przykład tablica z rysunku 8.1 będzie zadeklarowana następująco: const int R=6; // lub: const size_t R=6; int tab[r];

2 2 Tablicę można zapełnić z klawiatury, lub za pomocą odpowiednich instrukcji programu. Początkowe wartości elementów można zainicjować przy deklarowaniu tablicy: int tab[r]=-1,4,-10,8,17,2; Jak widać, wartości elementów wpisuje się po znaku =, w postaci ich listy, ujętej w nawiasy klamrowe. Warto podkreślić, że liczba wpisanych wartości nie może być większa od rozmiaru tablicy. Jeżeli wpiszemy mniej niż R wartości, to pozostałe elementy tablicy będą równe zeru. 2. Odwoływanie się do elementów tablicy Chcąc odnieść się w jakimś wyrażeniu do określonego elementu tablicy, piszemy nazwę zmiennej tablicowej, a za nią, w nawiasach kwadratowych, numer pozycji, zwany indeksem. Na przykład, chcąc zapisać zero na pozycji 2 zmiennej tablicowej tab, napiszemy: tab[2]=0; Indeksem pierwszego elementu tablicy zawsze jest liczba 0. Ostatni element ma indeks R-1, gdzie R to rozmiar tablicy. Indeks elementu tablicy jest typu całkowitego. Może być stałą jawną, stałą definiowaną, zmienną, wyrażeniem. Przykład: Zamiana miejscami wartości na dwóch początkowych pozycjach tablicy tab: int tab[6],j=0,buf; buf=tab[j]; tab[j]=tab[j+1]; tab[j+1]=buf. Uwaga: Nie wolno przekraczać definiowanego zakresu indeksów! 3. Wskaźnikowe odwołania do elementów W języku C++ nazwa zmiennej tablicowej jest stałą wskaźnikową, która jest równa jest adresowi tej zmiennej: tab==&tab[0]

3 Adresy kolejnych elementów tablicy są odpowiednio przesunięte względem adresu elementu początkowego. Adres k-tego elementu tablicy o nazwie tab to: tab+k Pamiętajmy, że symbol + użyty w tym wyrażeniu nie oznacza dodawania, lecz przesunięcie o k elementów typu int względem adresu elementu początkowego &tab[0]. Pokazuje to rysunek 2. 3 Względne adresy elementów tab tab+1 tab+2 tab+3 tab+4 tab+5 Przykładowa zawartość -1 * tab Odwołania wskaźnikowe 4 * (tab+1) -10 * (tab+2) 8 * (tab+3) 17 * (tab+4) 2 * (tab+5) Rys. 2. Wskaźnikowe odwołania do tablicy int tab[6] Za pomocą wskaźników można odwoływać się do wskazywanych przez nie zmiennych, pisząc przed wskaźnikiem symbol *. Dwa sposoby odwołania się do k tego elementu tablicy: tab[k]=0; //odwołanie przez indeks *(tab+k)=0; //odwołanie przez wskaźnik

4 4 4. Tablica jako argument funkcji Argument tablicowy może mieć postać indeksową lub wskaźnikową. Przykład: Funkcja znajduje w tablicy tab[] liczbę elementów równych x. Wynik ile jest przekazywany przez referencję. Nagłówek funkcji: lub: void policz(int tab[],int r,int x,int &ile) void policz(int *tab,int r,int x,int &ile) Przez argument r przekazuje się rozmiar tablicy. Dzięki temu funkcja może operować na tablicach o różnej liczbie elementów. 5. Zapełnianie losowe tablicy i drukowanie jej zawartości. Przykład: Program z funkcjami własnymi operującymi na tablicy (zapełnianie losowe, wyprowadzanie na ekran) #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> void zaptablos(int[],int,int); void poktab(int[],int); int main(void) const int R=10; int tab[r]k; zaptablos(tab,r,100); poktab(tab,r); getch(); return 0; void zaptablos(int tab[],int r,int z) int j; srand(time(null)); //odwołania indeksowe for (j=0; j<r; j++) tab[j]=rand()%z;

5 5 void poktab(int *tab,int n) printf("\n\noto liczby w tablicy:\n\n"); //odwołania wskaźnikowe for (int j=0; j<n; j++) printf("%4d",*(tab+j)); /* void poktab(int *tab,int n) printf("\n\noto liczby w tablicy:\n\n"); //odwołania wskaźnikowe z operatorem ++ for (int j=0; j<n; j++) printf("%4d",*tab++); */ Argument tablicowy jest typu wskaźnikowego, jednak w instrukcji wywołanie przed identyfikatorem tab nie ma operatora adresu &. Nazwa tablicy z definicji jest adresem zmiennej tablicowej, dlatego operator & jest zbyteczny. 6. Sumowanie wartości elementów tablicy Przykład: Znajdowanie sumy elementów tablicy #include <conio.h> #include <stdio.h> long sumtab(int[],int); int main(void) const int R=10; int tab[r]=9,7,4,6,8,1,3,7,0,2; printf("\nsuma elementow: %ld",sumtab(tab,r)); getch(); return 0; long sumtab(int t[],int r) long s=0; for (int j=0;j<r;) s+=t[j++]; return s;

6 6 7. Zliczanie elementów o zadanych cechach Przykład poniżej pokazuje funkcję odd_even, która sprawdza, ile jej tablica wejściowa t zawiera wartości parzystych, a ile nieparzystych. Wyniki są przekazywane przez dwa argumenty wskaźnikowe p oraz n. Argumenty te służą jednocześnie jako liczniki elementów parzystych i nieparzystych. Dzięki temu nie trzeba deklarować dodatkowych zmiennych licznikowych. Przykład: Zliczanie elementów tablicy o wartościach parzystych i nieparzystych #include<stdio.h> #include<conio.h> void odd_even(int*,int,int*,int*); int main() const int R=12; int tab[r]=1,3,4,12,6,10,8,16,9,7,2,5; int parz, nieparz; odd_even(tab,r,&parz,&nieparz); printf("\nliczba parzystych: %d",parz); printf("\nliczba nieparzystych: %d",nieparz); getch(); return 0; void odd_even(int *t,int r,int *p,int *n) *n=*p=0; for(int j=0;j<r;j++) if(*(t+j)%2) (*n)++; else (*p)++; 8. Znajdowanie maksimum i minimum Znajdowanie w tablicy tab o rozmiarze r maksymalnej spośród pamiętanych w niej wartości przebiega według prostego algorytmu, pokazanego poniżej. int max=tab[0]; for (int j=1; j<r; j++) if (tab[j]>max) max=tab[j];

7 Przykład: Znajdowanie największego i najmniejszego elementu oraz liczby ich wystąpień w tablicy #include<stdio.h> #include<conio.h> void max_min(int[],int,int&,int&,int&,int&); int main() const int R=12; int tab[r]=1,3,4,16,6,1,8,16,9,7,16,5; int max,min,ilemax,ilemin; max_min(tab,r,max,min,ilemax,ilemin); printf("\nmaksimum: %3d Wystapien: %d",max,ilemax); printf("\nminimum: %3d Wystapien: %d",min,ilemin); getch(); return 0; 7 void max_min(int t[],int r,int &max,int &min, int &ilemax,int &ilemin ) max=min=t[0]; ilemax=ilemin=1; for(int j=1;j<r;j++) if (t[j]==max) ilemax++; else if(t[j]>max) ilemax=1; max=t[j]; if (t[j]==min) ilemin++; else if(t[j]<min) ilemin=1; min=t[j]; 9. Przesunięcie cykliczne zawartości tablicy Przesunięciem cyklicznym zawartości tablicy o jedną pozycję w prawo nazywamy taką zmianę jej zawartości, po której każdy element zajmuje miejsce jego sąsiada po prawej stronie, przy czym element ostatni zajmuje miejsce zerowego. Dla int tab[r] można to zrealizować za pomocą trzech instrukcji:

8 8 int buf=tab[r-1]; for (int j=r-1;j>0;j--) tab[j]=tab[j-1]; tab[0]=buf; Zmienna pomocnicza buf jest konieczna. Musimy w niej przejściowo zapamiętać ostatni element tablicy w przeciwnym przypadku jego wartość zostałaby utracona w wyniku zapisania do niego wartości elementu poprzedzającego. A przecież jest ona potrzebna, bo ma znaleźć się na zerowej pozycji tablicy. Chcąc przesunąć zawartość pozycji o p pozycji, trzeba pokazaną wyżej trójkę instrukcji powtórzyć p razy za pomocą zewnętrznej pętli for. tab[0] tab[1] tab[2] tab[3] tab[4] tab[5] tab[0] tab[1] tab[2] tab[3] tab[4] tab[5] Rys. 3. Przesunięcie cykliczne zawartości tablicy o jedną pozycję w prawo Przykład: Przesuwanie cykliczne zawartości tablicy w prawo #include<stdio.h> #include<conio.h> void cykl_prawo(int*,int,int); void poktab(int[],int); int main() const int R=8; int tab[r]=1,2,3,4,5,6,7,8; int p; printf("o ile pozycji? "); scanf("%d",&p); poktab(tab,r); cykl_prawo(tab,r,p); poktab(tab,r); getch(); return 0; void poktab(int t[],int r) printf("\n\noto liczby w tablicy:\n\n"); for (int j=0; j<r; j++) printf("%4d",*(t+j));

9 void cykl_prawo(int *t,int r,int p) int buf; for (int k=0;k<p;k++) buf=*(t+r-1); for(int j=r-1;j>0;j--) *(t+j)=*(t+j-1); *t=buf; Sortowanie bąbelkowe tablicy Sortowaniem nazywamy porządkowanie zawartości tablicy w taki sposób, by kolejne elementy tablicy zawierały wartości uszeregowane w porządku rosnących lub malejących wartości. Przykład poniżej zawiera funkcję własną bubblesort. Funkcja ta realizuje sortowanie bąbelkowe tablicy, przekazanej jako argument t. Sortowanie przebiega w porządku rosnącym lub malejącym, w zależności od wartości argumentu p. Przykład: Sortowanie bąbelkowe tablicy #include<stdio.h> #include<conio.h> void poktab(int*,int); void bubble(int[],int,int); int main() const int R=8; int tab[r]=10,2,3,15,6,5,7,13; int p; poktab(tab,r); printf("\njaki porzadek? <1> rosnacy, <0> malejacy: "); scanf("%d",&p); bubble(tab,r,p); poktab(tab,r); getch(); return 0;

10 10 void poktab(int *t,int r) printf("\n\noto liczby w tablicy:\n\n"); for (int j=0; j<r; j++) printf("%4d",*(t+j)); printf("\n"); void bubble(int t[],int r,int p) int kopia,war; for (int j=0; j<r-1; j++) for (int k=j+1; k<r; k++) if (p!=0) war=t[j]>t[k]; else war=t[j]<t[k]; if (war) kopia=t[j]; t[j]=t[k]; t[k]=kopia; 11. Sortowanie rekurencyjne tablicy quick sort Podstawą algorytmu quick sort jest następujący pomysł: Jeden z elementów sortowanej tablicy wyróżnia się jako tzw. element osiowy. Pozostałe elementy dzielimy na dwie grupy. Do jednej z nich przenosimy elementy mniejsze od osiowego. Drugą grupę tworzą pozostałe elementy, większe od elementu osiowego lub mu równe. Następnie proces ten kontynuujemy rekursywnie, dzieląc w podobny sposób każdą z obu grup na podgrupy względem im właściwych elementów osiowych. Te podgrupy dzielimy dalej, dopóki kolejna podgrupa nie stanie się pojedynczym elementem wtedy dalszy podział jest niemożliwy. Algorytm quick sort jest znacznie bardziej efektywny od algorytmu bąbelkowego. Dla quick sort liczba operacji jest proporcjonalna do wyrażenia n*log(n), natomiast dla bubble sort wzrasta ona proporcjonalnie do n 2, gdzie symbol n oznacza rozmiar sortowanej tablicy. Poniżej pokazano sekwencję instrukcji, dzielącą tablicę na dwie grupy względem elementu t[0], który pełni rolę elementu osiowego. Zmienna j jest licznikiem indeksów, powiększanym o wartość 1 w każdym kolejnym cyklu pętli for. Zmienna m wskazuje numer elementu, który podlega kolejnej zamianie w procesie podziału grupy na dwie podgrupy.

11 Po kolei sprawdza się, czy j-ty element tablicy jest mniejszy od osiowego. Jeżeli ma to miejsce, następuje inkrementacja licznika m, a następnie element t[j] jest zamieniany miejscami z elementem t[m]. int t[12]=8,13,5,2,15,1,30,4,0,16,7,28; int m=0; for(int j=1;j<12;i++) if(t[j]<t[0]) m++; zamiana(t[m],t[j]); zamiana(t[m],t[0]); Ostatnia zamiana elementów, dokonywana już po zakończeniu instrukcji for, ma na celu przesunięcie elementu osiowego na właściwą pozycję. Przykład poniżej zawiera pełny program z rekurencyjną funkcją sortującą qsort. Po zakończeniu kolejnego podziału tablicy na dwa fragmenty względem elementu osiowego, funkcja qsort dwukrotnie wywołuje samą siebie, dzieląc względem odpowiednich elementów osiowych dwa fragmenty, otrzymane podczas pierwszego podziału. Proces ten jest kontynuowany rekursywnie tak długo, dopóki końcowe fragmenty nie zostaną zredukowane do pojedynczych elementów (rys. 4). 11 Przykład: Program sortujący tablicę zgodnie z algorytmem quick sort #include <conio.h> #include <stdio.h> void poktab(int[],int,int); void zamiana(int &,int &); void qsort(int[],int,int); int main() const int N=12; int t[n]=8,13,5,2,15,1,30,4,0,16,7,28; poktab(t,0,n-1); qsort(t,0,n-1); poktab(t,0,n-1); getch(); return 0; void poktab(int t[],int p,int k)

12 12 for(int j=p;j<=k;j++) printf("%4d",t[j]); printf("\n\n"); void zamiana(int &a, int &b) int buf=a; a=b; b=buf; void qsort(int t[],int left,int right) if (left<right) int m=left; for(int i=left+1;i<=right;i++) if (t[i]<t[left]) zamiana(t[++m],t[i]); zamiana(t[left],t[m]); qsort(t,left,m-1); qsort(t,m+1,right); Początkowa postać tablicy: t[0] t[1] t[2] t[3] t[4] t[5] t[6] t[7] t[8] t[9] t[10] t[11] Porządkowanie wg elementów osiowych t[0] t[1] t[2] t[3] t[4] t[5] t[6] t[7] t[8] t[9] t[10] t[11] t[0] t[1] t[2] t[3] t[4] t[5] t[7] t[8] t[9] t[10] t[11] t[0] t[1] t[2] t[3] t[4] t[9] t[10] t[11] t[1] t[2] t[3] t[4] t[10] t[11] t[1] t[2] t[3] t[1] t[2] 1 2 Końcowa postać tablicy:

13 t[0] t[1] t[2] t[3] t[4] t[5] t[6] t[7] t[8] t[9] t[10] t[11] Rys.4. Kolejne podziały fragmentów tablicy w czasie pracy funkcji qsort Tablica dwuwymiarowa Struktura i sposób deklarowania const int LW=3, LK=4; int tab[lw][lk]= 0, 1, 2, 3, 10,11,12,13, 20,21,22,23; int tab[3][4]; tab[0][0] tab[0][1] tab[0][2] tab[0][3] tab[0] tab[1][0] tab[1][1] tab[1][2] tab[1][3] tab[1] tab[2][0] tab[2][1] tab[2][2] tab[2][3] tab[2] Rys.5. Tablica dwuwymiarowa Odwoływanie się do elementów Odwołanie za pomocą indeksów: tab[j][k]=0; gdzie j numer wiersza; k numer kolumny.

14 14 Odwołania wskaźnikowe: Interpretując j-ty wiersz jako jednowymiarową tablicę o nazwie tab[j], odwołamy się do elementu znajdującego się w j tym wierszu i k tej kolumnie, jak następuje: *(tab[j]+k)=0; Ponieważ odwołanie tab[j] zapisuje się wskaźnikowo jako *(tab+j), odwołanie wskaźnikowe do elementu tab[j][k] przyjmie ostatecznie postać: *(*(tab+j)+k)=0; Funkcje operujące na tablicy dwuwymiarowej Dla tablicy dwuwymiarowej argument tablicowy może mieć postać, jak w poniższym nagłówku funkcji: void poktab(int tab[][lk]) Występują tu dwie pary nawiasów kwadratowych. Zawartość pierwszej pary może być pusta; można też do nie wpisać liczbę wierszy tablicy. W drugiej parze nawiasów koniecznie należy wpisać liczbę kolumn (stała LK). Instrukcja wywołania funkcji poktab w main będzie wyglądać następująco: poktab(tab); W instrukcji wywołania przed nazwą tablicy nie ma operatora adresu, ponieważ ta nazwa jest właśnie przekazywanym adresem tablicy. Argument tablicowy może mieć postać wskaźnika na początkowy element tablicy: void poktab(int *t, int lw, int lk) Jako dodatkowe argumenty wykorzystano liczbę wierszy lw i liczbę kolumn lk. Takie podejście jest wygodniejsze, bo funkcja może operować na tablicach o dowolnej liczbie wierszy lub kolumn. Wywołanie funkcji poktab w main ma teraz postać:

15 poktab(&tab[0][0],lw,lk); Jak widać, w instrukcji wywołania wpisujemy po prostu adres początkowego elementu tablicy. W przykładzie poniżej pokazano proste funkcje stosujące oba rodzaje argumentów tablicowych i różne sposoby odwoływania się do elementów. Wspólną cechą jest to, że odwołują się do wszystkich elementów tablicy, wykorzystując dwie zagnieżdżone pętle for. Odwołania: Adresy Względne tab[0] int *t=&tab[0][0]; tab[0][0] *(*(tab+0)+0) 0 t tab[0][1] *(*(tab+0)+1) 1 (t+1) tab[0][2] *(*(tab+0)+2) 2 (t+2) tab[0][3] *(*(tab+0)+3) 3 (t+3) tab[1] tab[1][0] *(*(tab+1)+0) 10 (t+4) tab[1][1] *(*(tab+1)+1) 11 (t+5) tab[1][2] *(*(tab+1)+2) 12 (t+6) tab[1][3] *(*(tab+1)+3) 13 (t+7) tab[2] tab[2][0] *(*(tab+2)+0) 20 (t+8) tab[2][1] *(*(tab+2)+1) 21 (t+9) tab[2][2] *(*(tab+2)+2) 22 (t+10) tab[2][3] *(*(tab+2)+3) 23 (t+11) 15 Rys. 6. Ułożenie elementów tablicy dwuwymiarowej w pamięci

16 16 Przykład: Trzy różne funkcje wyprowadzające na ekran zawartość tablicy dwuwymiarowej i ich wywołania w main. #include <conio.h> #include <stdio.h> const int LW=3, LK=4; //stałe globalne void poktab1(int [][LK]); void poktab2(int [][LK]); void poktab3(int *,int,int); int main() int tab[lw][lk]= 0, 1, 2, 3, 10,11,12,13, 20,21,22,23;; poktab1(tab); poktab2(tab); poktab3(&tab[0][0],lw,lk); getch(); return 0; void poktab1(int t[][lk]) for(int j=0;j<lw;j++) for(int k=0;k<lk; k++) printf("%4d",t[j][k]); printf("\n"); printf("\n"); void poktab2(int t[][lk]) for(int j=0;j<lw;j++) for(int k=0;k<lk; k++) printf("%4d",*(*(t+j)+k)); printf("\n"); printf("\n"); void poktab3(int *t,int lw,int lk) for(int j=0;j<lw;j++) for(int k=0;k<lk;k++) printf("%4d",*t++); printf("\n"); printf("\n");

17 17 Przykład: Program pokazujący tablicę mnożenia liczb od 1 do 16 w zapisie dziesiętnym, ósemkowym lub szesnastkowym #include <conio.h> #include <stdio.h> char dane(); void poktab(int *,int,int,char); void zaptab(int *,int,int); int main() const int LW=16, LK=16; int tab_2[lw][lk]; zaptab(&tab_2[0][0],lw,lk); poktab(&tab_2[0][0],lw,lk,dane()); getch(); return 0; char dane() printf("\nwybierz podstawe zapisu.\n"); printf("p=10 - <d>, p=8 - <o>, p=16 - <x> : "); char b; do scanf("%c",&b); while (b!='o'&&b!='d'&&b!='x'); return b; void zaptab(int *m,int lw,int lk) for(int j=0;j<lw;j++) for(int k=0;k<lk;k++) *(m++)=(j+1)*(k+1); void poktab(int *m,int lw, int lk, char b) char s[4]='%','4',b,'\0'; printf("\ntablica mnozenia\n\n"); for(int j=0;j<lw;j++) for(int k=0;k<lk;k++) printf(s,*m++); printf("\n");

18 18 Wybierz podstawe zapisu. p=10 - <d>, p=8 - <o>, p=16 - <x> : x Tablica mnozenia a b c d e f a c e a 1c 1e c f b 1e a 2d c c c c 40 5 a f e d c b 50 6 c e 24 2a c e 54 5a 60 7 e 15 1c 23 2a f 46 4d 54 5b b 24 2d 36 3f a 63 6c 75 7e a 14 1e c a 64 6e c 96 a0 b c d e f 9a a5 b0 c c c c a8 b4 c0 d 1a e 5b f 9c a9 b6 c3 d0 e 1c 2a e 8c 9a a8 b6 c4 d2 e0 f 1e 2d 3c 4b 5a a5 b4 c3 d2 e1 f a0 b0 c0 d0 e0 f0 100 Rys. 7. Wydruk tablicy mnożenia w zapisie szesnastkowym

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

Wykład 3. Instrukcje powtarzające

Wykład 3. Instrukcje powtarzające Wykład 3. Instrukcje powtarzające 3_. Instrukcja while Graf działania instrukcji while POCZĄTEK 0 wyrażenie relacyjne.... KONIEC Składnia (zapis) instrukcji while: while (wyrażenie_relacyjne) // ------

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

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

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

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

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

Język C zajęcia nr 11. Funkcje

Język C zajęcia nr 11. Funkcje Język C zajęcia nr 11 Funkcje W języku C idea podprogramów realizowana jest wyłącznie poprzez definiowanie i wywołanie funkcji. Każda funkcja musi być przed wywołaniem zadeklarowana. Deklaracja funkcji

Bardziej szczegółowo

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od

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

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

Wykład 6. Operacje na łańcuchach znakowych 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

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

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

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

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

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 8. Wskaźniki. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 8 Wskaźniki 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania w C++ Wskaźniki 2 Podstawy Pojęcie wskaźnika Wskaźnik na zmienną danego

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

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

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

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

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

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

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

Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz Ćwiczenie 5 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Arytmetyka wskaźników, konwersja (rzutowanie) wskaźników Ćwiczenia z dostępu

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

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

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

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std; Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu

Bardziej szczegółowo

Algorytmy i język C++

Algorytmy i język C++ Wykład 6 Wskaźniki Wskaźnik nie przechowuje wartości zmiennej ale, podobnie jak tablica, wskazuje miejsce w pamięci, w którym znajduje się zmienna danego typu. W poniższym przykładzie symbol * pomiędzy

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Zmienne, stałe i operatory

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 > C++ wskaźniki Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017 >??? Co to jest WSKAŹNIK? ++ wskaźniki 2 / 20 >??? Co to jest WSKAŹNIK? To po prostu ADRES

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

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie. Funkcje Deklaracja funkcji typ funkcji identyfikator_funkcji(lista parametrów formalnych); Typ funkcji określa typ wartości zwracanej przez funkcję (typ zdefiniowany pierwotnie jak int, typ zdefiniowany

Bardziej szczegółowo

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: Deklaracje W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: int i,j,n; double x, tab[1000]; przykładowe deklaracje w C Pierwsze

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

// Liczy srednie w wierszach i kolumnach tablicy "dwuwymiarowej" // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib.

// Liczy srednie w wierszach i kolumnach tablicy dwuwymiarowej // Elementy tablicy są generowane losowo #include <stdio.h> #include <stdlib. Wykład 10 Przykłady różnych funkcji (cd) - przetwarzanie tablicy tablic (tablicy "dwuwymiarowej") - sortowanie przez "selekcję" Dynamiczna alokacja pamięci 1 // Liczy srednie w wierszach i kolumnach tablicy

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

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

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

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

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane:

Deklaracje. W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: Deklaracje Wykład5TYPYDANYCH,str1 W większości języków programowania(nie we wszystkich) wymaga się, żeby użyte w programie zmienne były wcześniej zadeklarowane: int i,j,n; double x, tab[1000]; } przykładowe

Bardziej szczegółowo

Program 14. #include <iostream> #include <ctime> using namespace std;

Program 14. #include <iostream> #include <ctime> using namespace std; Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki > C++ dynamiczna alokacja/rezerwacja/przydział pamięci Dane: Iwona Polak iwona.polak@us.edu.pl Uniwersytet Śląski Instytut Informatyki 1429536600 > Dzisiejsze zajęcia sponsorują słówka: new oraz delete

Bardziej szczegółowo

IX. Wskaźniki.(3 godz.)

IX. Wskaźniki.(3 godz.) Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje

Bardziej szczegółowo

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia

część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia Język ANSI C część 8 wskaźniki - podstawy Jarosław Gramacki Instytut Informatyki i Elektroniki Podstawowe pojęcia najbardziej podstawowe operacje na wskaźnikach int x = 1, y = 2, Tab[10]; int *ip; // czy

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

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf("\n podaj wartosc liczby a\n"); scanf("%d",&a); pa=&a;

//zmienne globalne int *pa, *pb; //wskaźniki globalne void main(void) { clrscr(); printf(\n podaj wartosc liczby a\n); scanf(%d,&a); pa=&a; Ćwiczenie 4 4.1. Wskaźnik na zmienną Wskaźniki, tablice Deklaracja int *pa; oznacza, że pa jest wskaźnikiem na obiekt typu int. Zmienna pa zawiera adres pamięci, zarezerwowanej na zmienną typu int. Chcąc

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

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37

Programowanie w C++ Wykład 4. Katarzyna Grzelak. 19 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Programowanie w C++ Wykład 4 Katarzyna Grzelak 19 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 37 Funkcje cd K.Grzelak (Wykład 1) Programowanie w C++ 2 / 37 Funkcja powtórzenie Funkcje == podprogramy

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

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium)

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

Bardziej szczegółowo

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

Stałe, tablice dynamiczne i wielowymiarowe

Stałe, tablice dynamiczne i wielowymiarowe Stałe, tablice dynamiczne i wielowymiarowe tylko do odczytu STAŁE - CONST tablice: const int dni_miesiaca[12]=31,28,31,30,31,30,31,31,30,31,30,31; const słowo kluczowe const sprawia, że wartość zmiennej

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

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

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne 1 Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

Wskaźniki. Programowanie Proceduralne 1

Wskaźniki. Programowanie Proceduralne 1 Wskaźniki Programowanie Proceduralne 1 Adresy zmiennych Sterta 1 #include 2 3 int a = 2 ; 4 5 int main ( ) 6 { 7 int b = 3 ; 8 9 printf ( " adres zmiennej a %p\n", &a ) ; 10 printf ( " adres

Bardziej szczegółowo

4) Operacje na tablicy dwuwymiarowej bez wykorzystywania indeksów liczbowych:

4) Operacje na tablicy dwuwymiarowej bez wykorzystywania indeksów liczbowych: WSKAŹNIKI I TABLICE WIELOWYMIAROWE 1) Operacje na tablicach wielowymiarowych w zapisie indeksowym: tab[ 3 ][ 5 ] ; i, j ; for( i=0 ; i

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

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

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

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI Wprowadzenie do środowiska Matlab 1. Podstawowe informacje Przedstawione poniżej informacje maja wprowadzić i zapoznać ze środowiskiem

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

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

Algorytm selekcji Hoare a. Łukasz Miemus

Algorytm selekcji Hoare a. Łukasz Miemus Algorytm selekcji Hoare a Łukasz Miemus 1 lutego 2006 Rozdział 1 O algorytmie 1.1 Problem Mamy tablicę A[N] różnych elementów i zmienną int K, takie że 1 K N. Oczekiwane rozwiązanie to określenie K-tego

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

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 - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

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

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

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi: Program 20 Napisać następujące funkcje: funkcję pobierającą (z klawiatury) zawartość tablicy liczb całkowitych podanej jako parametr, o długości podanej jako parametr; funkcję wypisującą zawartość tablicy

Bardziej szczegółowo

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty) Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty) // to jest pojedynczy komentarz (1-linijkowy) to jest wielolinijkowy komentarz Budowa "czystego" skryptu PHP (tak

Bardziej szczegółowo

Struktury, unie, formatowanie, wskaźniki

Struktury, unie, formatowanie, wskaźniki Struktury, unie, formatowanie, wskaźniki 1. Napisz aplikację, która na wejściu dostaje napis postaci W Roku Pańskim 1345, władca Henryk 12, na rzecz swoich 143209 poddanych uchwalił dekret o 20 procentowej

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

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

Struktury Struktura polami struct struct struct struct

Struktury Struktura polami struct struct struct struct Struktury Struktura jest zbiorem zmiennych występujących pod wspólna nazwą. Zmienne wchodzące w skład struktury nazywane są polami lub elementami, a czasem członkami struktury. Struktury używamy, jeśli

Bardziej szczegółowo

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Proste programy w C++ zadania

Proste programy w C++ zadania Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna

Bardziej szczegółowo

C-struktury wykład. Dorota Pylak

C-struktury wykład. Dorota Pylak C-struktury wykład Dorota Pylak C-struktury W języku C++, jak w każdym języku obiektowym, mamy możliwość definiowania własnych typów danych, wraz z określeniem operacji, jakie na tych danych można wykonywać.

Bardziej szczegółowo

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

1 Wskaźniki. 1.1 Główne zastosowania wskaźników 1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować

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

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

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

Bardziej szczegółowo

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Wykład 7 Abstrakcyjne typy danych słownik (lista symboli) Definicja słownika: Słownik (tablica lub lista symboli) to struktura danych zawierająca elementy z kluczami, która pozwala na przeprowadzanie dwóch

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

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

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

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

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

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

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania 1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja nie ma parametru i zwraca wartość na zewnątrz. nie ma parametru i nie zwraca wartości na zewnątrz. ma parametr o nazwie void i zwraca

Bardziej szczegółowo

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17

Wskaźniki. Przemysław Gawroński D-10, p marca Wykład 2. (Wykład 2) Wskaźniki 8 marca / 17 Wskaźniki Przemysław Gawroński D-10, p. 234 Wykład 2 8 marca 2019 (Wykład 2) Wskaźniki 8 marca 2019 1 / 17 Outline 1 Wskaźniki 2 Tablice a wskaźniki 3 Dynamiczna alokacja pamięci (Wykład 2) Wskaźniki 8

Bardziej szczegółowo