• Nie Znaleziono Wyników

Górniczo-Hutnicza w Krakowie

N/A
N/A
Protected

Academic year: 2021

Share "Górniczo-Hutnicza w Krakowie"

Copied!
23
0
0

Pełen tekst

(1)

Akademia

Górniczo-Hutnicza w Krakowie

(2)

Na ćwiczeniach laboratoryjnych korzystać będziemy z PyCharm profesjonalnego środowiska developerskiego (IDE)

ŚRODOWISKO PyCharm

(3)

Opcjonalnie bardzo dobrym środowiskiem developerskim z bogatym pakietem bibliotek jest również Spyder.

ŚRODOWISKO Spyder

print "Hello World!"

(4)

W następnym semestrze na przedmiocie poświęconym sztucznej inteligencji korzystać będziemy ze środowiska developerskim

w formie notatnika Jupyter Notebook:

ŚRODOWISKO Jupyter

(5)

Opcjonalnie na sztucznej inteligencji będziemy korzystali również ze środowiska developerskiego w formie notatnika Google Colab:

ŚRODOWISKO Google Colab

(6)

• Wykonanie wszystkich ćwiczeń i przedstawienie raportu/prezentacji

z ich wykonania w trakcie trwania semestru: jeden lub dwa slajdy na zadanie!

Zadania można realizować w dowolnej kolejności.

• Wybranie tematu projektu końcowego (bardziej rozwiniętego zadania) i jego realizacja przed końcem semestru oraz przedstawienie prezentacji z jego wykonania pod koniec semestru.

• W przypadku ćwiczeń oceniane będzie wykonanie i poprawne działanie,

czasami również efektywność (szybkość działania) i zastosowanie odpowiednich struktur danych.

• W przypadku projektu końcowego brana będzie pod uwagę dodatkowo:

obsługa, menu, bogactwo funkcji (funkcjonalność);

realizacja tematu/gry, grywalność, dodanie dodatkowych elementów;

sprawność opracowanych mechanizmów i algorytmów AI;

możliwość zapisywania najlepszych wyników (udostępnienie ich na stronie www);

wykorzystanie dźwięków, animacji;

estetyka i wygląd projektu;

twórcze rozszerzenie (wzbogacenie) zasad gry;

wykonana prezentacja końcowa.

Warunki zaliczenia ćwiczeń

(7)

POLE TRÓJKĄTA:

Napisz program obliczający pole trójkąta na podstawie:

A) długości boku i wysokości podanej przez użytkownika;

B) długości boków podanych przez użytkownika korzystając z wzoru Herona.

PODPOWIEDZI:

Zadanie 1

# dowolny tekst - komentarz Wypisywanie wartości na ekran:

print ("tekst")print (zmienna) Pobieranie wartości:

zmienna = input("Komunikat") Rzutowanie:

liczbaCalkowita = int(input("Komunikat")) Pierwiastkowanie:

import mathwynik = math.sqrt(liczba)

(8)

GRA – ZGADNIJ LICZBĘ:

Napisz prostą grę tekstową. Zadaniem gracza będzie odgadnięcie liczby z zakresu 0-9 wylosowanej przez komputer.

Schemat gry jest następujący:

Do realizacji tej prostej gry potrzebujemy skorzystać oraz pętli i instrukcji warunkowych:

PODPOWIEDZI:

Zadanie 2

Losowanie liczby:

import randomrandom.seed()losowana = random.randrange(10)

Instrukcja if:

if (warunek):

print ("Warunek spełniony") else:

print ("warunek nie spełniony")

# dalsze polecenia Pętla while:

while (warunek):

instrukcje

# dalsze polecenia

(9)

CHOINKA:

A) Napisz program, który pobiera od użytkownika

liczbę n >=2 i rysuje „połowę choinki”, gdzie ostatnia linia zawiera n znaków.

Przykład dla n=5:

B) Napisz program, który pobiera od użytkownika liczbę n >=1 i rysuje

„choinkę”, gdzie ostatnia linia zawiera 2n +1 znaków.

Przykład dla n=4:

Zadanie 3

X X X X X X X X X X

X X X X X X X X X X

X X X X X

X X X X

X X X X X X X X X

X X X X X X X X X X X X X X X X

X X X X X X X X X

(10)

UKŁAD WSPÓŁRZĘDNYCH:

