3. Instrukcje warunkowe

Podobne dokumenty
7. Pętle for. Przykłady

4. Funkcje. Przykłady

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

1. Wypisywanie danych

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne

C++ w przykładach. Mariusz Różycki Cezary Obczyński

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.

Warunki logiczne instrukcja if

Podstawy Programowania Podstawowa składnia języka C++

1 Podstawy c++ w pigułce.

8. Wektory. Przykłady Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana.

Programowanie - wykład 4

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst.

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

5. Rekurencja. Przykłady

Wstęp do Programowania, laboratorium 02

Podstawy języka C++ Maciej Trzebiński. Praktyki studenckie na LHC IFJ PAN. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. M. Trzebiński C++ 1/16

Programowanie komputerowe. Zajęcia 1

Struktura pliku projektu Console Application

6. Pętle while. Przykłady

C++ wprowadzanie zmiennych

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Instrukcje sterujące

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

1 Podstawy c++ w pigułce.

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Wyrażenie warunkowe operator selekcji Instrukcja switch

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; }

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Laboratorium 3. Instrukcje wyboru

Część 4 życie programu

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++

Pytania sprawdzające wiedzę z programowania C++

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi.

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje.

Podstawowe typy zmiennych

Wstęp do programowania

Wstęp do programowania

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Wstęp do informatyki- wykład 6

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

do instrukcja while (wyrażenie);

I - Microsoft Visual Studio C++

Wstęp do informatyki- wykład 7

if (wyrażenie ) instrukcja

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; }

Wstęp do programowania

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

Operatory w C++ Operatory arytmetyczne. Operatory relacyjne (porównania) Operatory logiczne. + dodawanie - odejmowanie * mnożenie / dzielenie % modulo

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe:

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda.

VII Olimpiada Matematyczna Gimnazjalistów

Programowanie - instrukcje sterujące

Podstawy Informatyki. Metalurgia, I rok. Wykład 6 Krótki kurs C++

Schematy blokowe. Algorytmy Marek Pudełko

Wstęp do programowania

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Odczyt danych z klawiatury Operatory w Javie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Wstęp do programowania

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; }

Algorytmika i programowanie. dr inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie

Proste programy w C++ zadania

Podstawy programowania C. dr. Krystyna Łapin

Wstęp do programowania

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Języki i paradygmaty programowania

Bukiety matematyczne dla gimnazjum

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy:

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami

Rekurencja (rekursja)

Programowanie strukturalne i obiektowe. Funkcje

Zadeklarowanie tablicy przypomina analogiczną operację dla zwykłych (skalarnych) zmiennych. Może zatem wyglądać na przykład tak:

Podstawy i języki programowania

Indukcja matematyczna

Operatory cd. Relacyjne: ==!= < > <= >= bool b; int i =10, j =20; dzielenie całkowitych wynik jest całkowity! Łączenie tekstu: + string s = "Ala ma ";

Wyjątki (exceptions)

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Warunek wielokrotnego wyboru switch... case

Internetowe Ko³o M a t e m a t yc z n e

if (warunek) instrukcja1; if (warunek) instrukcja1; else instrukcja2; a > b - a większe od b if (warunek) instrukcja1; a <= b - a mniejsze lub równe b

dr inż. Jarosław Forenc

WYMAGANIA NA POSZCZEGÓLNE OCENY Z MATEMATYKI DLA KL. 5

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)

void Pobierz(Student &a); void Wypisz(Student a); void Ustaw_zaliczenia(Student t[],int r); void Wypisz_najlepszych(Student t[],int r, float prog);

Cw.12 JAVAScript w dokumentach HTML

Pytanie 1. Pytanie 2. Pytanie 3 WOJEWÓDZKI KONKURS INFORMATYCZNY. Treść pytania

ZADANIA ZAMKNIETE W zadaniach 1-25 wybierz i zaznacz na karcie odpowiedzi poprawna

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Wymagania edukacyjne z matematyki klasa II technikum

Wstęp do programowania. Wykład 1

Transkrypt:

