Wstęp do programowania

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

Download "Wstęp do programowania"

Transkrypt

1 wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017

2 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji rand z biblioteki cstdlib (standardowej bilblioteki języka C) w C++ (od standardu C++11) dostępna jest biblioteka random umożliwiająca bardziej zaawansowane losowanie, np. z wyborem rozkładu prawdopodobieństwa (szczegółowy opis można znaleźć np. pod adresem org/jtc1/sc22/wg21/docs/papers/2013/n3551.pdf)

3 Losowanie za pomocą funkcji z biblioteki cstdlib należy dołączyć do programu bibliotekę cstdlib funkcja rand generuje (pseudo)losową liczbę całkowitą z przedziału [0, RAND MAX ] (gdzie RAND MAX jest stałą zależną od implementacji), Sposób użycia: int liczba = std::rand() aby zapewnić generowanie różnych liczb podczas kolejnych wykonań programu, należy przed pierwszym losowaniem zainicjalizować generator liczbą która przy każdym uruchomieniu programu będzie inna - np. bieżącą wartością zegara komputera w tym celu dołączmy do programu bibliotekę ctime a następnie inicjalizujemy generator bieżącym czasem, tj. wartością liczbową zwróconą przez funkcję time: srand (time (NULL))

4 Przykład (Program generujący 10 liczb całkowitych) # include < iostream > # include < ctime > # include < cstdlib > using namespace std ; int main () { srand ( time ( NULL )); // jednokrotnie przed rozpoczeciem losowania! } for ( int i =0; i <10; i ++) cout << rand () << " "; return 0;

5 Losowanie liczb całkowitych z określonego przedziału Chcąc uzyskać wartości losowe z określonego przedziału, używamy tej samej funkcji rand, ale każdą z uzyskanych wartości sprowadzamy do wartości z żądanego przedziału. sposób sprowadzenia: obliczamy resztę z dzielenia wylosowanej liczby przez długość żądanego przedziału (inaczej: ilość wartości w tym przedziale), a następnie do wyniku dodajemy liczbę stanowiącą początek przedziału: int liczba = (std::rand() % długość przedziału) + początek przedziału

6 Przykład (Losowanie 10 liczb całkowitych z przedziału [1,20] ) # include < iostream > # include < cstdlib > # include < ctime > using namespace std ; int main () { int DP = 20, PP = 1; // dlugosc przedzialu = 20, poczatek przedzialu = 1 int liczba ; srand ( time ( NULL ) ); // jednokrotnie!!! for ( int i =1; i <=10; i ++) { liczba = ( rand () % DP) + PP; cout << liczba << endl ; } } return 0;

7 Losowanie liczb rzeczywistych dostępne biblioteki nie oferują funkcji generującej losowe wartości rzeczywiste losowe liczby rzeczywiste można uzyskać np. dzieląc losową liczbę całkowitą przez RAND MAX, dzieląc przez siebie dwie losowe liczby całkowite itp

8 Przykład (Losowanie liczb rzeczywistych ) # include < iostream > # include < cstdlib > # include < ctime > using namespace std ; int main () { double liczba ; srand ( time ( NULL ) ); for ( int i =1; i <=10; i ++) { liczba = ( rand () %10) + rand ()/ double ( RAND_MAX ); cout << liczba << endl ; } } return 0;

9 Tablice jednowymiarowe - zadania Zadanie 1 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub generujący zawartość takiej tablicy), a następnie wypisujący informację czy tablica zawiera dwa sąsiadujące z sobą elementy dodatnie.

10 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie:

11 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd,

12 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy

13 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy

14 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie

15 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie odpowiedzi w tablicy nie ma obok siebie dwóch liczb dodatnich możemy udzielić dopiero po sprawdzeniu całej tablicy, jeśli nie znaleźliśmy w niej odpowiedniej pary

