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,
Materiał - Typy zmiennych - Instrukcje warunkowe - Pętle - Tablice statyczne - Wskaźniki - Tablice dynamiczne - Referencje - Funkcje
Instrukcje warunkowe while (warunek) { // blok instrukcji; } Obliczana jest wartość warunku, jeśli warunek wynosi 0 to blok instrukcji nie jest wykonywany. Jeśli warunek jest różny od 0 to blok instrukcji jest wykonywany dopóki warunek ma wartość niezerową;
Instrukcje warunkowe do { // blok instrukcji } while (warunek); Najpierw wykonywany jest blok instrukcji, a dopiero potem sprawdzany jest warunek. Jeśli warunek jest prawdziwy to wykonywany jest ponownie blok instrukcji.
Instrukcje warunkowe for (instr_ini; wyraz_warunk; instr_krok) { //instrukcja1 } instr_ini instrukcja wykonywana w czasie pierwszego wykonywania pętli wyraz_warunk wyrażenie obliczane w czasie każdej iteracji zmiennych (gdy jest równe 0 to pętla kończy swoje działanie) instr_krok instrukcja wykonywana na zakończenie każdego obiegu pętli
Tablice statyczne
Tablice statyczne tablica statyczna jednowymiarowa: typ_danych nazwa_tablicy[ilosc_elementów]; tablica statyczna dwuwymiarowa: typ_danych nazwa_tablicy[l_wierszy][l_kolumn]; Rozmiar tablicy musi być wartością stałą, znaną na poziomie kompilacji. Do tablic możemy przypisywać elementy w momencie jej inicjalizacji. Do elementów tablicy możemy odwoływać się przy pomocy operatora [].
Tablice statyczne Odwoływanie się do elementów tablicy: int tab[3] = { 1, 2, 3 }; Wartości: tab[0] = 1; tab[1] = 2; tab[2] = 3; Jeśli umiemy się odwołać do elementu, możemy wywołać na nim: cin>>element; cout<<element;
Tablice statyczne (C++ 11, ) #include <array> Tablica statyczna jednowymiarowa: std::array<typ, rozmiar> nazwa_tablicy; Tablica wielowymiarowa: std::array<std::array<typ, rozmiar>, rozmiar> arr; http://en.cppreference.com/w/cpp/container/array
Tablice statyczne (C++ 11, ) Biblioteka array umożliwia stosowanie kontenera o znanym rozmiarze dowolnego typu Pozwala na wykorzystanie elementów wbudowanych Możliwe jest wykorzystanie pętli for w formie for each Brak odpowiednika tablicy dynamicznej (czyt: dynarray) Wymuszone przejście na vector
Funkcje
Funkcje::Deklaracja, definicja użycie Deklaracja funkcji: typ_zwracany nazwa_funkcji( argumenty ); Definicja funkcji: typ_zwracany nazwa_funkcji( argumenty ) { ciało funkcji }; Przekazywanie argumentów do funkcji jest opcjonalne. Możliwe jest również przekazywanie kilku argumentów jednocześnie. By to zrobić należy rozdzielić jest przecinkami. Przykład: int funkcja(int arg1, int arg2); Funkcja jest to część programu, która możemy wywołać w kodzie programu poprzez podanie jej nazwy w programie oraz poprzez (opcjonalne) przekazanie argumentów do funkcji. Uwaga! Możliwa jest jednoczesna deklaracja z definicja funkcji, ale musi się ona odbyć przed użyciem funkcji w kodzie
Funkcje::Przeładowanie Może istnieć zdefiniowanych wiele funkcji o tej samej nazwie z różną liczbą argumentów jednak ich deklaracja ma być jednoznaczna!
Zadania
Zadania: 1. Napisz program, w którym zaalokowana będzie tablica 100 elementowa typu int. I. Uzupełnij tablicę wartościami losowymi z przedziału podanego przez użytkownika II. Znajdź i wyświetl największy element tablicy III. Znajdź i wyświetl najmniejszy element tablicy IV. Oblicz i wyświetl sumę elementów V. Oblicz i wyświetl średnią arytmetyczną elementów tablicy VI. *) wykonaj zadanie z wykorzystaniem biblioteki <array> VII. **) Zmodyfikuj program by użytkownik mógł podać rozmiar tablicy 2. Do podpunktów z zadania pierwszego zaimplementuj funkcje, które wykonują poszczególne operacje, a użytkownik ma możliwość wykonania wybranego zadania.
Zadania: 3. Napisz program, który pozwala na wczytanie dwóch zmiennych z klawiatury oraz wykona na nich proste operacje arytmetyczne przy pomocy funkcji: dodawanie, odejmowanie, mnożenie, dzielenie, modulo Każda operacja ma być zawarta w osobnej funkcji oraz zostać wywołana wewnątrz instrukcji warunkowej switch. Funkcje mają być typu double. Uwzględnij różnice typów zmiennych (dzielenie, modulo) oraz warunek dzielenia przez 0.
Zadania: 4. Napisz program, w którym zaimplementowana będzie funkcja umożliwiająca liczenie sumy cyfr składowych w podanej przez użytkownika liczbie. Suma ma być zwrócona do funkcji main() oraz wyświetlona na ekranie. 5. Napisz program, który przy pomocy funkcji umożliwi wypisywanie wszystkich liczb z zakresu podanego przez użytkownika, których suma cyfr jest równa podanej liczbie z klawiatury. Dla liczby 27: > 74772, > 55665, > 45990
Zadania: 6. Napisz program który wyświetli wszystkie dodatnie dzielniki liczby podanej przez użytkownika, w przypadku braku dzielników (poza 1 i samą sobą) na ekranie pojawia się komunikat, że jest to liczba pierwsza. 7. Wykorzystując tablicę 2D [3][3] napisz prostą implementację gry Kółko i Krzyżyk 8. Korzystając z metody MonteCarlo oblicz wartość liczby PI na podstawie stosunku pola kwadratu i wpisanego w niego okręgu. Program umożliwia wczytanie długości promienia okręgu: wykonaj obliczenia dla 10, 20, 100 iteracji (strzałów), wyświetl uzyskaną wartość i ilość iteracji jeżeli uzyskana dokładność będzie do 4 miejsc po przecinku
Zadania dodatkowe 1. Napisz funkcję która weryfikuje czy ciąg liczb podany przez użytkownika jest poprawnym numerem PESEL. Suma kontrolna do weryfikacji numeru: const int SUMA[] = {1, 3, 7, 9, 1, 3, 7, 9, 3, 1} Sumujemy kolejne iloczyny numeru PESEL i SUMY. Jeśli suma jest podzielna przez 10 to PESEL jest prawdopodobnie poprawny
Zadania dodatkowe 2. Napisz funkcję, która weryfikuje czy numer PESEL podany przez użytkownika należy do mężczyzny czy kobiety. Przedostatnia cyfra numeru PESEL określa płeć. Parzysta oznacza kobietę, nieparzysta- mężczyznę.
Zadania dodatkowe 3. Zweryfikuj dwa numery PESEL: 98031225417, 01222612840. Określ płeć właścicieli tych numerów oraz wyświetl informacje, który z nich należy do starszej, a który do młodszej osoby. Jeśli osoba urodziła się w latach 2000+ do numeru miesiąca dodawane jest 20. Wyświetl daty urodzin w formacie: DD-MM-RRRR
Zadania dodatkowe 4. Jakiej cyfry brakuje w numerze PESEL 0321061505[?]
Prezentacja udostępniona na licencji Creative Commons: Uznanie autorstwa, Na tych samych warunkach 3.0. Pewne prawa zastrzeżone na rzecz autorów. Zezwala się na dowolne wykorzystywanie treści pod warunkiem wskazania autorów jako właścicieli praw do prezentacji oraz zachowania niniejszej informacji licencyjnej tak długo, jak tylko na utwory zależne będzie udzielana taka sama licencja. Tekst licencji dostępny jest na stronie: http://creativecommons.org/licenses/by-sa/3.0/deed.pl