. Instrukcje warunkowe Przykłady.1. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo ujemna lub nieujemna, w zależności od tego czy dana liczba jest ujemna czy nie. 1 #include <iostream> 2 using namespace std; 4 int main() { 5 cout << "Podaj liczbe: "; 7 int n; 8 cin >> n; 9 10 if (n >= 0) { 11 cout << "nie"; 12 } 1 cout << "ujemna"; 14 15 return 0; 1 } W zadaniu tym zachodzi potrzeba wykonania pewnego fragmentu kodu tylko jeżeli pewien warunek jest spełniony. W tym wypadku musimy wypisać najpierw słowo nie, jeżeli dana liczba jest większa lub równa 0. Możemy do tego użyć wyrażenia warunkowego if, jak w liniach 10-12. Wyrażenie to składa się z trzech części: najpierw słowo kluczowe if, następnie warunek w nawiasach okrągłych, a następnie, w nawiasach klamrowych, kod który ma być wykonany jeżeli warunek jest prawdziwy. Najprostsze warunki możemy tworzyć używając operatorów porównania, takich jak < (mniejsze), > (większe), == (równe)!= (różne), <= (mniejsze lub równe) i >= (większe lub równe). Ich znaczenie jest dokładnie takie samo jak odpowiadających im znaków porównania w matematyce. 1

Uwaga! Nie należy mylić operatora przypisania (=) z operatorem równości (==). Pierwszy z nich służy do zmiany wartości zmiennej, a drugi do porównania dwóch wartości. Użycie operatora przypisania tam, gdzie powinien być użyty operator porównania nie spowoduje błędu kompilatora (program się uruchomi), ale może prowadzić do nieoczekiwanych wyników. Między klamrami znajduje się tylko jedno polecenie: wypisania na ekran słowa nie, które powinno pojawić się na ekranie, jeżeli dana liczba jest większa lub równa 0. Uwaga! Zwróć uwagę na wcięcie o dodatkowy poziom kodu znajdującego się między klamrami wyrażenia warunkowego. Nie jest ono niezbędne do działania programu, ale zdecydowanie ułatwia późniejsze czytanie kodu. Warto wyrobić sobie nawyk prawidłowego formatowania kodu już na samym początku nauki. Linia 1, znajdująca się już poza klamrami bloku warunkowego, zostanie wykonana zawsze, niezależnie od wartości danej przez użytkownika liczby..2. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran jej wartość bezwzględną. 1 #include <iostream> 2 using namespace std; 4 int main() { 5 cout << "Podaj liczbe: "; 7 int n; 8 cin >> n; 9 10 cout << "Jej wartosc bezwzgledna wynosi "; 11 if (n > 0) { 12 cout << n << endl; 1 } else { 14 cout << -n << endl; 15 } 1 17 return 0; 18 } 17

W tym zadaniu potrzebujemy wykonać jeden fragment kodu, jeżeli warunek jest spełniony, a inny fragment, jeżeli ten sam warunek nie jest spełniony. Moglibyśmy wykorzystać do tego dwa następujące po sobie wyrażenia warunkowe, z przeciwnymi sobie warunkami. Z tym podejściem wiążą się jednak problemy. Po pierwsze, musimy samodzielnie napisać warunek przeciwny do danego, co jest bardzo częstym źródłem pomyłek. Po drugie, warunek może zależeć od wartości jakiejś zmiennej, której wartość zmienia się wewnątrz kodu tego warunku. Przez to może się okazać, że oba warunki będą spełnione, mimo że są przeciwne. Po trzecie, otrzymujemy w ten sposób duplikację kodu: jeżeli będziemy chcieli zmienić warunek, musimy zmienić go w dwóch miejscach. Dlatego dużo lepszym rozwiązaniem jest rozszerzenie wyrażenia warunkowego o dodatkowy blok else, co oznacza w przeciwnym wypadku, jak w liniach 1-15. Tym razem nie potrzebujemy określać drugiego warunku, potrzebny jest tylko dodatkowy fragment kodu między kolejną parą nawiasów klamrowych. Warunek dany w bloku warunkowym (linia 11) jest sprawdzany tylko raz, a następnie w zależności od tego czy jest on prawdziwy wykonywany jest kod znajdujący się zaraz za warunkiem lub kod znajdujący się po słowie else... Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo tak, jeżeli jest ona parzysta, nie w przeciwnym wypadku. 1 #include<iostream> 2 using namespace std; 4 int main() { 5 cout << "Podaj liczbe: "; 7 int n; 8 cin >> n; 9 10 if (n % 2 == 0) { 11 cout << "tak" << endl; 12 } else { 1 cout << "nie" << endl; 14 } 15 1 return 0; 17 } Przykładem mniej oczywistego rodzaju warunku, który możemy chcieć sprawdzić jest podzielność jednej liczby przez drugą. Szczególnym przypadkiem takiego warunku jest sprawdzanie parzystości liczby (podzielność przez 2). Nie jest jednak to tak oczywiste jak proste porównania między liczbami. 18

