Io-13-lab-wiki: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
Linia 9: Linia 9:
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować [[media:io-13-lab.zip|projekt]] z rozwiązaniami początkowymi.
Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować [[media:io-13-lab.zip|projekt]] z rozwiązaniami początkowymi.


==Zadanie 1==
==Zadanie==
W kolejnych krokach będzie rozwijany program realizujący proste obliczenia matematyczne. Należy każdy krok zapisywać w postaci osobnych projektów Eclipse.
W kolejnych krokach będzie rozwijany program-kalkulator realizujący proste obliczenia matematyczne. Należy każdy krok zapisywać w postaci osobnych projektów Eclipse.


===Punkt wyjściowy===
===Wersja początkowa===
Na początku kalkulator wykonuje 4 podstawowe operacje matematyczne: +, -, *, / na liczbach całkowitych
W wersji początkowej program wykonuje 4 podstawowe dwuargumentowe operacje matematyczne: +, -, *, / na liczbach całkowitych typu ''int''.
Kalkulator wczytuje polecenia ze strumienia wejściowego, po jednym w każdej linii. Polecenie ma postać:
Kalkulator wczytuje polecenia ze strumienia wejściowego, po jednym w każdej linii. Polecenie ma postać:


'''liczba operator liczba'''
'''liczba''' ''operator'' '''liczba'''


przy czym między liczbami a operatorem znajduje się zawsze przynajmniej jedna spacja.
przy czym między liczbami a operatorem znajduje się zawsze przynajmniej jedna spacja.
Linia 22: Linia 22:


Przykładowe programy, posiadające opisaną w tym punkcie funkcjonalność, znajdują się [[media:io-13-lab.zip|tutaj]]. Są to dwa niezależne rozwiązania:
Przykładowe programy, posiadające opisaną w tym punkcie funkcjonalność, znajdują się [[media:io-13-lab.zip|tutaj]]. Są to dwa niezależne rozwiązania:
* KalkulatorA, stosujące podejście strukturalne
* ''KalkulatorA'', stosujące podejście strukturalne, zbudowane wewnątrz ''main()'' w jednej klasie
* KalkulatorB, wykorzystujące mechanizmy obiektowe
* ''KalkulatorB'', wykorzystujące mechanizmy obiektowe w celu oddzielenia implementacji kalkulatora od operacji matematycznych
Zastanów się, którego z szablonów wolisz użyć. Jakie są kryteria wyboru?
Zastanów się, której z wersji wolisz użyć do dalszych prac. Jakie są kryteria wyboru?


===Krok 1===
===Krok 1===
Linia 30: Linia 30:
<span style="font-variant:small-caps">Treść zadania </span>
<span style="font-variant:small-caps">Treść zadania </span>
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Rozszerz kalkulator o wykonywanie operacji bitowych dwuargumentowych alternatywy (|) i koniunkcji (&). Zastąp liczby całkowite liczbami zmiennoprzecinkowymi
Rozszerz kalkulator o wykonywanie dwuargumentowych operacji bitowych: alternatywy (oznaczanej symbolem "||") i koniunkcji (oznaczanej symbolem "&&").  
</div>
</div>
</div>
</div>
Linia 38: Linia 38:
<span style="font-variant:small-caps">Treść zadania </span>
<span style="font-variant:small-caps">Treść zadania </span>
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Zastąp notację infiksową notacją RPN, w której argumenty odkładane są na stosie ulegającym redukcji. Np. zapis ''2 + 3'' będzie miał postać ''2 3 +''
Zastąp istniejącą notację infiksową notacją postfiksową RPN (ang. ''reverse polish notation''), w której argumenty odkładane są na stosie ulegającym redukcji w momencie wykonania działania.  
W ten sposób zapis dotychczasowy zapis ''2 + 3'' będzie miał postać ''2 3 +''. Na stosie odłożone zostaną argumenty ''2'' i ''3'', a wczytanie operatora + spowoduje wykonanie redukcji na stosie poprzez zdjęcie dwóch elementów, wykonanie dodawania i odłożenie na stosie wyniku operacji.
</div>
</div>
</div>
</div>
Linia 46: Linia 47:
<span style="font-variant:small-caps">Treść zadania </span>
<span style="font-variant:small-caps">Treść zadania </span>
<div class="mw-collapsible-content" style="display:none">
<div class="mw-collapsible-content" style="display:none">
Zaimplementuj operacje na ułamkach zwykłych, zapisywanych w postaci ''a/b'' (bez spacji).
Zaimplementuj w kalkulatorze operacje na ułamkach zwykłych, zapisywanych w postaci ''a/b'' (bez spacji).
Wynik obliczany powinien skracać ułamki oraz wyłączać części całe.
</div>
</div>
</div>
</div>

Wersja z 13:09, 5 wrz 2006

Ćwiczenie 13. Ewolucja oprogramowania

Informacje wstępne

Ćwiczenie jest realizowane w języku Java w środowisku Eclipse 3.2. Celem ćwiczenia jest zrealizowanie prostego programu rozwijanego w wielu przyrostach.

Instalacja

Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 oraz środowiska Eclipse w wersji 3.2 Po uruchomieniu środowiska i wyborze przestrzeni roboczej należy zaimportować projekt z rozwiązaniami początkowymi.

Zadanie

W kolejnych krokach będzie rozwijany program-kalkulator realizujący proste obliczenia matematyczne. Należy każdy krok zapisywać w postaci osobnych projektów Eclipse.

Wersja początkowa

W wersji początkowej program wykonuje 4 podstawowe dwuargumentowe operacje matematyczne: +, -, *, / na liczbach całkowitych typu int. Kalkulator wczytuje polecenia ze strumienia wejściowego, po jednym w każdej linii. Polecenie ma postać:

liczba operator liczba

przy czym między liczbami a operatorem znajduje się zawsze przynajmniej jedna spacja. Program w odpowiedzi wyświetla wyniki wykonania operacji.

Przykładowe programy, posiadające opisaną w tym punkcie funkcjonalność, znajdują się tutaj. Są to dwa niezależne rozwiązania:

  • KalkulatorA, stosujące podejście strukturalne, zbudowane wewnątrz main() w jednej klasie
  • KalkulatorB, wykorzystujące mechanizmy obiektowe w celu oddzielenia implementacji kalkulatora od operacji matematycznych

Zastanów się, której z wersji wolisz użyć do dalszych prac. Jakie są kryteria wyboru?

Krok 1

Treść zadania

Krok 2

Treść zadania

Krok 3

Treść zadania

Pytania do dyskusji

  • Na podstawie rozwoju programu oceń jakość kodu na kolejnych etapach. Co - Twoim zdaniem - jest najważniejszym elementem przyczyniającym się do jakości kodu programu w kolejnych iteracjach?
  • Czy wybór początkowego rozwiązania miał wpływ na jakość końcowej wersji?