Napisz program, który po podaniu współrzędnych wskaże, w której ćwiartce układu współrzędnych znajdzie się liczba. Uwzględnij również położenie na osi X, osi Y oraz środka układu współrzędnych.

Zadanie 4

1 2

4

3

(11)

BŁĘDY NUMERYCZNE:

Napisz program który sprawdzi poprawność numeryczną obliczeń:

A) Przetestuj czy wynik jest poprawny, np. zacznij od a=0.1, b=0.2, wynik =0.3;

B) Jaki jest oczekiwany wynik z matematycznego punktu widzenia, a jaki jest wynik obliczeń? Jaka jest przyczyna błędu? Udziel odpowiedzi.

Zadanie 5

a = float(input("a")) b = float(input("b"))

wynik = float(input("wynik")) if a + b == wynik:

print ("Sukces") else:

print ("Problem")

v1 = 1e9 v2 = 1e-6

for i in range(1000000):

v1 = v1 + v2

print ('wynik', v1 - 1e9)

(12)

LICZBY PIERWSZE:

Napisz program, który możliwie jak najefektywniej znajdzie wszystkie liczby pierwsze w zakresie od 1 do max, przyjmując max = 1000.

Zmierz czas obliczeń.

PODPOWIEDZI:

Przykład pomiaru czasu:

Zadanie 6

import time

start_time = time.time()

#tutaj wstaw obliczenia

print("--- %s seconds ---" % (time.time() - start_time))

(13)

ŚNIEG:

Napisz program wyświetlający animację tekstową.

W każdej iteracji w górnym wierszu, w losowej kolumnie pojawić ma się płatek śniegu „*”, który w każdym kolejnym kroku powinien przesuwać się o jeden wiersz niżej.

Dla uzyskania efektu „animacji”

przed wyświetleniem kolejnej iteracji należy czyścić ekran.

Proszę odświeżać obraz co ok. 0.2 s.

Rozmiar planszy powinien być

sparametryzowany dwoma liczbami całkowitymi - określającymi

szerokość i wysokość możliwą do

Zadanie 7

. . . . * . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . * . .

. . . . * . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . * . . . . . . .

. . . . . . . * . .

. . . . * . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

(14)

KALKULATOR I SYSTEMY LICZBOWE:

Napisz program:

A) zamieniający dowolną liczbę z systemu dwójkowego na dziesiętny i na odwrót;

B) zamieniający dowolną liczbę z systemu dziesiątkowego na dowolny inny z zakresu od 2-kowego do 16-kowego (do oznaczenia cyfr w systemach od 11-kowego

wykorzystaj litery: A, B, C, D, E i F) i na odwrót;

C) obliczający wynik dodawania, odejmowania, mnożenia, dzielenia i potęgowania dla zadanych dwóch liczb w dowolnych systemach liczbowych zadanych przez

użytkownika oraz podający wynik w zadanym systemie liczbowym […], np. 20012[3] + 536201[7] = … [10]

PODPOWIEDŹ:

Wykorzystaj funkcje:

https://docs.python.org/3/tutorial/controlflow.html?highlight=function#defining-functions

Zadanie 8

(15)

REKURENCJA:

Napisz program:

A) obliczający silnię w sposób rekurencyjny i iteracyjny (2 funkcje), a następnie porównaj czasy ich wykonania;

B) obliczający n-ty wyraz ciągu Fibonacciego w sposób rekurencyjny oraz iteracyjny, a następnie porównaj czasy wykonania.

C) wykorzystujący funkcję rekurencyjną, która rysuje trójkąt Pascala o zadanej wysokości.

Zadanie 9

(16)

SORTOWANIE:

A) Utwórz dwie listy liczb całkowitych zawierających 50 i 50000 elementów.

Zainicjalizuj listy losowymi liczbami z zakresu od 1 do 99.

B) Posortuj tablicę przy użyciu sortowania przez proste wybieranie.

C) Posortuj tablicę przy użyciu sortowania przez proste wstawianie.

D) Posortuj tablicę przy użyciu sortowania przez wstawianie połówkowe.

E) Posortuj tablicę przy użyciu sortowania szybkiego (quicksort).

F) Posortuj tablicę przy użyciu sortowania kopcowego (stogowego, heapsort).

G) Posortuj tablicę przy użyciu sortowania przez scalanie (mergesort).

H) Posortuj tablicę przy użyciu sortowania przez zliczanie (counting sort).

I) Posortuj tablicę przy użyciu sortowania kubełkowego (bucket sort).