16 algorytm sprawdzania czy w tablicy są obok siebie dwie liczby dodatnie: sprawdzamy pary sąsiednich elementów - pierwszy i drugi, drugi i trzeci itd, czyli i-ty i i+1-szy - czyli aby nie wyjść poza tablicę musimy zakończyć sprawdzanie na parze dla której i jest przedostatnim indeksem tablicy jeśli obie liczby w sprawdzanej parze są dodatnie, to znaczy że tablica zawiera to czego szukamy - możemy przerwać szukanie i udzielić odpowiedzi tak, w tablicy sąsiadują z sobą dwie liczby dodatnie odpowiedzi w tablicy nie ma obok siebie dwóch liczb dodatnich możemy udzielić dopiero po sprawdzeniu całej tablicy, jeśli nie znaleźliśmy w niej odpowiedniej pary czyli jest to algorytm z poglądem. Pogląd na to czy były liczby na początku musi być nie było pary (false) [bo taki pogląd ma nam pozostać jeśli nic się nie wydarzy, tzn. przeglądając tablicę nie zobaczymy pary liczb dodatnich], znalezienie odpowiedniej pary zmienia go na była para (true).

17 Przykład (Rozwiązanie zad. 1) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int dlugosc ; cout << " podaj dlugosc tablicy "; cin >> dlugosc ; int A [ dlugosc ]; cout << " podaj zawartosc tablicy : " << endl ; for ( int i =0; i< dl; i ++) { cout << " element " << i << ": "; cin >> A[i]; } cout << " Twoja tablica : "<< endl ; for ( int i =0; i< dlugosc ; i ++) cout << A[i] << " "; cout << endl ; bool czybylapara = false ; for ( int i=0; i<=dl -2; i++) if (A[i]>0 && A[i +1] > 0) { czybylapara = true ; break ; } if ( czybylapara == false ) cout << "w tablicz nie ma liczb dodatnich na sasiednich miejscach \n"; else cout << " tablica zawiera dwie liczby dodatnie na sasiednich miejscach \n"; } return 0;

18 Zadanie 2 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub generujący zawartość takiej tablicy, a następnie wypisujący wszystkie pary uporządkowane jakie można utworzyć z elementów tej tablicy

19 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna)

20 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2)

21 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach)

22 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary:

23 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze

24 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy

25 Mamy wypisać wszystkie pary uporządkowane (czyli para (A,B) i (B,A) to dwie różne pary - kolejność elementów jest istotna) np. dla tablicy z liczbami 1,2,3 będą to pary: (1,1), (1,2), (1,3) (2,1), (2,2), (2,3) (3,1), (3,2), (3,3) a tablicy z liczbami 1,2,2 będą to pary: (1,1), (1,2), (1,2) (2,1), (2,2), (2,2) (2,1), (2,2), (2,2) - również pary element sam z sobą są dopuszczalne (nie jest powiedziane że mają to być pary elementów tablicy stojących na różnych pozycjach) w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą w parze tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy... podobnie jak w zad.1 z wykładu 5 (pary szef - podwładny)

26 Przykład (Rozwiązanie zad.2) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; } srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; cout << " Pary uporzadkowane elementow tablicy : " << endl ; for ( int i = 0; i< length ; i ++) for ( int j = 0; j< length ; j ++) cout << A[i] << " " << A[j] << endl ; return 0;

27 Zadanie 3 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub losujący zawartość takiej tablicy), a następnie wypisujący wszystkie dwójki (pary nieuporządkowane) elementów tablicy przechowujących różne wartości

28 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna)

29 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone)

30 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2

31 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary:

32 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary

33 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary

34 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary... podobnie jak w zad.1 z wykładu 5 (pary równorzędne )

35 Mamy wypisać wszystkie pary nieuporządkowane ( (A,B) i (B,A) to to samo - kolejność elementów nie jest istotna) mają to być pary różnych wartości (a więc pary złożone z dwóch takich samych liczb nie są dozwolone) np. dla tablicy z liczbami 1,2,3 będą to pary: 1 i 2, 1 i 3, 2 i 3 a dla tablicy z liczbami 1,2,2 będzie to pary: 1 i 2, 1 i 2 w takim razie aby utworzyć wszystkie takie pary: wybieramy element tablicy który ma być pierwszą liczbą pary tworzymy wszystkie możliwe pary postaci: (wybrana wcześniej pierwsza liczba w parze, druga liczba w parze) - gdzie drugą liczbą w parze może być każdy element tablicy nie występujący dotąd w roli pierwszego elementu pary... podobnie jak w zad.1 z wykładu 5 (pary równorzędne ) z powyższych par wypisujemy tylko te, które są złożone z różnych liczb.

