Zainteresowania zawodowe: programowanie (C++, Java, C#, F#), technologie webowe, szeroko rozumiana algorytmika, metematyka klasyczna.
1 dzisiaj
46 w obecnym miesiącu
130 w bieżącym roku
4455 od powstania strony
Celem tych zajęć jest zapoznanie studentów z podstawowymi zagadnieniami algorytmicznymi oraz metodami ich skutecznego rozwiązywania za pomocą programów pisanych w języku C# i F# w środowisku programistycznym Mono Develop pod Linuxem albo Visual Studio na platformie .Net pod Windowsem.
Na wykładzie prezentowanych będzie wiele różnorodych problemów obliczeniowych oraz skutecznych i efektywnych metod ich rozwiązywania. Omawiane będą podstawowe techniki konstuowania algorytmów i analizy ich złożoności obliczeniowej. Szczególny nacisk będzie położony na sposób w jaki dane są przechowywane w pamięci komputera, gdyż od organizacji danych bardzo często zależy czas działania programu rozwiązującego określone zadanie.
W ramach konwersatorium będzie omawiany język programowania C# na poziomie programowania strukturalnego z elementami obiektowości oraz podstawowe elementy z biblioteki standardowej. Krótkie i proste przykłady powinny wspomóc naukę programowania w tym języku.
16 listopada 2018 r: proste sortowanie, wyszukiwanie binarne
4 stycznia 2019 r: automaty skończone, języki formalne i gramatyki
f(n) mikrosekund | czas t | ||||
sekunda | minuta | godzina | dzień | miesiąc | |
log(n) | |||||
√n | |||||
n | |||||
n2 | |||||
2n |
let
if
let rec
match with
Zadady zaliczenia laboratorium.
Zapoznanie ze środowiskiem programistycznym Mono Develop.
Zadanie 1 (pokazowe).
Napisz program, który obliczy kwadrat zadanej liczby rzeczywistej x.
Zadanie 2.
Napisz program, który obliczy pierwiastek zadanej dodatniej liczby rzeczywistej x.
Zadanie 1 (pokazowe).
Napisz program, który rozwiąże równanie liniowe z jedną niewiadomą ax+b = 0.
Zadanie 2.
Napisz program, który wyznaczy wartości liczb a i b, jeśli znana jest suma a+b i różnica a-b.
Zadanie 3.
Napisz program, który wyznaczy liczbę miejsc zerowych równania kwadratowego ax2+bx+c = 0.
Zadanie 1 (pokazowe).
Napisz program, który obliczy wartość bezwzględną zadanej liczby rzeczywistej x. Obliczenie Abs(x) zrealizuj za pomocą funkcji.
Zadanie 2.
Napisz program, który wyznaczy znak zadanej liczby rzeczywistej x. Obliczenie Sgn(x) zrealizuj za pomocą funkcji.
Zadanie 3.
Napisz program, który sprawdzi czy podany rok r jest przestępny. Sprawdzenie przestępności Przestępny(r) zrealizuj za pomocą funkcji.
Zadanie 1 (pokazowe).
Napisz program, który obliczy silnię n! dla zadanej liczby naturalnej n. Obliczenie n! zrealizuj za pomocą funkcji rekurencyjnej.
Zadanie 2a.
Napisz program, który obliczy n-ty wyraz ciągu Fibonacciego Fn dla zadanej liczby naturalnej n. Obliczenie Fn zrealizuj za pomocą funkcji rekurencyjnej.
Zadanie 2b.
Napisz program, który obliczy n-ty wyraz ciągu Lucasa Ln dla zadanej liczby naturalnej n. Obliczenie Ln zrealizuj za pomocą funkcji rekurencyjnej.
Zadanie 3.
Napisz program, który obliczy współczynnik dwumianowy (nk) dla zadanych wartości naturalnych 0 ≤ k ≤ n. Obliczenie (nk) zrealizuj za pomocą funkcji rekurencyjnej.
Zadanie 4.
Napisz program, który wyznaczy największy wspólny dzielnik NWD(a, b) dla zadanych wartości naturalnych a i b. Obliczenie NWD(a, b) zrealizuj za pomocą funkcji rekurencyjnej, implementującej algorytm Euklidesa.
Zadanie 1 (pokazowe).
Napisz program, który utworzy n-elementową tablicę liczb całkowitych, a następnie wygeneruje i wpisze do niej losowe wartości ze zbioru {2, ..., 5}. Liczbę n podaj poprzez standardowe wejście. Program ma wypisać wszystkie wylosowane i wpisane do tablicy wartości. Na koniec napisz i uruchom funkcję, która policzy średnią arytmetyczną liczb w tablicy.
Zadanie 2.
Napisz program, który utworzy n-elementową tablicę liczb całkowitych, a następnie wczyta do niej dane ze standardowego wejścia. Program ma wypisać wszystkie wczytane do tablicy liczby od końca.
Zadanie 3.
Napisz program, który utworzy n-elementową tablicę liczb rzeczywistych, a następnie wygeneruje i wpisze do niej losowe wartości ze zakresu [0, 100). Liczbę n podaj poprzez standardowe wejście. Program ma wypisać minimalną i maksymalną wartość wpisaną do tablicy. Do wyznaczenia wartości minimalnej i maksymalnej zdefiniuj odpowiednie funkcje.
Zadanie 4 (domowe).
Napisz program, który wczyta linię tekstu ze standardowego wejścia. Następnie z przeczytanej linii przekopiuj do tablicy znaków tylko litery i cyfry (powinieneś najpierw policzyć ile ich jest w tekście). Na koniec napisz i uruchom funkcję, która sprawdzi czy napis ten zawierał palindrom.
Zadanie 1 (pokazowe).
Napisz program, który posortuje bąbelkowo tablicę liczb. Program ma w trakcie sortowania prezentować stan tablicy (po każdym przesiewaniu).
Dane do programu wczytaj z klawiatury.
Zadanie 2a.
Zaimplementuj algorytm sortowania bąbelkowego ze sprawdzaniem liczby wykonanych zamian po każdym przesiewaniu. Jeżli liczba zamian wynosiła 0, to algorytm można przerwać.
Dane do programu wczytaj z klawiatury.
Zadanie 2b.
Zaimplementuj algorytm sortowania bąbelkowego ze sprawdzaniem miejsca ostatniej zamiany. Za każdym razem granicę przesiewania ustaw przed ostatnio zamienionym elementem.
Dane do programu wygeneruj za pomocą generatora liczb pseudolosowych.
Zadanie 3.
Zaimplementuj algorytm wyszukiwania binarnego, tak aby wyliczał ile jest wartości mniejszej od podanej w posortowanym ciągu. Program ma najpierw posortować dane a potem odpowiadać ile jest wartości mnieszych od zadanej przez użytkownika. Proces podawania liczby i jej wyszukiwania w posortowanym ciągu możesz zapętlić w nieskończoność.
Dane do programu wygeneruj za pomocą generatora liczb pseudolosowych.
Zrób zadania z listy 1 (autor: P.Schmidt).
Zrób zadania z listy 2 (autor: P.Schmidt).
Zrób zadania z listy 3 (autor: P.Schmidt).
Zrób zadania z listy 4 (autor: P.Schmidt).
Zrób zadania z listy 5 (autor: P.Schmidt).