C++ nie posiada wbudowanego operatora który pozwoli nam sprawdzić podzielność. Możemy jednak w tym celu wykorzystać operator reszty z dzielenia (%), poznany już w pierwszym rozdziale. Z definicji, a dzieli b, jeżeli reszta z dzielenia b przez a wynosi 0. Stąd matematyczny zapis a b (a dzieli b) możemy zapisać w C++ w postaci warunku b % a == 0. W tym zadaniu chcemy w szczególności sprawdzić, czy dana przez użytkownika liczba jest parzysta. W tym celu sprawdzamy czy reszta jej dzielenia przez 2 wynosi 0 czy też nie (linia 10). Uwaga! Operator reszty z dzielenia działa tylko i wyłącznie dla liczb całkowitych. O ile w innych zadaniach zmiana typu int na double mogła spowodować co najwyżej problemy z precyzją otrzymanych wyników, tak tutaj program po prostu się nie uruchomi, jeżeli użyjemy typu double..4. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo tak, jeżeli jest ona dodatnia, ale mniejsza od 10, nie w przeciwnym wypadku. 1 #include <iostream> 2 using namespace std; 4 int main() { 5 cout << "Podaj liczbe: "; 7 int n; 8 cin >> n; 9 10 if (n > 0 && n < 10) { 11 cout << "tak" << endl; 12 } else { 1 cout << "nie" << endl; 14 } 15 1 return 0; 17 } Warunki możemy rozszerzać używając spójników logicznych. W C++ mamy do dyspozycji takie łączniki: && (i), (lub) oraz! (nie). Mają one takie samo znaczenie jak odpowiadające im łączniki w logice. Możemy je także zastąpić słowami, odpowiednio, and, or i not. 19

Uwaga! Nie można łączyć warunków przy użyciu przecinków (np. a < b, b < c) spowoduje to błąd kompilacji. Nie są dopuszczalne także podwójne nierówności (jak a < b < c) te niestety nie sprawią, że program się nie uruchomi, ale mogą prowadzić do nieoczekiwanych wyników. Kolejność wykonywania działań wygląda następująco: najpierw negacja, następnie koniunkcja, a na końcu alternatywa. Negacja ma również pierwszeństwo przed operatorami porównania, ale operatory porównania mają pierwszeństwo przed koniunkcją i alternatywą..5. Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran słowo dodatnia, ujemna lub zero, w zależności od tego czy dana liczba jest dodatnia, ujemna lub jest zerem. 1 int main() { 2 cout << "Podaj liczbe: "; 4 int n; 5 cin >> n; 7 if (n > 0) { 8 cout << "dodatnia" << endl; 9 } else if (n == 0) { 10 cout << "zero" << endl; 11 } else { 12 cout << "ujemna" << endl; 1 } 14 15 return 0; 1 } Może zajść potrzeba sprawdzenia lub więcej wykluczających się wzajemnie warunków. Możemy do tego wykorzystać konstrukcję else if, co oznacza w przeciwnym wypadku, jeżeli. W ten sposób, jeżeli pierwszy warunek jest spełniony, pozostałe warunki nie są sprawdzane, a jeżeli nie jest, to sprawdzany jest drugi warunek itd. Z reguły na końcu takiego łańcucha warunków umieszczamy blok else, który zostanie wykonany jeżeli żaden z warunków nie jest spełniony. Tutaj mamy wykluczające się warunki: n > 0, n == 0 i n < 0. Najpierw sprawdzamy pierwszy z nich używając konstrukcji if, tak jak dotychczas. Następnie po kodzie związanym z tym warunkiem umieszczamy słowa else if i kolejny warunek, z kolejnym fragmentem kodu. Po tym fragmencie umieszczamy słowo else i kolejny fragment kodu, tym razem już bez warunku. 20

Linia 8 zostanie wykonana jeżeli pierwszy warunek będzie spełniony. Jeżeli nie, to sprawdzony zostanie drugi warunek w linii 9. Jeżeli ten będzie spełniony, wykona się linia 10, a jeżeli nie, to linia 12. Uwaga! Kolejne warunki nie muszą się wzajemnie wykluczać. Pamiętać należy jedynie o tym, że wykonany zostanie zawsze fragment kodu związany tylko z jednym warunkiem: pierwszym warunkiem który będzie spełniony. Kolejne warunki są ignorowane. Pytania.1. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 1; 2 if (n > 0) { n = n-2; 4 } 5 if (n < 0) { n = n+2; 7 } 8 cout << n << endl;.2. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 0; 2 if (n = 5) { cout << "piec" << endl; 4 } 5 cout << n << endl;.. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 0; // inna wartosc niz w poprzednim pytaniu! 2 if (n > 0) { n = n-; // inna wartosc niz w poprzednim pytaniu! 4 } 5 if (n < 0) { n = n+2; 7 } 8 cout << n << endl; 21