36 Przykład (Rozwiązanie zad.3) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; } srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; cout << " Roznowartosciowe pary nieuporzadkowane elementow tablicy : "<< endl ; for ( int i = 0; i< length ; i ++) for ( int j = i; j< length ; j ++) if (A[i]!= A[j]) cout << A[i] << " " << A[j] << endl ; return 0;

37 Zadanie 4 Napisać program pobierający od użytkownika tablicę liczb całkowitych o podanej przez niego długości (lub losujący zawartość takiej tablicy), a następnie wypisujący wszystkie wartości występujące w tablicy

38 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz

39 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy

40 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy

41 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana)

42 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją

43 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją i tak po kolei dla wszystkich elementów tablicy

44 mamy wypisać wszystkie wartości występujące w tablicy - czyli jeśli liczba występuje w tablicy w kilku miejscach, to jest wypisywana raz wyszukiwanie takich liczb: bierzemy element tablicy sprawdzamy, czy ta liczba znajduje się we wcześniejszej części tablicy jeśli była - nie wypisujemy (bo już była wypisana) jeśli jej nie było - wypisujemy ją i tak po kolei dla wszystkich elementów tablicy... przy czym sprawdzanie czy liczba była we wcześniejszej części tablicy to kolejny przykład algorytmu z poglądem

45 Przykład (Rozwiązanie zad.4) # include <iostream > # include <cstdlib > # include <ctime > using namespace std ; int main (){ int length ; cout << " podaj dlugosc tablicy "; cin >> length ; int A [ length ]; srand ( time ( NULL ) ); int DP = 20, PP = 1; for ( int i =0; i< length ; i ++) A[i] = ( rand () % DP) + PP; cout << " Twoja tablica : "<< endl ; for ( int i =0; i< length ; i ++) cout << A[i] << " "; cout << endl ; int wart_spr ; bool czybyla ; for ( int i = 0; i< length ; i ++) { wart_spr = A[i]; // spr czy wart_spr byla we wczesniejszej czesci tablicy czybyla = false ; // konieczny reset dla kazdej wartosci sprawdzanej!! for ( int j =0; j <=i -1; j ++) // przeszukiwanie wczesniejszej czesci if (A[j] == wart_spr ) { czybyla = true ; break ; } if ( czybyla == false ) cout << wart_spr << " "; } return 0; }

46 Tablice wielowymiarowe Tablice wielowymiarowe, podobnie jak jednowymiarowe, przechowują wartości tego samego typu. Przykłady: tabela temperatur w stolicach europejskich w kolejnych dniach tygodnia szachownica plansza do gry w okręty sudoku...

47 Tablice wielowymiarowe w C++ Tablice wielowymiarowe można uważać za tablice tablic. Przykładowe definicje: int szachownica [8][8]; zwyczajowo przyjmuje się że pierwszy (lewy) indeks oznacza wiersz, a drugi (prawy) - kolumnę, ale taka interpretacja nie jest obowiązkowe liczba wymiarów może być dowolna int przykladtablicy [2][4][2][100][5];

48 Tablice wielowymiarowe w C++ - cd do elementu tablicy wielowymiarowej odwołujemy się poprzez podanie nazwy zmiennej tablocowej i wartości indeksow dla wszystikich wymiarów (indeksowanie zaczyna się od zera, tak jak w tablicach jednowymiarowych): szachownica [1][0] = 1; ustawiamy pionej w kwadracie drugim poziomo i pierwszym pionowo elementy tablicy wielowymiarowej możemy przeglądać używając zagnieżdżonych pętli, po jednej dla każdego wymiaru: for (int i=0; i<8; i++) { for (int j=0; j<8; j++) cout << szachownica[i][j] << " "; cout << endl; }

