120 likes | 254 Views
Podstawy Programowania Złożona składnia języka C++. Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ. Definicja tablicy. Tablica (z ang. array ) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu.
E N D
Podstawy Programowania Złożona składnia języka C++ Łódź, 3 października 2013 r. Katedra Analizy Nieliniowej, WMiI UŁ
Definicja tablicy Tablica (z ang. array) jest zmienną złożoną, która składa się z ciągu elementów tego samego typu. W pamięci komputera tablica zajmuje spójny obszar, a jej elementy są ułożone kolejno jeden obok drugiego. Elementy tablicy nazywamy komórkami. Komórki w tablicy są ponumerowane. Numer komórki nazywamy indeksem tablicy. W języku C++ wszystkie indeksy komórek tablic rozpoczynają się od zera. Odwołując się do komórek spoza zakresu tablice możesz liczyć na to, że otrzymasz śmieci!! Deklaracja tablicy: TypElementównazwaTablicy[liczbaKomórekTablicy]; Np. inttab[5] // deklaracja 7 elementowej tablicy elementów typu int char tablica[9] // deklaracja 9 elementowej tablicy pojedynczych znaków typu char Inicjalizacja elementów tablicy: inttab[5] = {2,3,4,-11,3}; lub tab[0]=2; tab[1]=3; tab[2]=4; tab[3]=-11; tab[4]=3; char tablica[15]= "niezapominajka"; lub char tablica[14]= {'n','i','e','z','a','p','o','m','i','n','a','j','k','a'};
Zadanie 1 • Napisz program w C++, który zrealizuje następujace zadania: • Wczytaj dowolną liczbę całkowitą n>0. • Wczytaj następnie n liczb całkowitych (zapamiętaj je w formie tablicy tabint[n]). • Wyświetl elementy tablicy po kolei, tj. według indeksów: 0,1,…,n-1. • Wyświetl elementy tablicy po kolei od końca, tj. według indeksów: n-1,n-2,…,0. • Wyświetl sumę elementów tablicy tab. • Wyświetl iloczyn elementów tablicy tab. • Wyświetl ilość liczb parzystych i nieparzystych występujących w tablicy tab. • Wyświetl największy element z tablicy tab oraz jego pozycję. • Wyświetl najmniejszy element z tablicy tab oraz jego pozycję. • Posortuj tablicę tab rosnąco. • Posortuj tablicę tab malejąco.
Zadanie 2 • Napisz program w C++, który zrealizuje nastepujace zadanie: • Wczytaj swoje imię, nazwisko oraz wiek z klawiatury jako jeden ciąg znaków. Możesz to zrobić tak: • Zadeklaruj najpierw tablicę 100 elementową zmiennych char: • char dane[100]; • Następnie ciąg znaków z klawiatury do tej tablicy możesz wczytać za pomocą konstrukcji: • cin.getline(dane,100); • Rzeczywistą ilość znaków w tablicy możesz odczytać w następujący sposób: • intdlugosc = (int)strlen(dane); • Napisz teraz tak dalszą część programu aby na przykładowo wczytany ciąg: • Robert Kowalczyk 35 • program reagował w następujący sposób: • Witaj chłopaku Robert. Widzę, że masz 35 lat i na nazwisko Kowalczyk.
Funkcja w C++ - definicja Ogólna postać funkcji w C++: typZwracanynazwaFunkcji(listaParametrówWejściowychFunkcji) { ciało funkcji } Funkcja nie zwracająca wartości (procedura): voidnazwaFunkcji(listaParametrówWejściowychFunkcji) { ciało funkcji } Funkcja zwracająca wartość: typZwracanynazwaFunkcji(listaParametrówWejściowychFunkcji) { ciało funkcji return wyrazenie; //wyrazenie musi być typu typZwracany }
Funkcje - przykłady Przykład 1: voidpiszLiczbe(int a) { cout << „Wartosc liczby wynosi: „ << a; } intmain() { int n; cout << ’’Podaj liczbe do wczytania: ’’; cin >> n; piszLiczbe(n); return 0; } Przykład 2: void suma(int a, int b) { return a+b; } intmain() { inta,b; cout << ’’Podaj dwie liczby a i b: ’’; cin >> a; cin >> b; cout << ’’Suma liczb wynosi ’’ << suma(a,b); return 0; }
Funkcje - ćwiczenia Zadanie 1 Napisz program z funkcjami: intpoleProstokata(int bok1, int bok2); i intobwodProstokata(int bok1, int bok2); a następnie dwukrotnie wczytaj po dwie pary liczb całkowitych a i b (długości boków prostokąta) i używając funkcji poleProstokata i obwodProstokata oblicz i wyprowadź na ekran odpowiednie wyniki. Zadanie 2 Popraw funkcje z Zadania 1 tak, aby zwracały wartość -1 o ile długości boków przesłane do są liczbami ujemnymi. Zadanie 3 Przerób funkcje z Zadania 1 na: voidpoleProstokata(int bok1, int bok2); i voidobwodProstokata(int bok1, int bok2); tak aby realizowały problem zasygnalizowany w Zadaniu 2.
Funkcje – iteracja a rekurencja Rozwiązanie obliczania silni z liczby n z użyciem rekurencji (czyli funkcji wywołującej samą siebie) i bez rekurencji: Przykład 1 (iteracja) long long silnia(int n) { long long wynik=1; for (int i=1; i<=n; i++) wynik=wynik*i; return wynik; } Przykład 2 (rekurencja) long longsilnia(int n) { if (n==0) return 1; return n*silnia(n-1); }
Funkcje – iteracja a rekurencja - zadania Zadanie 1 Rozwiąż problem obliczania sumy n początkowych wyrazów w ciągu arytmetycznym. Zadanie 2 Rozwiąż problem obliczania sumy n początkowych wyrazów w ciągu geometrycznym. Zadanie 3 Rozwiąż problem obliczania wartości wielomianu n-tego stopnia w punkcie – wykorzystaj schemat Horner’a.
Zapis do pliku tekstowego Prosty program pokazujący sposób zapisu do pliku tekstowego: #include <iostream> #include <fstream> usingnamespacestd; intmain () { ofstreammyfile ("example.txt"); if (myfile.is_open()) { myfile << "Thisis a line.\n"; myfile << "Thisisanotherline.\n"; myfile.close(); } else cout << "Unable to open file"; system("pause"); return 0; }
Odczyt z pliku tekstowego #include<iostream> #include <fstream> #include <string> usingnamespacestd; intmain () { stringline; ifstreammyfile ("example.txt"); if (myfile.is_open()) { while (! myfile.eof() ) { getline (myfile,line); cout << line << endl; } myfile.close(); } else cout << "Unable to open file"; system("pause"); return 0; }
Zadanie lekcyjne do dokończenia w domu Napisz dwa programy w C++: czytanie.cpp i pisanie.cpp. W programie pisanie.cpp wczytujesz w pętli nieskończonej z klawiatury pary liczb całkowitych (a,b) jako stringi: 3 76 45 89 -45 78 …….. i w takiej postaci zapisujesz je do pliku tekstowego plik1.txt. Program kończy działanie jeśli wpiszesz z klawiatury napis: ’’koniec’’. W programie czytanie.txt wczytujesz zawartość pliku tekstowego linia po linii, każdą linię parsujesz (odseparowujesz od siebie dwie liczby), z odczytanych liczb wybierasz większą i wypisujesz ją na ekran. Program kończy działanie po osiągnięciu końca pliku tekstowego.