Podstawy
programowania obiektowego
Zajęcia 1
Pisanie prostych programów: zmienne, instrukcje przypisania, operatory, proste operacje wejścia/wyjścia.
Zadanie 1.1
Napisz program, który wyświetli na ekranie Twoje imię i nazwisko oraz datę urodzenia.
Przykład:
Jan Kowalski
30 stycznia 1978 roku.
Zadanie 1.2
Napisz program, który wczyta dwie liczby rzeczywiste i wyświetli na
ekranie ich sumę, różnicę oraz iloczyn z dokładnością do dwóch miejsc
po przecinku.
Zadanie 1.3
Napisz program, który wczyta wymiary prostokąta (liczby całkowite), a nastąpnie wyświetla jego pole i obwód.
Przykład:
Podaj wymiary prostokata: 10 12
Pole prostokata wynosi 120, a obwod 44.
Zadanie 1.4
Zadanie 1.5
Napisz program, który po podaniu odległości w centymetrach (liczba
całkowita) wypisze tą odległość w metrach, decymetrach i centymetrach.
Przykład:
Podaj liczbę centymetrów: 123
123 cm to 1 metr, 2 decymetry i 3 centymetry.
Zadania do samodzielnej ralizacji:
Zadanie 1.6
Napisz programktóry wczyta wymiary trapezu (liczby całkowite), a nastąpnie wyświetla jego pole i obwód.
Przykład:
Podaj wymiary trapezu:
Podstawy trapezu: 10 12
Wysokosc trapezu: 10
Pole trapezu wynosi 110
Zadanie 1.7
Napisz program, który po podaniu odległości w calach (liczba
całkowita) wypisze tą odległość w metrach, decymetrach, centymetrach i milimetrach.
Przykład:
Podaj liczbę cali: 15
15 cali to 3 dm, 8 cm i 1 mm.
Zajęcia 2
Instrukcje wyboru i instrukcje iteracyjne.
Zadanie 2.1
Napisz program, który wczyta od użytkownika długość promienia i w zależności od wyboru użytkownika obliczy obwód lub pole koła.
Przykład:
Podaj długość promienia: 10
Wybierz:
1 - aby obliczyć pole koła
2 - aby obliczyć obwód koła
Twój wybór: 1
Pole koła o promieniu 10 wynosi: 314.
Zadanie 2.2
Napisz program, który dokona zamiany podanej przez użytkownika liczby
naturalnej od 1 do 7 na odpowiadający jej dzień tygodnia. Obsłuż
sytuację, gdy użytkownik poda wartość spoza zakresu.
Przykład 1:
Podaj numer dnia tygodnia: 3
Trzeci dzień tygodnia to środa.
Przykład 2:
Podaj numer dnia tygodnia: 9
Podałeś wartość spoza zakresu. Tydzień ma siedem dni!
Zadanie 2.3
Napisz program wczytujący
kolejne liczby z klawiatury i kończący się gdy ich suma przekroczy
wartość 100. Na zakończenie program powinien wypisać ile liczb wczytał
i ile wyniosła ich suma.
Zadanie 2.4
Napisz program wczytujący
kolejne liczby z klawiatury i kończący się gdy ich suma przekroczy
wartość 100. Na zakończenie program powinien wypisać ile liczb wczytał
i ile wyniosła ich suma.
Napisz program, który b¦dzie wczytywaa od u»ytkownika liczby dopóki ich
suma będzie mniejsza od liczby X (Xpodaje użytkownik na początku
działania programu). Suma nie powinna uwzględniać ostatniej z
podawanych liczb (tej, która spowodowaaa przekroczenie wartości sumy
równej X ). Na zakończenie program powinien wypisać ile liczb wczytał i
ile wyniosła ich suma.
Zadanie 2.5
Napisz program wyznaczający wartość minimalną z n liczb. Wartość n
podawana jest przez użytkownika na początku działania programu.
Przykład:
Podaj ile liczb chcesz wczytać: 5
Podaj kolejne 5 liczb: 9
3
7
2
3
Wartość minimalna z tych liczb to: 2.
Zadanie 2.6
Napisz program wyświetlający na ekranie kolejne 20 liczb parzystych począwszy od zadanej przez użytkownika wartości.
Zadanie 2.7
Napisz program rysujący na ekranie za pomocą podanego znaku trójkąt równoramienny o zadanej przez użytkownika długości podstawy.
Przykład 1:
Podaj znak: *
Podaj długość podstawy: 7
*
***
*****
*******
Przykład 2:
Podaj znak: *
Podaj długość podstawy: 8
**
****
******
********
Zadania do samodzielnej realizacji:
Zadanie 2.8
Napisz program, który wczytuje liczbę n (gdzie 0 <= n =< 10000), i wypisuje jej słowny odpowiednik.
Przykład:
22 słownie dwadzieścia dwa,
0 słownie zero,
5463 słownie pięć tysięcy czterysta sześdziesiąt trzy.
Zadanie 2.9
Napisz program, który sprawdzi w której ćwiartce układu współrzędnych leży punkt o współrzędnych podanych przez użytkownika.
Zadanie 2.10
Napisz program, który w zależności od wyboru użytkownika będzie dokonywał przeliczania z centymetrów na cale i odwrotnie.
Zadanie 2.11
Napisz program wczytujący liczby z klawiatury, z jednoczesnym
zadawaniem pytania "czy koniec wprowadzania t/n ?". Na zakończenie
program powinien wyświetlić wartość: średnią, maksymalną, minimalną z
podanych liczb.
Zadanie 2.12
Napisz program, który wczyta od użytkownika n liczb i zliczy ile z nich
jest parzystych. Wartość n podawana jest przez użytkownika na początku
działania programu.
Zadanie 2.12
Napisz program, który wczytuje liczby całkowite podane przez
użytkownika aż do momentu podania wartości 0, a następnie wyświetla ich
iloczyn. Zero kończące podawanie danych nie jest uwzględniane w wyniku.
Zajęcia 3
Typy tablicowe i algorytmy operujące na tablicach.
Zadanie 3.1
Napisz program, który:
- wczyta dane z klawiatury do 10-elementowej tablicy liczb rzeczywistych,
- wypisze ją na ekran,
- sprawdzi czy te liczby są uporządkowane rosnąco.
Zadanie 3.2
Napisz program, który po wygenerowaniu 10-cio elementowej tablicy
liczb losowych wypisze ją na ekran a następnie wyznaczy i wyświetli na ekranie:
- znaleźć minimum i maksimum,
- sumę i średnią arytmetyczną,
- sumę wszystkich liczb większych od
k (k wczytaj od użytkownika),
- element średni (najbliższy
średniej arytmetycznej).
Każda wyliczona wartość powinna być wypisana w nowej linii i
poprzedzona informacją co oznacza i jakie liczby brały udział w jej
wyznaczaniu.
Zadanie 3.3
Napisz
program, który po wylosowaniu liczb z przedziału zadanego przez
użytkownika do N-elementowej (N wczytaj od użytkownika) tablicy liczb
całkowitych obliczy i wyświetli na ekranie:
- średnią arytmetyczną elementów parzystych,
- średnią arytmetyczną elementów o indeksach nieparzystych,
- średnią arytmetyczną elementów nieujemnych.
Każda wyliczona wartość powinna być wypisana w nowej linii i
poprzedzona informacją co oznacza i jakie liczby brały udział w jej
wyznaczaniu.
Zadanie 3.4
Napisz program, który obliczy sume dwóch wektorów N-elementowych. N wczytaj od użytkownika.
Zadanie do samodzielnej realizacji:
Zadanie 3.5
Napisz program, który
a) wczyta dane z klawiatury do 10-elementowej tablicy liczb całkowitych,
b) wypisze ją na ekran,
c) sprawdzi czy elementy tablicy mają symetryczną zawartość (tzn.
pierwszy element równy ostatniemu, drugi równy przedostatniemu, itd. )
Zadanie 3.6
Napisz program, który obliczy iloczy skalarny dwóch wektorów N-elementowych. N wczytaj od użytkownika.
Zadanie 3.7
Napisz program, który utworzy losowo N-elementową tablicę liczb całkowitych a następnie obliczy i wyświetli na ekranie:
- iloczyn elementów o indeksach podzielnych przez 3,
- sumę elementów o indeksach podzielnych przez k (k wczytaj od użytkownika),
- element minimalny spośród elementów tablicy, które są większe od a (a wczytaj od użytkownika),
- element maksymalny spośród elementów tablicy, które mieszczą się w przedziale <b, c> (b i c wczytaj od użytkownika).
Każda wyliczona wartość powinna być wypisana w nowej linii i
poprzedzona informacją co oznacza i jakie liczby brały udział w jej
wyznaczaniu.
Zadanie 3.8
Napisz program, który utworzy N-elementową tablicę licz całkowitych,
wypisze ją na ekran a nastepnie przesunie jej zawartość cyklicznie o
jedną pozycję "w dół", tzn. pierwszy element na miejsce ostatniego,
drugi na miejsce pierwszego, trzeci na miejsce drugiego, itd.
Zajęcia 4
Wyodrębnianie kodu w postaci funkcji. Wywoływanie funkcji. Parametry funkcji.
Działanie każdej funkcji sprawdź w programie.
Zadanie 4.1
Napisz funkcje static void MojeDane(), która wypisze na ekranie Twoje imię i nazwisko oraz datę urodzenia.
Zadanie 4.2
Napisz funkcję static void Nieparzyste(int a, int b), która wypisze na ekran wszystkie liczby nieparzyste z zadanego przedziału. Parametrami funkcji są krańce przedziału.
Zadanie 4.3
Napisz funkcję static int silnia(int n), która obliczy wartość silni dla zadanej liczby n.
Zadanie 4.4
Napisz funkcję static int Min(int[] tab), zwracającą wartość elementu minimalnego w jednowymiarowej tablicy liczb całkowitych.
Zadanie 4.5
Napisz funkcję static int Suma(int[] tab), zwracającą sumę elementów jednowymiarowej tablicy liczb całkowitych.
Zadanie 4.6
Napisz cztery warianty funkcji static int sum(int min, int max), która dla liczb z zakresu <min, max>:
- sumuje wszystkie liczby,
- sumuje tylko liczby parzyste,
- sumuje tylko liczby podzielne przez 3,
- sumuje tylko takie, że suma aktualnej liczby i jej następnika jest podzielna przez 3.
Zadanie do samodzielnej realizacji:
Zadanie 4.7
Napisz funkcję int ktoraCwiartka(float x, float y),
która dla punktu o współrzędnych (x, y) zwróci wartość 1..4,
identyfikującą jedną z ćwiartek układu współrzędnych wewnątrz której
leży ten punkt. W przypadku, gdy punkt leży na którejkolwiek osi
współrzędnych funkcja powinna zwrócić 0.
Zadanie 4.8
Napisz funkcję static int IleElementow(int[] tab, int x), zwracającą liczbę elementów jednowymiarowej tablicy liczb całkowitych, których suma jest większa od x.
Zadanie 4.9
Napisz funkcję static int sumaAr(int n, int r), która wyznaczy sumę n elementów ciągu arytmetycznego o wyrazie początkowym równym 1 i zadanej różnicy r.
Zadanie 4.10
Napisz trzy warianty funkcji static void zamiana(ref int a, ref int b), która zamieni wartości dwóch liczb wskazanych przez a i b:
- bezwarunkowo,
- tylko wtedy, gdy przynajmniej jeden z argumentów jest ujemny,
- tylko wtedy, gdy jedna jest parzysta a druga nieparzysta.
Zajęcia 5
Podejście obiektowe kontra strukturalne do tworzenie programu. Pisanie prostych klas.
Zadanie 5.1
Stwórz klasę Punkt, która zawiera współrzędne punktu oraz jego kolor.
Punkt możemy utworzyć podając jego obydwie współrzędne i kolor, podając
tylko kolor (wtedy współrzędne mają losowe wartości) lub nie podając
żadnych informacji (wszystkie pola klasy otrzymają losowe wartości).
Nastepnie napisz program, który:
- wczyta od użytkownika dane o 5 punktach,
- wypisze je na ekranie w postaci: Punkt o współrzędnych (x, y),
- wyznaczy liczbe punktów podanego przez użytkownika koloru,
- wypisze na ekran te punkty, których odległość od początku układu
współrzędnych jest mniejsza niż podana przez użytkownika wartość,
- przesunie te punkty o pewien podany przez użytkownika wektor,
- ponownie wypisze na ekran te punkty, których odległość od początku układu
współrzędnych jest mniejsza niż podana przez użytkownika wartość.
Zadanie do samodzielnej realizacji
Zadanie 5.2
Stwórz klasę Kolo, która zawiera współrzędne środka, długość promienia oraz kolor wypełnienia.
Koło możemy utworzyć podając współrzędne środka, długość promienia i kolor, podając
tylko kolor (wtedy współrzędne i promień mają losowe wartości) lub nie podając
żadnych informacji (wszystkie pola klasy otrzymają losowe wartości).
Następnie napisz program, który:
- wczyta od użytkownika dane o 5 kołach
- wypisze je na ekranie w postaci: Koło o środku w punkcie (x, y), długości promienia r i kolorze k,
- wyznaczy po ile kół jest każdego koloru,
- znajdzie koła o minimalnym i maksymalnym polu,
- wypisze na ekran informację, w której ćwiartce układu współrzędnych leży każde koło, w postaci: Koło o środku w punkcie (x, y), długości promienia r i kolorze k leży w X ćwiartce,
- przesunie środek każdego koła o pewien podany przez użytkownika wektor,
- ponownie wypisze na ekran informację, w której ćwiartce układu współrzędnych leży każde koło, w postaci: Koło o środku w punkcie (x, y), długości promienia r i kolorze k leży w X ćwiartce,
- przeskaluje długość promienia każdego koła o pewnie podany przez użytkownika czynnik,
- ponownie wypisze na ekran informację, w której ćwiartce układu współrzędnych leży każde koło, w postaci: Koło o środku w punkcie (x, y), długości promienia r i kolorze k leży w X ćwiartce.
Zajęcia 6
Wykorzystanie kompozycji w celu tworzenia nowych klas.
Zajęcia 7
Wykorzystanie dziedziczenia w celu tworzenia nowych klas.
Przykładowe zadania na zaliczenie