49 Inicjalizacja tablic wielowymiarowych tablice dwuwymiarowe: w celu inicjalizacji tablicy dwuwymiarowej najprościej jest użyć zagnieżdżonych nawiasów klamrowych. Wewnętrzne nawiasy zawierają liczby reprezentujące zawartość wierszy: int tab[2][3] = { {1,2,3}, {4,5,6}}; (przy czym wewnętrzne nawiasy klamrowe można pominąć) dozwolone jest pominięcie wartości pierwszego indeksu inicjalizowanej tablicy: int tab[ ][3] = { {1,2,3}, {4,5,6}}; (pominięcie obu specyfikacji rozmiaru jest niedozwolone)

50 Inicjalizacja tablic wielowymiarowych - cd inicjalizacja tablic o większej liczbie wymiarów przebiega podobnie: int aa[2][3][4] = {{{1,1,1,1}, {2,2,2,2}, {3,3,3,3}}, {{4,4,4,4}, {5,5,5,5}, {6,6,6,6}} }; podobnie jak w tablicach dwuwymiarowych specyfikację pierwszego rozmiaru można pominąć

51 Tablice wielowymiarowe o rozmiarze określanym w czasie wykonania programu Tworzenie statycznych tablic wielowymiarowych o rozmiarze określanym w czasie wykonania progamu, tj. użycie konstrukcji postaci int N,M; cout << " podaj liczbe wierszy i kolumn tablicy : " ; cin >> N >> M; int tab [N] [M]; jest niezgodne ze standardem (podobnie jak w przypadku tablic jednowymiarowych), ale akceptowane przez część kompilatorów konstrukcja zgodna ze standardem to tworzenie tablic dynamicznych (z alokacją pamięci za pomocą operatora new i zwalnianiem pamięci za pomocą delete)

52 Przykład (Dwuwymiarowa tablica o rozmiarze podanym przez uzytkownika - wersja.1) # include <iostream > using namespace std ; int main () { int N, M; cout << " ile wierszy ma miec tablica? " ; cin >> N; cout << " ile kolumn ma miec tablica? "; cin >> M; int tab [N][M]; // niezgodne ze standardem for ( int i =0; i<n; i ++) for ( int j =0; j<m; j ++) tab [i][j] = i*j; } for ( int i =0; i<n; i ++) { for ( int j = 0; j<m; j ++) cout << tab [i][j] << " "; cout << endl ; } return 0;

53 Przykład (Dwuwymiarowa tablica o rozmiarze podanym przez uzytkownika - wersja.1) # include <iostream > using namespace std ; int main (){ int N, M; cout << " ile wierszy ma miec tablica? " ; cin >> N; cout << " ile kolumn ma miec tablica? "; cin >> M; int (** tab ); // zgodne ze standardem // alokacja pamieci tab = new int *[N]; for ( int i =0;i<N; i ++) tab [i] = new int [M]; // uzycie tablicy for ( int i =0; i<n; i ++) for ( int j =0; j<m; j ++) tab [i][j] = i*j; for ( int i =0; i<n; i ++) { for ( int j = 0; j<m; j ++) cout << tab [i][j] << " "; cout << endl ; } // zwolnienie pamieci for ( int i =0;i<N; i ++) delete [] tab [i]; delete [] * tab ; return 0; }

Wstęp do programowania

Wstęp do programowania wykład 6 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

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

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp

wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 4 : Napisy. Tablice dwuwymiarowe. Formaty

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Wstęp do programowania

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

Bardziej szczegółowo

Wstęp do Informatyki

Wstęp do Informatyki Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e

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

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne

Bardziej szczegółowo

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

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

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

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

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

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

Liczby całkowite i rzeczywiste

Liczby całkowite i rzeczywiste Wykład 4(20 marzec 2014r.) Liczby całkowite i rzeczywiste Paulina Rogowiecka Klaudia Kamińska Adrianna Znyk 1 Spis treści: Czynniki pierwsze metoda próbnych dzieleń Pierwszość liczby naturalnej algorytmy

Bardziej szczegółowo

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy 1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

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

Bardziej szczegółowo

Programowanie obiektowe W3