.4. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 2; 2 int k = 0; 4 if (k!= 0 && n/k > 1) { 5 cout << "A" << endl; } else { 7 cout << "B" << endl; 8 }.5. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int a = 10; 2 int b = 10; 4 if (a <= b) { 5 cout << "<=" << endl; } else if (a == b) { 7 cout << "==" << endl; 8 } else if (a!= b) { 9 cout << "!=" << endl; 10 } else { 11 cout << "zaden" << endl; 12 } Zadania.1. (+20) Napisz program, który pobierze od użytkownika dwie liczby: n i k, a następnie wypisze na ekran słowo tak, jeżeli n jest podzielne przez k lub nie w przeciwnym wypadku..2. (+20) Ciąg Collatza. Napisz program, który pobierze od użytkownika liczbę n, a następnie wypisze na ekran wartość n 2 jeżeli n jest parzysta lub n + 1 w przeciwnym wypadku... (+20) Napisz program, który pobierze od użytkownika liczbę, a następnie wypisze na ekran słowo tak, jeżeli jej wartość bezwzględna jest większa od 5, nie w przeciwnym wypadku..4. (+20) Napisz program, który pobierze od użytkownika trzy liczby: a, b i c, a następnie znajdzie i wypisze na ekran miejsca zerowe funkcji f(x) = ax 2 + bx + c lub słowa Brak miejsc zerowych, jeżeli żadne zera nie istnieją. 22

.5. (+0) Napisz program, który określi czy podany przez użytkownika rok jest przestępny czy nie. Rok jest przestępny, jeżeli dzieli się na 4, ale nie na 100, chyba że dzieli się na 400... (+0) Napisz program, który pobierze od użytkownika dwie liczby, a następnie da użytkownikowi możliwość obliczenia sumy lub iloczynu tych liczb. Po pobraniu dwóch liczb program powinien wypisać na ekran listę możliwości i poprosić użytkownika o podanie liczby odpowiadającej wybranej przez niego opcji..7. (+40) Napisz program, który pobierze od użytkownika dwie liczby, a następnie da użytkownikowi możliwość obliczenia różnicy lub ilorazu tych liczb. Program powinien wypisać na ekran komunikat o błędzie, jeżeli wybrany zostanie iloraz, a druga z liczb będzie zerem..8. (+40) Napisz program, który będzie wystawiał oceny za klasówki. Powinien pobrać od użytkownika maksymalną liczbę punktów, a następnie liczbę punktów zdobytą przez ucznia. Skala ocen wygląda następująco: od 90% włącznie ocena bardzo dobra, od 75% włącznie ocena dobra, od 50% włącznie ocena dostateczna, od 40% ocena dopuszczająca, a poniżej 40% niedostateczna..9. (+0) Napisz program, który pobierze od użytkownika liczb: współrzędne lewego górnego rogu prostokąta, wysokość i szerokość prostokąta oraz współrzędne punktu. Program powinien następnie wypisać na ekran słowo wierzchołek, krawędź, wewnątrz lub poza, w zależności od tego gdzie, względem prostokąta, znajduje się dany punkt..10. (+0) Napisz program, który pobierze od użytkownika liczb, opisujących współrzędne wierzchołków pewnego trójkąta. Program powinien wypisać na ekran słowo ostrokatny, prostokatny lub rozwartokatny w zależności od tego czy opisany trójkąt jest ostrokątny, prostokątny czy rozwartokątny..11. (+80) Napisz program, który pobierze od użytkownika osiem liczb, opisujących współrzędne punktów A, B, C i D, a następnie sprawdzi czy odcinki AB i CD przecinają się. Rozszerzenie.1. (+80) Napisz program, który znajdzie miejsca zerowe danego wielomianu trzeciego stopnia..2. (+10) Napisz program, który sprawdzi czy dane słowo jest palindromem (czyta się je tak samo od początku jak od końca)... (+210) Napisz program, który określi czy dana liczba naturalna jest kwadratem innej liczby naturalnej czy też nie. 2