J) Posortuj tablicę przy użyciu sortowania pozycyjnego (radix sort).

Każde z sortowań powinno być wykonane dla 50-elementowej tablicy liczb całkowitych, a wyniki kolejnych kroków wyświetlane na ekranie. Przeprowadź test wydajnościowy, mierząc czas

sortowania każdej z metod na takiej samej 50000-elementowej tablicy, wypisując wyniki zmierzonych czasów wykonania na ekranie, umożliwiając ich porównanie. Wskaż najszybszą!

PODPOWIEDŹ:

Animacje różnych sortowań: https://visualgo.net/bn/sorting

Zadanie 10

(17)

Ostatnim zadaniem jest zadanie projektowe.

Proszę wybrać jedno z zadań na kolejnym slajdzie lub wymyślić własne o podobnym stopniu trudności uzgadniając go z prowadzącym ćwiczenia.

Zgłoś temat wybranego zdania projektowego prowadzącemu przed upływem 2 miesięcy od rozpoczęcia semestru. Do tego czasu powinieneś też zrealizować wszystkie poprzednie zadania ćwiczeniowe.

Na ostatnich ćwiczeniach będą odbierana i oceniane wszystkie zadania.

Pamiętaj o przygotowaniu prezentacji końcowej, która powinna zawierać zrzuty z ekranu:

1. kodu źródłowego w Pythonie, 2. wyników działania programu

Zadanie Projektowe

(18)

1. Mastermind - odgadywanie zarówno przez gracza, jak i przez komputer (AI*).

2. Snake - przeszkody, przyspieszanie, przechodzenie przez krawędzie ścian, multiplayer drugi gracz lub AI*.

3. Game of Life - dodawanie predefiniowanych układów, możliwość definiowania innych światów (zasad).

4. Arkanoid - poziomy, bonusy.

5. Whac-A-Mole - różne poziomy trudności, zmienne plansze.

6. Pacman - zmienne plansze, AI* duszków, bonusy.

7. Nanowar - AI* przeciwników, poziomy, modyfikacja zasad gry.

8. Frogger - poziomy, multiplayer, AI*, modyfikacja zasad.

9. Space Invanders - poziomy, AI* przeciwników, bonusy.

10. Tetris - bonusy, dodatkowe klocki, poziomy.

11. Statki - człowiek z komputerem (AI*), człowiek z człowiekiem 12. Pinball/Flipper - poziomy, bonusy.

13. Własny temat (uzgodniony z prowadzącym ćwiczenia laboratoryjne o podobnej trudności jak wyżej wymienione).

* Przez AI mniema się nie rzeczywistą sztuczną inteligencję, lecz algorytmy pozwalające komputerowi grać z przeciwnikiem, korzystając z pewnych strategii, obliczeń itp.

Tematy Projektów Końcowych

(19)
(20)
(21)
(22)
(23)

Cytaty

Powiązane dokumenty

Dla idealnie sprężystych ciał naprężenia w nich wywoływane są jednoznacznymi funkcjami odkształceń.. Przy niewielkich odkształceniach własności

Problemu tego można uniknąć, dzieląc przedział całkowania na m podprzedziałów, w których przeprowadza się całkowanie kwadaraturami niższych rzędów a wyniki całkowania

Problemu tego można uniknąć, dzieląc przedział całkowania na m podprzedziałów, w których przeprowadza się całkowanie kwadaraturami niższych rzędów a wyniki całkowania

Sortowanie takiego pliku kart omawianą metodą polega na tym, że gracz stopniowo dokłada karty do uporządkowanej części kart (początkowo zawierającej jedną kartę)

Zaimplementuj funkcję insertionsort, która sortuje tablicę n-elementową wykorzystując algorytm sortowania przez wstawianie.. Zademonstruj działanie funkcji

Algorytm sortowania przez wstawianie poprawnie rozwiązuje problem sortowania w każdej liniowo uporządkowanej strukturze danych. Algorytm sortowania przez wstawianie jest, w

Algorytm sortowania przez wstawianie poprawnie rozwiązuje problem sortowania w każdej liniowo uporządkowanej strukturze danych.. Algorytm sortowania przez wstawianie jest, w

Jaka masę należy położyć w odległości 40 cm od punktu podparcia po drugiej stronie tego punktu, aby dźwignia była w równowadze. Jeśli potrafisz to na ocenę bardzo