Programowanie obiektowe W3 Programowanie obiektowe W3 Przegląd typów strukturalnych w C++ : tablice statyczne i dynamiczne Dr hab. inż. Lucyna Leniowska, prof. UR Zakład Mechatroniki, Automatyki i Optoelektroniki Typy złożone: tablice

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 10 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Przesyłanie argumentów - cd Przesyłanie argumentów do funkcji - tablice wielowymiarowe Przekazywanie tablic wielowymiarowych

Bardziej szczegółowo

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

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 4. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 4 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Tablice Wskaźniki Adresy pamięci Operator adresu

Bardziej szczegółowo

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy

wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ

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

Wstęp do programowania

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

Bardziej szczegółowo

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok

Bardziej szczegółowo

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

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

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

DYNAMICZNE PRZYDZIELANIE PAMIECI

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

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 3 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Instrukcja wielokrotnego wyboru Instrukcja wielokrotnego wyboru switch umożliwia podejmowanie decyzji na podstawie wartości

Bardziej szczegółowo

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Programowanie Procedurale

Programowanie Procedurale Programowanie Procedurale Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 6 Bożena Woźna-Szcześniak (AJD) Programowanie Procedurale Wykład 6 1 / 27 Zbiór ctime zawiera deklarcję

Bardziej szczegółowo

3. Instrukcje warunkowe

3. Instrukcje warunkowe . Instrukcje warunkowe Przykłady.1. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo ujemna lub nieujemna, w zależności od tego czy dana liczba jest ujemna czy nie. 1 #include

Bardziej szczegółowo

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II Wykład Ⅴ O podstawowych operacjach na tablicach Mateusz Ziółkowski, MBiU II Czym są tablice? Tablica (ang. array) to zespół równorzędnych zmiennych, posiadających wspólną nazwę. Jego poszczególne elementy

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

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

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

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

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

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW

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

Bardziej szczegółowo

Programowanie w języku C++

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

Bardziej szczegółowo

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf(%d\n, RAND_MAX); return 0; } Liczby pseudolosowe Standardowa biblioteka języka C w pliku nagłówkowym posiada zadeklarowane dwie funkcje służące do generowania liczb pseudolosowych: rand i srand. Funkcja srand() jako parametr

Bardziej szczegółowo

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. 8. Wektory Przykłady 8.1. Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. Uwaga! Kod poniżej. To zadanie można rozwiązać przy użyciu wiedzy

Bardziej szczegółowo

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

Wykład I. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej Wykład I - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Zaliczenie przedmiotu Do zaliczenia przedmiotu niezbędne jest

Bardziej szczegółowo

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic: Tablice TEORIA Tablica to ciąg obiektów tego samego typu, które zajmują ciągły obszar w pamięci. Dzięki stosowaniu tablic, zamiast nazywania każdej z np. stu zmiennych osobno możemy zabudować tablicę 100-elementową,

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

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

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

Bardziej szczegółowo

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

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

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

Bardziej szczegółowo

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

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

Bardziej szczegółowo

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

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

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;

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

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

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

Bardziej szczegółowo

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Zajęcia nr 5 Algorytmy i wskaźniki. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 5 Algorytmy i wskaźniki dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Plan Zapis i odczyt z plików tekstowych O tablicach ciąg dalszy Referencje

Bardziej szczegółowo

C++ wprowadzanie zmiennych

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Mechanizm dziedziczenia

Mechanizm dziedziczenia Mechanizm dziedziczenia Programowanie obiektowe jako realizacja koncepcji ponownego wykorzystania kodu Jak przebiega proces dziedziczenia? Weryfikacja formalna poprawności dziedziczenia Realizacja dziedziczenia

Bardziej szczegółowo

r. Tablice podstawowe operacje na tablicach

r. Tablice podstawowe operacje na tablicach 27.03.2014r. Tablice podstawowe operacje na tablicach Tablica - definicja Tablica (ang. array) lub wektor (ang. vector) jest złożoną strukturą danych (ang. compound data structure) zbudowaną z ciągu elementów

