Ćwiczenie 3 - Robert Arsoba
Transkrypt
Ćwiczenie 3 - Robert Arsoba
Podstawy programowania dr inż. Robert Arsoba Ćwiczenie 3 Instrukcje warunkowe Cel ćwiczenia Celem ćwiczenia jest praktyczne zapoznanie się z zastosowaniem instrukcji warunkowych oraz wykształcenie umiejętności ich wykorzystania w programach z rozgałęzieniami tworzonych w języku C. Zakres ćwiczenia obejmuje: instrukcję warunkowa prostą (if), instrukcję warunkową złożoną (if-else) i instrukcję wyboru (switch). Przygotowanie się do ćwiczenia • • • Zapoznać się z wykładem dotyczącym instrukcji warunkowych. • Zwrócić uwagę na składnię instrukcji if, if-else i switch. • Przeanalizować opis i przykłady użycia instrukcji zamieszczone w materiałach do wykładu. • Powtórzyć zasady tworzenia wyrażeń logicznych pełniących rolę warunków sprawdzanych instrukcjami if i if-else oraz wyrażeń arytmetycznych, których wartość sprawdzana jest instrukcją switch. • Powtórzyć zasady wykorzystania operatorów relacji i operatorów logicznych służących do tworzenia wyrażeń logicznych. Zapoznać się z przykładowym programem zamieszczonym w opisie ćwiczenia (program rozwiązujący równanie kwadratowe). • Przeanalizować kod źródłowy programu. • Skompilować i uruchomić program, przetestować jego działanie. Zrealizować samodzielnie zadania ćwiczeniowe. • Opracować dla poszczególnych zadań algorytmy w postaci schematów blokowych. • Na podstawie algorytmów utworzyć kod źródłowy programów. Zadania do wykonania 1. Zmodyfikować i rozbudować kod źródłowy przykładowego programu rozwiązującego równanie kwadratowe w taki sposób, aby program uwzględniał wszystkie możliwe przypadki wynikające z wprowadzonych przez użytkownika wartości współczynników a, b, c równania. Uwzględnić następujące przypadki: • równanie kwadratowe o pierwiastkach rzeczywistych (jak w przykładzie), • równanie kwadratowe o pierwiastkach zespolonych (delta < 0, należy obliczyć i wyświetlić na ekranie pierwiastki zespolone), • równanie liniowe (a = 0, należy obliczyć i wyświetlić rozwiązanie), • równanie sprzeczne (należy wyświetlić komunikat ”brak rozwiązań”), • tożsamość (0 = 0, należy wyświetlić komunikat ”toŜsamość”). Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 1 Podstawy programowania dr inż. Robert Arsoba 2. Napisać program rozwiązujący układ dwóch równań liniowych z dwoma niewiadomymi metodą wyznaczników Cramera. ax + by = e cx + dy = f Uwzględnić trzy przypadki: • układ oznaczony (obliczyć i wyświetlić jedno rozwiązanie), • układ nieoznaczony (wyświetlić komunikat ”nieskończenie wiele rozwiązań”), • układ sprzeczny (wyświetlić komunikat ”brak rozwiązań”). 3. Napisać program, który wczytuje z klawiatury liczbę punktów w postaci wartości całkowitej z przedziału od 0 do 10, a następnie wyświetla na ekranie napis, będący słowną oceną odpowiadającą podanej liczbie punktów. Przyjąć następujące oceny: mierna (0÷1 pkt.), niedostateczna (2÷3 pkt.), dostateczna (4÷5 pkt.), dobra (6÷7 pkt.), bardzo dobra (8÷9 pkt.), celująca (10 pkt.). Program napisać w dwóch wersjach: w pierwszej wykorzystać instrukcję wyboru switch, w drugiej ciąg zagnieżdżonych instrukcji warunkowych if-else. 4. Napisać program wyświetlający na ekranie proste menu umożliwiające wybór figury geometrycznej. Po wybraniu figury z menu, program powinien zadać pytanie o parametry opisujące wybraną figurę geometryczną, a następnie na ich podstawie obliczyć i wyświetlić na ekranie pole powierzchni danej figury. Do obsługi menu użyć instrukcji wyboru switch. Przykład działania programu: Pola powierzchni figur geometrycznych: 1 – prostokąt 2 – koło 3 – trójkąt 4 – trapez 5 – koniec programu Wybierz figurę: 2 Podaj promień koła: 1 Pole koła o promieniu 1 wynosi 3.14 5. Dane jest równanie y = ax+b opisujące prostą. Napisać program wczytujący z klawiatury współczynniki a i b równania prostej i określający, przez które ćwiartki układu współrzędnych kartezjańskich przebiega dana prosta. Wymagana zawartość sprawozdania z ćwiczenia 1. Notatki ze schematami blokowymi algorytmów do zadań. 2. Pliki z kodem źródłowym utworzonych programów. Zalecane źródła wiedzy 1. B. Kernighan, D. Ritchie: „Język ANSI C”, WNT, Warszawa 2001. 2. I.N. Bronsztejn, K.A. Siemiendiajew: „Matematyka. Poradnik encyklopedyczny”, PWN, Warszawa 2000. Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 2 Podstawy programowania dr inż. Robert Arsoba Przykładowy program /* * Rozwiazywanie rownania kwadratowego * Robert Arsoba * 1.12.2009 * Wersja 1.0 */ #include <math.h> #include <stdio.h> #include <stdlib.h> /* funkcja sqrt */ /* funkcje printf, scanf */ /* funkcja system */ float a, b, c; float delta; float x1, x2; /* wspolczynniki rownania */ /* wyroznik rownania */ /* pierwiastki rzeczywiste */ int main() { /* wyczyszczenie ekranu */ system("cls"); printf("Program rozwiazuje rownanie kwadratowe\n"); printf(" postaci: ax^2 + bx + c = 0\n\n"); printf("Podaj wartosci wspolczynnikow:\n"); printf("a = "); /* wyswietlenie napisu */ scanf("%f", &a); /* odczyt z klawiatury */ if (a == 0) /* sprawdzenie, czy rownanie jest kwadratowe */ { printf("Rownanie nie jest kwadratowe!\n"); system("pause"); return -1; /* wyjscie z programu */ } printf("b = "); scanf("%f", &b); printf("c = "); scanf("%f", &c); delta = b*b-4*a*c; /* obliczenie wyroznika */ printf("Rozwiazanie: "); if (delta >= 0) /* sprawdzenie delty */ { x1 = (-b+sqrt(delta))/(2*a); /* obliczenie pierwiastkow */ x2 = (-b-sqrt(delta))/(2*a); printf("x1 = %.1f, x2 = %.1f\n\n", x1, x2); /* na ekran */ } else printf("brak pierwiastkow rzeczywistych\n\n"); system("pause"); /* zatrzymanie programu */ return 0; /* wyjscie z programu */ } Materiały przygotowano w ramach projektu „Inżynier pilnie poszukiwany” Strona 3