PRM, ćwiczenie 9, Zadanie 3 PRM, ćwiczenie 9, Zadanie 3

Transkrypt

PRM, ćwiczenie 9, Zadanie 3 PRM, ćwiczenie 9, Zadanie 3
PRM, ćwiczenie 9, Zadanie 3
Należy napisać prosty kalkulator obsługujący następujące działania: dodawanie, odejmowanie, mnożenie i dzielenie na
liczbach zmiennoprzecinkowych. Użytkownik ma podać dwie liczby oraz symbol wykonywanej operacji, a program ma
zwrócić wynik tej operacji (to ma nie być parser wyrażeń! Symbol operacji podawany jest oddzielnie)
Przykład działania programu:
Wpisz pierwszą liczbę:
Wpisz drugą liczbę:
Wpisz symbol operacji:
Obliczony wynik operacji:
5
7
+
5 + 7 = 12
UWAGA!
Tym razem zadanie jest nieco inne niż zwykle. Sam problem programistyczny jest bardzo łatwy, natomiast głównym
elementem zadania jest odpowiedni podział kodu na moduły (pliki).
Przykładowy minimalny podział na moduły: main.c, gui.c, obliczanie.c
Oczywiście każdy plik z implementacją funkcji musi posiadać skojarzony z nim plik nagłówkowy z prototypami (*.h).
Należy także przygotować plik makefile (choćby o najprostszej budowie) który zapewni poprawną i kompletną
kompilację całego projektu po wydaniu w konsoli polecenia make .
PRM, ćwiczenie 9, Zadanie 3
Należy napisać prosty kalkulator obsługujący następujące działania: dodawanie, odejmowanie, mnożenie i dzielenie na
liczbach zmiennoprzecinkowych. Użytkownik ma podać dwie liczby oraz symbol wykonywanej operacji, a program ma
zwrócić wynik tej operacji (to ma nie być parser wyrażeń! Symbol operacji podawany jest oddzielnie)
Przykład działania programu:
Wpisz pierwszą liczbę:
Wpisz drugą liczbę:
Wpisz symbol operacji:
Obliczony wynik operacji:
5
7
+
5 + 7 = 12
UWAGA!
Tym razem zadanie jest nieco inne niż zwykle. Sam problem programistyczny jest bardzo łatwy, natomiast głównym
elementem zadania jest odpowiedni podział kodu na moduły (pliki).
Przykładowy minimalny podział na moduły: main.c, gui.c, obliczanie.c
Oczywiście każdy plik z implementacją funkcji musi posiadać skojarzony z nim plik nagłówkowy z prototypami (*.h).
Należy także przygotować plik makefile (choćby o najprostszej budowie) który zapewni poprawną i kompletną
kompilację całego projektu po wydaniu w konsoli polecenia make .
Wskazówki:
W module gui.c mają znaleźć się wszystkie funkcje, które realizują interakcję z użytkownikiem (czyli wszystkie
wywołania funkcji printf() , scanf() i podobnych), np. funkcja wczytująca od użytkownika komplet danych
niezbędnych do wykonania obliczeń oraz zwracająca te dane na zewnątrz w postaci np. struktury. Tutaj także należy
umieścić funkcję wyświetlającą wynik czy powitanie.
W module obliczanie.c powinna znaleźć się funkcja/e, która przyjmie wprowadzone wcześniej dane wejściowe,
dokona na nich stosownych obliczeń oraz zwróci wynik (ale nie wyświetli go!) .
W module main.c powinno znaleźć się wywołanie przywitania z użytkownikiem programu oraz tzw. pętla główna
zawierająca proste menu, wywołanie wczytywania danych (ale nie samo wczytywanie!), wywołanie obliczeń (ale nie
same obliczenia!) oraz wywołanie wyświetlenia wyniku.
Podział na moduły można zmodyfikować, ale należy starać się zachować rozdzielenie warstwy wizualizacji (interfejs
użytkownika) od logiki aplikacji.
Można bazować na kodzie z zadania 1B.
Wskazówki:
W module gui.c mają znaleźć się wszystkie funkcje, które realizują interakcję z użytkownikiem (czyli wszystkie
wywołania funkcji printf() , scanf() i podobnych), np. funkcja wczytująca od użytkownika komplet danych
niezbędnych do wykonania obliczeń oraz zwracająca te dane na zewnątrz w postaci np. struktury. Tutaj także należy
umieścić funkcję wyświetlającą wynik czy powitanie.
W module obliczanie.c powinna znaleźć się funkcja/e, która przyjmie wprowadzone wcześniej dane wejściowe,
dokona na nich stosownych obliczeń oraz zwróci wynik (ale nie wyświetli go!) .
W module main.c powinno znaleźć się wywołanie przywitania z użytkownikiem programu oraz tzw. pętla główna
zawierająca proste menu, wywołanie wczytywania danych (ale nie samo wczytywanie!), wywołanie obliczeń (ale nie
same obliczenia!) oraz wywołanie wyświetlenia wyniku.
Podział na moduły można zmodyfikować, ale należy starać się zachować rozdzielenie warstwy wizualizacji (interfejs
użytkownika) od logiki aplikacji.
Można bazować na kodzie z zadania 1B.

Podobne dokumenty