Bardziej szczegółowo

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak: Tablice Tablice jednowymiarowe Jeżeli nasz zestaw danych składa się z wielu drobnych elementów tego samego rodzaju, jego najbardziej naturalnym ekwiwalentem w programowaniu będzie tablica. Tablica (ang.

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów

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

Ć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

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl

Bardziej szczegółowo

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 5. Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania Wykład: 5 Instrukcje sterujące c.d. Stałe, Typy zmiennych c.d. 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD programowania w C++ Instrukcje sterujące 2 dr Artur Bartoszewski

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

Programowanie Proceduralne

Programowanie Proceduralne Programowanie Proceduralne Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Bożena Woźna-Szcześniak (AJD) Programowanie Proceduralne Wykład 1 1 / 59 Cel wykładów z programowania

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

Kontrola przebiegu programu

Kontrola przebiegu programu Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem

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

Tablice jednowymiarowe

Tablice jednowymiarowe Tablice jednowymiarowe Gdy mamy do czynienia z zestawem zmiennych, to można z nich zrobić tablicę. Tablica jest ciągiem elementów tego samego typu, który zajmuje ciągły obszar pamięci. Korzyść z zastosowania

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

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne 1 Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Instrukcje sterujące

Instrukcje sterujące Podstawy programowania w C++ Bibliografia: Instrukcje sterujące Nauka programowania dla początkujących; A. Struzińska-Walczak / K. Walczak CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Opracował:

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

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

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2. Przeciążanie funkcji W języku C++ można stosować tę samą nazwę dla funkcji o różnej treści, pod warunkiem, że funkcje te mają różne parametry (różny jest typ lub liczba parametrów). Jest to przeciążanie

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 Instrukcje sterujące wykonaniem programu, przykłady wykorzystania

Bardziej szczegółowo

Podstawy programowania. Podstawy C# Tablice

Podstawy programowania. Podstawy C# Tablice Podstawy programowania Podstawy C# Tablice Tablica to indeksowany zbiór elementów Tablica jest typem referencyjnym (deklaracja tworzy tylko referencję, sama tablica musi być utworzona oddzielnie, najprościej

Bardziej szczegółowo

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski. - - uzupełnienie notatek: dr Jerzy Białkowski - - 1-2 - - - 1 #include 2 #include 3 # include 4 using namespace std ; 5 6 class Punkt { 7 8 private : 9 double

Bardziej szczegółowo

Programowanie proceduralne w języku C++ Pętle, tablice

Programowanie proceduralne w języku C++ Pętle, tablice Programowanie proceduralne w języku C++ Pętle, tablice Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki

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

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

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

Bardziej szczegółowo

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki Dariusz Brzeziński Politechnika Poznańska, Instytut Informatyki int getmax (int a, int b) { return (a > b? a : b); float getmax (float a, float b) { return (a > b? a : b); long getmax (long a, long b)

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Podstawy 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

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania WOJEWÓDZKI KONKURS INFORMATYCZNY PRZEPROWADZANY W DOTYCHCZASOWYCH GIMNAZJACH W ROKU SZK. 2018/2019 Etap wojewódzki Pytanie 1 O rozmiarze obrazów w grafice rastrowej decyduje całkowita liczba pikseli (wielkość

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

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce. Przygotować program tworzący tablicę dwuwymiarową zawierającą zestawy 10 2, 10 4, 10 6 liczb losowych zmiennoprzecinkowych. Korzystając z funkcji bibliotecznych uporządkować zawartość każdego (a) wiersza

Bardziej szczegółowo

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

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

Bardziej szczegółowo

1 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

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com Programowanie wykład dla I roku bioinformatyki semestr letni 2013 Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel. 58 523 2466 e-mail: danuta.makowiec at gmail.com Cel bloku

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 4

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

Bardziej szczegółowo

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE Bartosz Łakomy i Dariusz Dobiesz SPIS TREŚCI: Liczby parzyste i nieparzyste Liczby podzielne lub niepodzielne przez zadane podzielniki NWD algorytm

Bardziej szczegółowo

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak

(3 kwiecień 2014) Marika Pankowska Kamila Pietrzak (3 kwiecień 2014) Marika Pankowska Kamila Pietrzak Wyszukiwanie liniowe (ang. linear search), zwane również sekwencyjnym (ang. sequential search) polega na przeglądaniu kolejnych elementów zbioru Z. Jeśli

Bardziej szczegółowo