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

Wielkość: px
Rozpocząć pokaz od strony:

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

Transkrypt

1 C++ w przykładach Mariusz Różycki Cezary Obczyński Wersja aktualna na dzień 29 listopada 2015

2 Spis treści 1 Wypisywanie danych 4 2 Zmienne i stałe 10 3 Instrukcje warunkowe 16 4 Funkcje 24 5 Rekurencja 31 6 Pętle while 41 7 Pętle for 50 8 Wektory 55 9 Znaki i łańcuchy Obsługa plików Wskaźniki Struktury 68 A Biblioteka Allegro 69 1

3 Wprowadzenie Książka ta stanowi podręcznik i zbiór zadań z podstaw programowania w C++ dla uczniów klas akademickich w Liceum Ogólnokształcącym im. Marsz. Stanisława Małachowskiego w Płocku. Korzystanie z tego podręcznika Każdy rozdział składa się z czterech części. Przykłady Zawiera kilka przykładowych zadań wraz z rozwiązaniami i wyjaśnieniami. Każdy przykład wprowadza jedno nowe zagadnienie. Zapoznaj się z każdym przykładem, w szczególności zwracając uwagę na ramki oznaczone słowem Uwaga. Uruchom podane rozwiązania. Spróbuj je nieznacznie zmienić i zobaczyć jak wpłynie to na zachowanie wynikowego programu. Pytania Zawiera pytania, na które odpowiedź powinniście znać. Odpowiedź na niektóre z nich można znaleźć w opisie przykładów. Niektóre z pytań dotyczą zachowania danego fragmentu kodu, które najlepiej jest przetestować samodzielnie. Część z pytań, oznaczona gwiazdkami, wymaga doczytania informacji w innych źródłach (z reguły Wikipedia wystarczy). Zadania Zawiera zadania do samodzielnego rozwiązania. Każde z zadań ma przypisaną liczbę punktów. Praca domowa polegać będzie na rozwiązaniu takiej liczby zadań, aby uzyskać w sumie zadaną liczbę punktów. Nie ma obowiązku rozwiązywania wszystkich zadań z każdego rozdziału, jednak warto jest spróbować zrobić ich więcej niż wymaga tego praca domowa. Rozszerzenie Zawiera zadania przeznaczone dla osób, które posiadają umiejętności wykraczające poza dotychczas omówiony materiał. Zaliczają się one do pracy domowej, jednak warte są dużo więcej punktów. 2

4 Instalacja środowiska Code::Blocks Należy ściągnąć instalator z linku podanego na stronie. Proces instalacji wygląda tak samo jak dla większości programów Windowsowych. Używanie środowiska Code::Blocks Tworzenie nowego pliku Nowy plik można stworzyć wybierając z górnego menu File New Empty file. Najlepiej jest go od razu zapisać. Pamiętać należy, że nazwa pliku nie powinna zawierać polskich znaków, spacji oraz znaków interpunkcyjnych niedozwolonych w żadnym pliku (jak wykrzyknik czy ukośnik). Istotne jest również, aby plik posiadał rozszerzenie.cpp (Code::Blocks domyślnie zapisuje pliki z rozszerzeniem.c). Kompilacja i uruchamianie Przed uruchomieniem programu, jeżeli go zmodyfikowaliśmy, należy zapisać zmiany i skompilować kod. W środowisku Code::Blocks możemy skompilować i uruchomić program wybierając Build Build and run z menu kontekstowego lub wciskając klawisz F9. 3

5 1. Wypisywanie danych Przykłady 1.1. Napisz program, który wypisze na ekran słowa Hello, world!. 1 // Przyklad 1: Hello, world! 2 #include <iostream> 3 using namespace std; 4 5 int main() { 6 cout << "Hello, world!" << endl; 7 8 return 0; 9 } Pierwsza linia jest przykładem komentarza. Wszystko co znajduje się po podwójnym ukośniku, aż do końca linii, jest ignorowane przez kompilator. Można umieszczać tam wyjaśnienia kodu, które ułatwią jego zrozumienie przez inne osoby (lub ciebie za kilka tygodni lub miesięcy). Uwaga! Zwróć uwagę na brak polskich znaków, nie tylko w komentarzu, ale w całym kodzie. Ich używanie może prowadzić do błędów kompilacji lub nieprawidłowego działania programu, dlatego lepiej ich unikać. Druga i trzecia linia mówią kompilatorowi, że używać będziemy strumieni wejścia i wyjścia (iostream), znajdujących się wewnątrz biblioteki standardowej (std). Czym dokładnie są strumienie dowiesz się później. Póki co musisz wiedzieć, że służą one do wypisywania oraz pobierania danych. Linie 5-9 okalają właściwą serię poleceń wydawaną komputerowi. Wszystko co znajduje się między klamrami po int main() jest wykonywane przez komputer po kolei, od góry do dołu. Uwaga! Zauważ, że każda linia kodu między klamrami została wcięta o jeden poziom. Wcięcia nie są niezbędne do prawidłowego działania programu, jednak bardzo ułatwiają czytanie kodu. Warto wyrobić sobie nawyk prawidłowego formatowania już na samym początku. 4

6 Linia 6 odpowiada za wypisanie na ekran tekstu Hello, world!. Wszystko co znajduje się między znakami cudzysłowu zostanie wypisane na ekran dokładnie tak, jak wygląda w kodzie, włącznie ze spacjami, liczbami i operacjami matematycznymi. Uwaga! Między cudzysłowami nie można umieszczać znaków nowej linii. Słowo endl oznacza koniec linii (od angielskiego end line). Przesłanie go do strumienia (bez cudzysłowów!) spowoduje przejście do nowego wiersza. W końcu linia 8 odpowiada za przekazanie do systemu liczby 0, oznaczającej prawidłowe zakończenie działania programu Napisz program, który wypisze na ekran piernikowego ludzika: (")_ (_. _) / : \ (_/ \_) 1 // Przyklad 1.2: Piernikowy ludzik 2 #include <iostream> 3 using namespace std; 4 5 int main() { 6 cout << " _" << endl; 7 cout << " _(\")_" << endl; 8 cout << "(_. _)" << endl; 9 cout << " / : \\" << endl; 10 cout << "(_/ \\_)" << endl; return 0; 13 } W celu wypisania piernikowego ludzika, musimy przepisać wszystkie znaki go tworzące do edytora, umieścić je w cudzysłowach i wypisać. Tym razem jednak potrzebujemy więcej niż jednej linii z cout i endl. Problem pojawia się, gdy chcemy wypisać na ekran znak cudzysłowu. Jego umieszczenie w kodzie oznaczać będzie koniec tekstu do wypisania, a nie o to nam chodzi. Aby temu zaradzić, należy umieścić odwrócony ukośnik (backslash) przed problematycznym znakiem, jak w linii 7. Jest to znak dla kompilatora 5

7 (przynajmniej w tym wypadku): wiem, że następny znak ma specjalne znaczenie, ale ja chcę go po prostu wypisać. Podobny problem napotykamy w linii 9. Tym razem chcemy wypisać ukośnik, a znak cudzysłowu pozostawić jako zakończenie tekstu. Znów, umieszczamy ukośnik przed problematycznym znakiem, tym razem ukośnikiem. To samo musimy zrobić w linii 10. Uwaga! Dodatkowy ukośnik powinniśmy umieszczać także przed znakiem apostrofu oraz znakiem zapytania. Dodatkowo, umieszczenie go przed literą n (czyli \n) da nam znak nowej linii Napisz program, który obliczy i wypisze wartość wyrażenia // Przyklad 1.3: Wartosc wyrazenia 2 #include <iostream> 3 using namespace std; 4 5 int main() { 6 cout << 94* << endl; 7 8 return 0; 9 } Jeżeli pominiemy cudzysłowy, wyrażenie nie będzie traktowane jako tekst, ale jako matematyczne działanie. Możemy w ten sposób wykonywać obliczenia na liczbach. Do dyspozycji mamy dodawanie (+), odejmowanie (-), mnożenie (*), dzielenie (/) oraz resztę z dzielenia (%). Kolejność wykonywania działań jest taka, jak w matematyce. Najpierw wykonywane jest mnożenie i dzielenie (w tym dzielenie z resztą) od lewej do prawej, a następnie dodawanie i odejmowanie, również od lewej do prawej. Kolejność możemy zmieniać przy użyciu nawiasów, ale tylko okrągłych. Uwaga! Dzielenie w C++ jest całkowitoliczbowe, to znaczy jeżeli dwie liczby są całkowite, to wynik ich dzielenia również będzie całkowity. Wynik zaokrąglany jest w dół, zatem 99/10 da nam 9. Uwaga! Znak % nie ma w C++ nic wspólnego z obliczaniem procentów. Służy do obliczania reszty z dzielenia jednej liczby przez drugą. 6

8 1.4. Napisz program, który obliczy przybliżoną wartość wyrażenia ( 2 ) 5 i wypisze ją na ekran. 1 // Przyklad 1.4: Pierwiastki 2 #include <iostream> 3 #include <cmath> 4 using namespace std; 5 6 int main() { 7 cout << pow(sqrt(2), 5) << endl; 8 9 return 0; 10 } Oprócz podstawowych operacji arytmetycznych mamy także możliwość obliczania wartości innych funkcji matematycznych, jak pierwiastki, potęgi, logarytmy, funkcje trygonometryczne itp. Musimy jednak w tym celu użyć definicji z pliku cmath, o czym informujemy kompilator w linii 3. Otrzymujemy w ten sposób dostęp do funkcji takich jak sqrt (pierwiastek kwadratowy z liczby), pow (potęga), sin, cos, log itp. Funkcji tych używamy podając najpierw nazwę, a następnie argumenty w nawiasach okrągłych. Jeżeli argumentów jest kilka, oddzielamy je przecinkami. Uwaga! Liczby ułamkowe piszemy w C++ z kropką. Zatem prawidłowo powinniśmy napisać, na przykład, 2.5, ale nie 2,5. Uwaga! C++ nie posiada operatora potęgowania ^. Wyrażenie 2^5 nie zwróci błędu w czasie kompilacji, ale jego wynikiem nie będzie 32, tylko 0. Uwaga! Funkcje trygonometryczne (sin, cos, tan) przyjmują jako argumenty miarę kąta w radianach, nie w stopniach. Uwaga! Nie jest dostępna funkcja obliczająca wartość cotangensa danego kąta. Można to ograniczenie obejść obliczając wartość 1/tan(x). 7

9 Pytania 1.1. Co wypisze na ekran następująca linia kodu? 1 cout << "2+2" << endl; 1.2. Co wypisze na ekran następująca linia kodu? 1 cout << "/\\/\\\n" << endl; 1.3. Co wypisze na ekran następująca linia kodu? 1 cout << 9999/1000 << endl; 1.4. Co wypisze na ekran następująca linia kodu? 1 cout << 9999%1000 << endl; 1.5. Czym różnią się poniższe linie kodu? Jaki jest wpływ tej różnicy na wynik działania każdej z nich? 1 cout << "2+2*2" << endl; 2 cout << 2+2*2 << endl; Zadania 1.1. (+5) Napisz program, który wypisze na ekran twoje imię i nazwisko (+5) Napisz program, który wypisze na ekran pierwsze cztery wersy Inwokacji z Pana Tadeusza : Litwo! Ojczyzno moja! Ty jesteś jak zdrowie, Ile cię trzeba cenić, ten tylko się dowie, Kto cię stracił. Dziś piękność twa w całej ozdobie Widzę i opisuję, bo tęsknię po tobie (+10) Napisz program, który wypisze na ekran lisa: /..\ ( o o ) \ / \ / O 8

10 1.4. (+10) Napisz program, który wypisze na ekran kota: \_/ (^Y^)--.-, w-w (( ) 1.5. (+10) Napisz program, który wypisze na ekran sowę: ^...^ / o,o \ ):::( ===w=w=== 1.6. (+5) Napisz program, który obliczy i wypisze wartość wyrażenia (+10) Napisz program, który obliczy i wypisze liczbę sekund, która upływa w ciągu jednego tygodnia (+10) Napisz program, który obliczy i wypisze resztę z dzielenia wyrażenia ( ) ( ) przez (+5) Napisz program, który obliczy i wypisze przybliżoną wartość pierwiastka kwadratowego z (+10) Napisz program, który obliczy i wypisze wartość wszystkich funkcji trygonometrycznych kąta 30 stopni. Rozszerzenie 1.1. (+50) Napisz program, który będzie wypisywać na ekran losowe cytaty (+80) Napisz program, który pobierze tekst jako argument wiersza poleceń, a następnie wypisze go w dymku obok sowy, lisa lub kota, na przykład wywołanie sowa.exe "Hello, world!" powinno wyświetlić: Hello, world! ^...^ / / o,o \ ):::( ===w=w=== 1.3. (+130) Napisz program, który wczyta z pliku listę produktów (jeden na linię), a następnie uporządkuje je alfabetycznie i zapisze do oryginalnego pliku (nadpisując oryginalną zawartość). 9

11 2. Zmienne i stałe Przykłady 2.1. Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 int a = 281; 6 int b = 117; 7 8 cout << a/b << " "; 9 cout << a%b << "/"; 10 cout << b << endl; return 0; 13 } Program ten da się napisać bez użycia zmiennych. Jednak w takim przypadku, gdybyśmy chcieli zmienić liczbę 281 na inną, potrzebowalibyśmy dokonać zmiany w dwóch miejscach (a w przypadku liczby 117 w trzech). Chcąc uniknąć tej duplikacji możemy nadać nazwy tym dwóm liczbom, tworząc zmienne, jak w liniach 5 i 6. Aby stworzyć zmienną, podajemy najpierw jej typ (tutaj int, czyli liczba całkowita, od angielskiego integer), następnie jej nazwę, a na końcu, po znaku =, początkową wartość. Uwaga! Nazwa zmiennej może składać się wyłącznie z liczb alfabetu angielskiego (małych i wielkich), cyfr oraz znaku podkreślenia, przy czym nie może zaczynać się od cyfry. Wielkość liter ma znaczenie. Uwaga! Znak =, poza wyglądem, nie ma absolutnie nic wspólnego ze znakiem równości stosowanym w matematyce. Jest to operator przypisania, oznaczający, że zmienna po lewej stronie otrzymuje wartość po prawej. Operator ten nie jest symetryczny: po lewej zawsze znajduje się zmienna do której przypisujemy, a po prawej wartość do przypisania. 10

12 Tak stworzonych zmiennych możemy następnie używać w działaniach matematycznych odwołując się do nich poprzez ich nazwy, jak w liniach Napisz program, który zapyta użytkownika o liczbę naturalną, pobierze ją, a następnie wypisze na ekran jej kwadrat. 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 cout << "Podaj liczbe naturalna: "; 6 7 int n; 8 cin >> n; 9 10 cout << "Jej kwadrat jest rowny " << n*n << endl; 11 return 0; 12 } Aby pobrać wartość od użytkownika, musimy stworzyć zmienną, w której będziemy tę wartość przechowywać. Podanie początkowej wartości dla zmiennej nie jest obowiązkowe. W linii 7 zostało ono pominięte, jako że początkowa wartość i tak zostałaby natychmiast nadpisana w linii 8. Uwaga! O ile zmienna nie otrzymuje natychmiast wartości w żaden inny sposób, zawsze pamiętaj o podaniu początkowej wartości dla niej. Wartość zmiennej bez przypisanej wartości jest nieokreślona i może być absolutnie dowolna, co często prowadzi do nieoczekiwanego zachowania programu. Uwaga! Jeżeli uczono cię kiedyś, że zmienne należy tworzyć na początku bloku, jak najszybciej wyzbadź się tego nawyku. Wynika on z ograniczeń technologicznych języka C (na podstawie którego powstał C++, którego używamy tutaj) i jest absolutnym przeciwieństwem dobrych praktyk stosowanych obecnie. Zmienne należy tworzyć tuż przed ich pierwszym użyciem. Za pobranie wartości od użytkownika odpowiada linia 8. Zwróć uwagę na kierunek strzałek przy cout i cin. Te pierwsze kierują dane do strumienia, a te drugie ze strumienia do zmiennej Napisz program, który pobierze od użytkownika dwie liczby (nazwijmy je n i k), a następnie wypisze ułamek n k w postaci liczby mieszanej. 11

13 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 cout << "Podaj wartosci n i k" << endl; 6 7 int n, k; 8 cin >> n >> k; 9 10 cout << "Ulamek n/k w postaci liczby mieszanej: "; 11 cout << n/k << " "; 12 cout << n%k << "/"; 13 cout << k << endl; return 0; 16 } Ten przykład jest rozszerzeniem przykładu 1. Zamiast obliczać wynik dla znanych liczb, pobieramy je od użytkownika, a następnie obliczamy i wypisujemy wynik. Zwróć uwagę na linie 7 i 8, w których tworzone są zmienne oraz pobierane są ich wartości. Możliwe jest tworzenie wielu zmiennych jednego typu jednocześnie. Wystarczy oddzielić ich nazwy przecinkami. Możliwe jest również pobranie dwóch liczb na raz tak jak w linii Napisz program, który pobierze od użytkownika promień koła (niekoniecznie całkowity), a następnie obliczy i wypisze na ekran jego średnicę. 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 cout << "Podaj promien kola: "; 6 7 double r; 8 cin >> r; 9 10 cout << "Srednica tego kola: " << 2*r << endl; return 0; 13 } 12

14 Jako że treść zadania wymaga od nas działania z liczbami, które nie muszą być całkowite, typ zmiennej int nie jest tutaj odpowiedni. Stosujemy w zamian typ double, który służy do przechowywania tzw. liczb zmiennoprzecinkowych. Pozwala on na przechowywanie liczb bardzo dużych (do około ) jak i bardzo małych (najmniejsza możliwa liczba dodatnia w okolicach ). Jednakże precyzja takiej liczby jest dość ograniczona: jedynie pierwsze 9 miejsc znaczących w zapisie dziesiętnym niesie za sobą jakiekolwiek znaczenie. Uwaga! Każdy wynik otrzymany w działaniu na liczbach zmiennoprzecinkowych jest jedynie przybliżeniem. Nawet proste obliczenie jak może dać, dość nieoczekiwanie, wynik Wynika to z tego, że 0.1 jest w systemie dwójkowym liczbą o rozwinięciu nieskończonym, więc nie da się jej dokładnie przedstawić wewnątrz zmiennej typu double. Liczb zmiennoprzecinkowych nie należy używać, o ile nie jest to absolutnie niezbędne. Nawet obliczenia na pieniądzach lepiej wykonywać na liczbach całkowitych (w postaci, na przykład, liczby groszy) Napisz program, który pobierze od użytkownika promień koła, a następnie wypisze jego pole i obwód. 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 const double PI = ; 6 7 cout << "Podaj promien kola: "; 8 double r; 9 cin >> r; cout << "Obwod kola: " << 2*PI*r << endl; 12 cout << "Pole kola: " << PI*r*r << endl; return 0; 15 } Oprócz zmiennych, możemy tworzyć także stałe. Różnią się one od zmiennych tym, że nie można zmieniać ich wartości, a co za tym idzie, podanie wartości początkowej jest obowiązkowe. Stałe tworzymy tak jak zmienne, z tą różnicą, że przed typem piszemy słowo const (od angielskiego constant, czyli stała). Nazwy stałych z reguły piszemy wielkimi literami, ale nie jest to wymagane. 13

15 Pytania 2.1. Co wypisze następujący fragment kodu? 1 int n = 5; 2 cout << n << endl; 3 4 n = 10; 5 cout << n << endl; 2.2. Co wypisze następujący fragment kodu? 1 int a = 5; 2 int b = a; 3 a = 10; 4 cout << b << endl; 2.3. Co wypisze następujący fragment kodu? 1 int a = 5; 2 a = a+1; 3 cout << a << endl; 2.4. Co wypisze następujący fragment kodu? (1e100 oznacza ). 1 cout << 1e e100 << endl; 2.5. Ile miejsca w pamięci zajmuje pojedyncza zmienna typu int? Jaka jest najmniejsza i największa wartość, jaka może się w niej zmieścić? 2.6. Ile miejsca w pamięci zajmuje pojedyncza zmienna typu double? Zadania 2.1. (+10) Napisz program, który pobierze od użytkownika jedną liczbę: długość przejechanego dystansu wyrażoną w milach. Program ma policzyć i wypisać długość tego dystansu w kilometrach (+10) Napisz program, który pobierze od użytkownika trzy liczby: a, b i c, będące współczynnikami funkcji kwadratowej w postaci ogólnej. Program ma policzyć i wypisać na ekran wartość delty tej funkcji. 14

16 2.3. (+10) Napisz program, który pobierze od użytkownika jedną liczbę: temperaturę powietrza w stopniach Celsjusza. Program ma policzyć i wypisać tę temperaturę wyrażoną w stopniach Fahrenheita (F = 9 5 C + 32) (+10) Napisz program, który pobierze od użytkownika dwie liczby: długości przyprostokątnych trójkąta prostokątnego. Program ma policzyć i wypisać na ekran długość przeciwprostokątnej tego trójkąta (+10) Napisz program, który pobierze od użytkownika jedną liczbę całkowitą n, a następnie policzy i wypisze sumę liczb naturalnych od 1 do n włącznie (+15) Napisz program, który pobierze od użytkownika trzy liczby: a, b i c, będące współczynnikami funkcji kwadratowej w postaci ogólnej. Program ma policzyć i wypisać na ekran współrzędne wierzchołka tej funkcji (+20) Napisz program, który pobierze od użytkownika trzy liczby: długości boków pewnego trójkąta. Program ma policzyć i wypisać pole powierzchni tego trójkąta (+20) Napisz program, który pobierze od użytkownika cztery liczby: współrzędne dwóch punktów na płaszczyznie (x 1, y 1, x 2, y 2 ). Program ma policzyć, a następnie wypisać odległość między tymi dwoma punktami (+10) Napisz program, który pobierze od użytkownika liczbę oznaczającą długość odcinka, a następnie wyznaczy złoty podział tego odcinka i wypisze na ekran odległości punktu podziału od każdego z punktów końcowych (+10) Napisz program, który pobierze od użytkownika liczbę opisującą długość promienia kuli, a następnie obliczy i wypisze objętość i pole powierzchni tej kuli. Rozszerzenie 2.1. (+50) Napisz program, który pobierze z pliku listę pomiarów temperatur (jeden pomiar na linię), a następnie policzy i wypisze na ekran amplitudę i średnią tych pomiarów (+80) Napisz program, który wczyta z pliku tekst, a następnie zakoduje go klasycznym szyfrem Cezara i zapisze go do drugiego pliku (+130) Napisz program, który wczyta od użytkownika liczbę, a następnie wypisze na ekran wszystkie liczby pierwsze mniejsze od danej liczby. 15

17 3. Instrukcje warunkowe Przykłady 3.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; 3 4 int main() { 5 cout << "Podaj liczbe: "; 6 7 int n; 8 cin >> n; 9 10 if (n >= 0) { 11 cout << "nie"; 12 } 13 cout << "ujemna"; return 0; 16 } 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 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. 16

18 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 13, znajdująca się już poza klamrami bloku warunkowego, zostanie wykonana zawsze, niezależnie od wartości danej przez użytkownika liczby Napisz program, który pobierze od użytkownika liczbę i wypisze na ekran jej wartość bezwzględną. 1 #include <iostream> 2 using namespace std; 3 4 int main() { 5 cout << "Podaj liczbe: "; 6 7 int n; 8 cin >> n; 9 10 cout << "Jej wartosc bezwzgledna wynosi "; 11 if (n > 0) { 12 cout << n << endl; 13 } else { 14 cout << -n << endl; 15 } return 0; 18 } 17

19 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 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; 3 4 int main() { 5 cout << "Podaj liczbe: "; 6 7 int n; 8 cin >> n; 9 10 if (n % 2 == 0) { 11 cout << "tak" << endl; 12 } else { 13 cout << "nie" << endl; 14 } 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

20 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 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; 3 4 int main() { 5 cout << "Podaj liczbe: "; 6 7 int n; 8 cin >> n; 9 10 if (n > 0 && n < 10) { 11 cout << "tak" << endl; 12 } else { 13 cout << "nie" << endl; 14 } return 0; 17 } Warunki możemy rozszerzać używając spójników logicznych. W C++ mamy do dyspozycji 3 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

21 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ą 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: "; 3 4 int n; 5 cin >> n; 6 7 if (n > 0) { 8 cout << "dodatnia" << endl; 9 } else if (n == 0) { 10 cout << "zero" << endl; 11 } else { 12 cout << "ujemna" << endl; 13 } return 0; 16 } Może zajść potrzeba sprawdzenia 3 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 3 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

22 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 3.1. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 1; 2 if (n > 0) { 3 n = n-2; 4 } 5 if (n < 0) { 6 n = n+2; 7 } 8 cout << n << endl; 3.2. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 0; 2 if (n = 5) { 3 cout << "piec" << endl; 4 } 5 cout << n << endl; 3.3. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 0; // inna wartosc niz w poprzednim pytaniu! 2 if (n > 0) { 3 n = n-3; // inna wartosc niz w poprzednim pytaniu! 4 } 5 if (n < 0) { 6 n = n+2; 7 } 8 cout << n << endl; 21

23 3.4. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int n = 2; 2 int k = 0; 3 4 if (k!= 0 && n/k > 1) { 5 cout << "A" << endl; 6 } else { 7 cout << "B" << endl; 8 } 3.5. Jaki będzie wynik działania poniższego fragmentu kodu? 1 int a = 10; 2 int b = 10; 3 4 if (a <= b) { 5 cout << "<=" << endl; 6 } else if (a == b) { 7 cout << "==" << endl; 8 } else if (a!= b) { 9 cout << "!=" << endl; 10 } else { 11 cout << "zaden" << endl; 12 } Zadania 3.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 (+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 3n + 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 (+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

24 3.5. (+30) 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 (+30) 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 (+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 (+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 (+60) Napisz program, który pobierze od użytkownika 6 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 (+60) Napisz program, który pobierze od użytkownika 6 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 (+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 3.1. (+80) Napisz program, który znajdzie miejsca zerowe danego wielomianu trzeciego stopnia (+130) 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. 23

25 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni kwadratu o boku 5. 1 #include <iostream> 2 using namespace std; 3 4 int kwadrat (int n) { 5 return n*n; 6 } 7 8 int main() { 9 cout << kwadrat(5) << endl; return 0; 12 } W pierwszym rozdziale nauczyliśmy się wykorzystywać wbudowane w język C++ funkcje matematyczne znajdujące się w pliku cmath, takie jak sqrt czy pow. W tym rozdziale nauczymy się definiować własne funkcje i wykorzystywać je w programach. W liniach 4-6 umieszczona została definicja funkcji kwadrat, która przyjmuje jeden argument (liczbę całkowitą n), a następnie oblicza i zwraca wartość kwadratu tej liczby. Definicja funkcji składa się z 4 elementów, kolejno: typu zwracanego, nazwy funkcji, listy argumentów i ciała funkcji. Typ zwracany (tutaj int) określa typ wartości, która jest wynikiem działania naszej funkcji. W tym przykładzie operujemy na liczbach całkowitych, stąd typem zwracanym jest int. Następnie nazwa funkcji (kwadrat), której będziemy później używać do wywoływania danej funkcji. Ograniczenia nazw funkcji są takie same jak dla zmiennych: małe i wielkie litery alfabetu angielskiego, cyfry i znaki podkreślenia, przy czym nazwa nie może zaczynać się od cyfry. Istotne jest także to, że nie możemy mieć jednocześnie zmiennej i funkcji o tej samej nazwie. 24

26 Po nazwie, w nawiasach okrągłych, znajduje się lista argumentów. Każdy argument posiada typ oraz nazwę, a kolejne argumenty oddzielone są przecinkami. Tutaj posiadamy tylko jeden argument: n, który posiada typ int. W końcu w nawiasach klamrowych umieszczamy ciało funkcji, czyli kod, który zostanie wykonany w momencie wywołania naszej funkcji. Istotne są tutaj dwie rzeczy. Po pierwsze, ciało funkcji powinno zawierać wyrażenie return (linia 5), które zwraca wynik działania funkcji i kończy jej działanie. Po drugie, argumenty funkcji możemy wykorzystywać wewnątrz ciała funkcji jak zmienne. Ich początkowe wartości będą równe tym, które przekazane zostały w wywołaniu funkcji. Przykład wywołania funkcji kwadrat znajduje się w linii 9. Tak jak w przypadku wbudowanych funkcji matematycznych, podajemy najpierw nazwę funkcji (kwadrat), a następnie w nawiasach okrągłych wartości przekazywanych argumentów. Tutaj przekazujemy tylko jedną wartość 5, która zostanie przypisana argumentowi n wewnątrz funkcji kwadrat Napisz funkcję wartosc_bezwzgledna, która przyjmuje jeden argument: liczbę całkowitą, a zwraca wartość bezwzględną tej liczby. Napisz program, który obliczy wartość bezwzględną liczby -42 używając tej funkcji. 1 #include <iostream> 2 using namespace std; 3 4 int wartosc_bezwzgledna(int n) { 5 if (n > 0) { 6 return n; 7 } else { 8 return -n; 9 } 10 } int main() { 13 cout << wartosc_bezwzgledna(-42) << endl; return 0; 16 } Funkcje zawierać mogą nie tylko wyrażenia return, ale dowolny inny kod. Możemy w nich tworzyć nowe zmienne, wypisywać i pobierać dane, sprawdzać warunki oraz wykorzystywać wszystkie inne konstrukcje języka C++, jak pętle (o których dowiemy się nieco później). Dodatkowo funkcja może zawierać więcej niż jedno wyrażenie return. Istotne jest jedynie to, że zawsze wykonane zostanie tylko jedno z nich: to, do którego 25

27 program dotrze w pierwszej kolejności. Następnie funkcja zakończy swoje działanie, a jakikolwiek inny kod znajdujący się wewnątrz funkcji zostanie zignorowany. W ten sposób, jeżeli do funkcji wartosc_bezwzgledna przekażemy liczbę dodatnią, warunek z linii 5 będzie spełniony i wykona się wyrażenie return z linii 6, które zwróci oryginalną wartość argumentu, po czym działanie funkcji zakończy się. W przeciwnym wypadku, jeżeli argument będzie ujemny (lub zero), wykona się wyrażenie z linii 8, zwrócona zostanie wartość przeciwna do danej i działanie funkcji zakończy się. Uwaga! W C++ umieszczenie kolejnych linii kodu bezpośrednio po wyrażeniu return nie jest błędem taki program uruchomi się. Jednakże kod znajdujący się za tym wyrażeniem nigdy nie zostanie wykonany, ponieważ wyrażenie return kończy działanie funkcji Napisz funkcję delta, która przyjmuje trzy argumenty: współczynniki a, b, c równania kwadratowego, a zwraca wartość delty tego równania. Napisz program, który obliczy deltę równania x 2 2x + 1 = 0 używając tej funkcji. 1 #include <iostream> 2 using namespace std; 3 4 double delta(double a, double b, double c) { 5 return b*b - 4*a*c; 6 } 7 8 int main() { 9 cout << delta(1, -2, 1) << endl; return 0; 12 } Funkcja może zwracać każdy z możliwych typów zmiennej, w tym także typ double. Argumenty także mogą przyjmować dowolny typ zmiennej. Jeżeli chcemy, aby funkcja przyjmowała więcej niż jeden argument, w definicji funkcji umieszczamy je wszystkie, każdy z własnym typem i nazwą, oddzielone przecinkami. Ich kolejność jest istotna: wartości przekazywane do funkcji będą przypisywane do argumentów w takiej kolejności, w jakiej argumenty były podane w definicji funkcji. W ten sposób wywołanie funkcji delta w linii 9 przypisze wartość 1 argumentowi a, wartość -2 argumentowi b i wartość 1 argumentowi c. 26

28 4.4. Napisz funkcję czy_wieksza, która sprawdzi czy pierwsza z dwóch pobranych liczb jest większa od drugiej. Napisz program, który przy jej użyciu sprawdzi, czy liczba 5 jest większa od 6. 1 #include <iostream> 2 using namespace std; 3 4 bool czy_wieksza(int a, int b) { 5 return a > b; 6 } 7 8 int main() { 9 if (czy_wieksza(5, 6)) { 10 cout << "Jest wieksza" << endl; 11 } else { 12 cout << "Nie jest wieksza" << endl; 13 } return 0; 16 } Funkcje mogą zwracać również wartości logiczne, co pozwala na łatwe sprawdzenie prawdziwości skomplikowanych warunków. Aby uzyskać taki efekt, potrzebny jest nam nowy typ zmiennej: bool. Jest to typ logiczny, który przyjmuje jedną z dwóch wartości: true (prawda) lub false (fałsz). Każdy warunek w rzeczywistości jest operatorem (takim jak + czy -), którego wynikiem działania jest jedna z dwóch wartości logicznych. Możemy wynik takiego działania przechowywać w zmiennej (typu bool), przekazywać jako argument czy zwracać jako wynik działania funkcji (linia 5). Wyrażenie warunkowe tak naprawdę przyjmuje wartość logiczną, czyli oprócz warunków przy użyciu operatorów porównania możemy użyć także wartości true i false, zmiennych typu bool czy wywołań funkcji o typie zwracanym bool (linia 9). Uwaga! W miejscu warunku w wyrażeniu warunkowym if możemy także użyć liczby. Każda liczba różna od zera ma wartość logiczną true, a zero posiada wartość false. Podobnie w drugą stronę, użycie wartości logicznej jako liczby również jest dopuszczalne. Wartość false da nam 0, natomiast true zostanie zamienione na 1. 27

29 4.5. Napisz funkcję hello_world, która wypisze na ekran słowa Hello, world!. Napisz program, który wypisze na ekran te słowa używając tej funkcji. 1 #include <iostream> 2 using namespace std; 3 4 void hello_world() { 5 cout << "Hello, world!" << endl; 6 } 7 8 int main() { 9 hello_world(); return 0; 12 } Możliwe jest napisanie funkcji, która nie zwraca żadnej wartości ani nie przyjmuje żadnych argumentów. Jeżeli nie chcemy, żeby nasza funkcja przyjmowała jakiekolwiek argumenty, w definicji pozostawiamy jej listę argumentów pustą (linia 4). Nawiasy okrągłe muszą jednak pozostać na swoim miejscu. Podobnie wywołanie funkcji wciąż zachowuje okrągłe nawiasy po nazwie funkcji, jednak nie umieszczamy między nimi żadnej wartości. Jeżeli nie chcemy zwracać żadnej wartości, typ zwracany zastępujemy w definicji słowem void. W tym wypadku możemy pominąć w ciele funkcji wyrażenie return, jako że żadna wartość nie będzie zwracana. Działanie funkcji zakończy się w momencie dotarcia do ostatniej linii ciała funkcji. Umieszczenie wyrażenia return w funkcji typu void jest jednak dopuszczalne w celu wymuszenia wcześniejszego zakończenia jej działania. W takim wypadku jednak pomijamy wartość zwracaną po słowie return i umieszczamy bezpośrednio po nim średnik. Pytania 4.1. Co wypisze na ekran wywołanie f(5)? 1 int f(int n) { 2 return 3*n-5; 3 cout << "f(n) = " << 3*n-5 << endl; 4 } 28

30 4.2. Co wypisze na ekran wywołanie g(-5)? 1 int g(int n) { 2 if (n > 0) { 3 return n; 4 } 5 6 cout << "Dana liczba jest ujemna" << endl; 7 return -n; 8 } 4.3. Jak różnią się w zachowaniu funkcje oblicz_kwadrat i wypisz_kwadrat zdefiniowane poniżej? 1 int oblicz_kwadrat(int n) { 2 return n*n; 3 } 4 5 void wypisz_kwadrat(int n) { 6 cout << n*n << endl; 7 } 4.4. Gdybyśmy chcieli napisać programy obliczające kwadrat danej liczby, każdy wykorzystujący inną funkcję z poprzedniego pytania, czym różniłyby się te programy? 4.5. Co wypisze na ekran następujący fragment kodu? 1 if (false) { 2 cout << "A" << endl; 3 } else { 4 cout << "B" << endl; 5 } Zadania 4.1. (+30) Napisz funkcję, która przeliczy daną odległość w kilometrach na mile. Napisz program, który będzie dokonywać przeliczenia przy użyciu tej funkcji (+30) Napisz funkcję, która przeliczy daną temperaturę w stopniach Fahrenheita na stopnie Celsjusza (C = 5 9 (F 32)). Napisz program, który przeliczać będzie daną przez użytkownika temperaturę przy użyciu tej funkcji. 29

31 4.3. (+30) Napisz funkcję, która obliczy i zwróci pole koła o zadanym promieniu (+40) Napisz funkcję, która obliczy pole powierzchni stożka o zadanej wysokości i promieniu podstawy (+40) Napisz funkcję, która dla danej liczby całkowitej zwróci połowę jej wartości (jeżeli dana liczba jest parzysta) lub jej trzykrotność zwiększoną o 1 (jeżeli jest nieparzysta) (+30) Napisz funkcję, która zwróci mniejszą z dwóch danych liczb (+40) Napisz funkcję, która zwróci najmniejszą z trzech danych liczb (+40) Napisz funkcję signum, która zwracać będzie wartość funkcji signum danej liczby. Napisz program, który wykorzysta tę funkcję do obliczenia wartości funkcji signum dla danej przez użytkownika liczby (+30) Napisz funkcję, która sprawdzi, czy dana liczba jest dzielnikiem drugiej. Napisz program, który przy jej użyciu będzie dla danych przez użytkownika liczb będzie wypisywać słowo tak lub nie, w zależności od tego, czy pierwsza z liczb dzieli drugą czy nie (+40) Napisz funkcję, który sprawdzi, czy z odcinków o danych długościach boków da się zbudować trójkąt. Napisz program, który przy użyciu tej funkcji sprawdzi, czy z odcinków o długościach 1, 2 i 3 da się zbudować trójkąt (+40) Napisz funkcję, która sprawdzi, czy trójkąt o zadanych bokach jest prostokątny. Napisz program, który przy użyciu tej funkcji sprawdzi, czy trójkąt o długościach boków 12, 13 i 5 jest prostokątny Rozwiąż zadania z poprzednich rozdziałów, tym razem pisząc odpowiednie funkcje, a następnie programy wykorzystujące te funkcje. Rozszerzenie 4.1. (+130) Napisz funkcję suma, która obliczy i zwróci sumę liczb znajdujących się w danej tablicy (lub wektorze) (+210) Napisz funkcję licznik, która nie przyjmuje argumentów, a każde kolejne jej wywołanie zwraca kolejne liczby naturalne. Pierwsze wywołanie tej funkcji powinno zwrócić 0, kolejne 1, następne 2 itd (+340) Napisz funkcję zlicz, która przyjmie od użytkownika pewien ciąg liczb całkowitych (w postaci tablicy lub wektora) oraz wskaźnik do funkcji, która przyjmuje liczbę całkowitą, a zwraca wartość logiczną. Funkcja ta ma policzyć dla ilu elementów danego ciągu dana funkcja zwraca prawdę. 30

32 5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań. Przed rozpoczęciem pracy nad tym rozdziałem upewnij się, że rozumiesz funkcje i instrukcje warunkowe. Bez tej wiedzy będziesz mieć problemy ze zrozumieniem materiału zawartego w tym rozdziale. Jeżeli potrzebujesz, rozwiąż więcej zadań z poprzedniego rozdziału. Przykłady 5.1. Napisz program, który będzie w nieskończoność wypisywać kolejne liczby naturalne, począwszy od 0, po jednej liczbie na linię. 1 #include <iostream> 2 using namespace std; 3 4 void wypisznaturalneod(int n) { 5 cout << n << endl; 6 wypisznaturalneod(n+1); 7 } 8 9 int main() { 10 wypisznaturalneod(0); return 0; 13 } Uwaga! Program ten nigdy sam nie zakończy swojego działania. Aby zakończyć jego działanie wciśnij kombinację klawiszy Ctrl+C. Rozwiązanie tego zadania może na pierwszy rzut oka wyglądać bardzo nietypowo. Wykorzystuje ono bardzo popularną technikę zwaną rekurencja. W celu wypisania wszystkich kolejnych liczb naturalnych tworzymy funkcję, która pozwoli wypisać nam wszystkie liczby naturalne począwszy od pewnej 31

33 danej liczby. Funkcja ta, wypisznaturalneod nie zwraca żadnej wartości (wypisuje jedynie liczby), a jako argument przyjmuje początkową liczbę, od której chcemy zacząć wypisywanie. W ciele tej funkcji znajdują się jedynie 2 linie kodu. Pierwsza z nich odpowiada za wypisanie pierwszej z liczb (czyli n, od którego mieliśmy zacząć). Druga linia wywołuje zaś tę samą funkcję, jednak z argumentem o jeden większym, co wypisze na ekran wszystkie pozostałe liczby naturalne, które mamy do wypisania. Rekurencja polega na wywoływaniu funkcji wewnątrz jej własnej definicji. Pozwala to na wielokrotne wykonanie tego samego fragmentu kodu. Funkcję, która wywołuje sama siebie nazywamy rekurencyjna. Funkcje rekurencyjne z reguły podążają za utartym schematem: jeżeli potrafię znaleźć rozwiązanie dla n, to jakie będzie rozwiązanie dla n + 1? 5.2. Napisz program, który będzie odliczać w dół do 0 od pewnej zadanej liczby. Program ma pobrać od użytkownika liczbę n, a następnie wypisać na ekran liczby od n do 0 włącznie, w kolejności malejącej, po jednej liczbie na linię. 1 #include <iostream> 2 using namespace std; 3 4 void odliczod(int n) { 5 if (n < 0) { 6 return; 7 } 8 9 cout << n << endl; 10 odliczod(n-1); 11 } int main() { 14 int n; 15 cin >> n; odliczod(n); return 0; 20 } Program z poprzedniego przykładu nie był zbyt przydatny, jako że nigdy nie kończył swojego działania. Nie posiadał on tzw. podstawy rekurencji, a jedynie krok rekurencyjny. 32

34 W tym przykładzie chcemy wypisywać kolejno coraz mniejsze liczby, stąd wywołanie w linii 10 zawiera n-1, a nie n+1 jak w poprzednim przykładzie. Tym razem jednak chcemy zakończyć wypisywanie liczb, jeżeli n przekroczy 0. Dlatego oprócz zmiany plusa na minus, do funkcji dodane zostały jeszcze dodatkowe linie kodu (5-7), które sprawdzają czy argument funkcji nie jest ujemny. Jeżeli jest, działanie funkcji jest przerywane, a co za tym idzie, kolejne liczby nie są wypisywane na ekran. Taki warunek nazywamy podstawą rekurencji i z reguły umieszczamy go na samym początku funkcji rekurencyjnej. Uwaga! Warunek w linii 5 moglibyśmy zastąpić przez n == -1 i program działałby wciąż poprawnie. Jednak gdyby ktoś poprosił cię o zmianę tego kodu tak, aby wypisywał co drugą liczbę, konieczna byłaby modyfikacja tego warunku na n == -1 n == -2. Unikaj używania warunków z == lub!= w podstawie rekurencji (a później także w pętlach). Czasem jest to niezbędne, jednak w większości przypadków lepiej jest taki warunek zastąpić przez jedną z nierówności. Całą resztę kodu funkcji rekurencyjnej nazywamy krokiem rekurencji Napisz program, który wypisze kolejne liczby naturalne od a do b włącznie, w kolejności rosnącej, gdzie a i b są dane przez użytkownika. 1 #include <iostream> 2 using namespace std; 3 4 void wypisznaturalne(int start, int koniec) { 5 if (start > koniec) { 6 return; 7 } 8 9 cout << start << endl; 10 wypisznaturalne(start+1, koniec); 11 } int main() { 14 int start, koniec; 15 cin >> start >> koniec; wypisznaturalne(start, koniec); return 0; 20 } 33

35 Tym razem nasza funkcja rekurencyjna przyjmuje dwa argumenty: granice przedziału, którego elementy mamy wypisać. Zacznijmy od omówienia kroku rekurencji (linie 9-10). Przypomina on rozwiązanie przykładu 5.1. Wypisujemy pierwszą liczbę przedziału, a potem rekurencyjnie wypisujemy całą resztę. Tym razem musimy jednak pamiętać o przekazaniu również drugiego argumentu koniec, który jednak nie zmienia się. Wypisywanie powinno zakończyć się w momencie, kiedy kolejna liczba do wypisania (tj. start) jest większa niż ostatnia liczba, która miała być wypisana (czyli koniec). Stąd podstawa rekurencji (linie 5-7) sprawdza czy start jest większe od koniec i jeżeli tak, to kończy działanie funkcji bez wypisywania żadnej wartości na ekran. Głowna funkcja programu sprowadza się do pobrania od użytkownika dwóch liczb, a następnie przekazania ich do zdefiniowanej już funkcji wypisznaturalne Dana jest plansza o wymiarach 2 n 2 n, gdzie n > 0, z wyciętym jednym z pól, oraz dowolna liczba klocków w kształcie litery L złożonej z 3 kwadratów. W jaki sposób dokładnie przykryć planszę klockami tak, aby żaden klocek nie zakrywał wyciętego pola ani nie wystawał poza planszę? Klocki nie mogą na siebie nachodzić, ale można dowolnie je obracać. Uwaga! Ten przykład nie zawiera kodu, jako że zadanie nie prosi o jego napisanie. Jeżeli czujesz się na siłach, możesz spróbować napisać program, który będzie konstruował i prezentował odpowiedni układ klocków dla danej planszy. Wymaga to jednak nieco wiedzy wykraczającej poza dotychczasowy materiał. Zaczniemy od rozwiązania najprostszego przypadku, gdzie n = 1, czyli plansza ma rozmiar 2 2. Następnie na podstawie prostszych rozwiązań będziemy konstruować rozwiązania dla coraz większych plansz. Przypadek bazowy jest trywialnie prosty. Mamy planszę 2 2 z jednym z pól wyciętym. Cała reszta planszy ma więc dokładnie taki sam kształt jak nasz klocek, a więc wystarczy go tam położyć. Następnie załóżmy, że mamy rozwiązanie dla n i spróbujmy znaleźć rozwiązanie dla n+1. Dzielimy planszę na 4 części: na pół w pionie i w poziomie, otrzymując cztery ćwiartki. 34

36 Dostajemy więc 4 plansze, każda o rozmiarach 2 n 2 n, a taką potrafimy zapełnić klockami tak, aby dowolne pole pozostało wolne. W jednej z ćwiartek znajduje się pole, które musi pozostać puste, więc zapełniamy ją odpowiednio. Na pozostałych 3 ćwiartkach nie mamy żadnych pól, które powinny pozostać puste. Możemy je sobie wybrać tak, aby w pozostałą lukę dało się umieścić jeszcze jeden klocek. W każdej z tych 3 ćwiartek zostawiamy wolne pole przy samym środku planszy, co da nam lukę w kształcie klocka, którą możemy w prosty sposób zapełnić. Wiemy, że dla dowolnego n da się wypełnić planszę, jeżeli da się to zrobić dla n 1. Wiemy także, że jest to możliwe dla n = 1. Stąd wiemy, że da się to zrobić dla n = 2 (bo da się dla 2 1 = 1), a więc także dla n = 3 (bo da się dla 3 1 = 2) itd. W ten sposób nie tylko udowodniliśmy (przez indukcję), że żądany układ istnieje dla każdego n > 0, ale także znaleźliśmy rekurencyjny sposób na jego skonstruowanie. 35

3. Instrukcje warunkowe

3. Instrukcje warunkowe . 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

Bardziej szczegółowo

4. Funkcje. Przykłady

4. Funkcje. Przykłady 4. Funkcje Przykłady 4.1. Napisz funkcję kwadrat, która przyjmuje jeden argument: długość boku kwadratu i zwraca pole jego powierzchni. Używając tej funkcji napisz program, który obliczy pole powierzchni

Bardziej szczegółowo

1. Wypisywanie danych

1. Wypisywanie danych 1. Wypisywanie danych Przykłady 1.1. Napisz program, który wypisze na ekran słowa Hello, world!. 1 // Przyklad 1: Hello, world! 3 using namespace std; 5 int main() { 6 cout

Bardziej szczegółowo

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).

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). 2. Zmienne i stałe Przykłady 2.1. Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117). 5 int a = 281; int b = 117; 7 8 cout

Bardziej szczegółowo

5. Rekurencja. Przykłady

5. Rekurencja. Przykłady 5. Rekurencja Uwaga! W tym rozdziale nie są omówione żadne nowe konstrukcje języka C++. Omówiona jest za to technika wykorzystująca funkcje, która pozwala na rozwiązanie pewnych nowych rodzajów zadań.

Bardziej szczegółowo

7. Pętle for. Przykłady

7. Pętle for. Przykłady . Pętle for Przykłady.1. Bez użycia pętli while ani rekurencji, napisz program, który wypisze na ekran kolejne liczby naturalne od 0 do pewnego danego n. 5 int n; 6 cin >> n; 8 for (int i = 0; i

Bardziej szczegółowo

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

Podstawy Programowania Podstawowa składnia języka C++ Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include

Bardziej szczegółowo

Programowanie strukturalne i obiektowe. Funkcje

Programowanie strukturalne i obiektowe. Funkcje Funkcje Często w programach spotykamy się z sytuacją, kiedy chcemy wykonać określoną czynność kilka razy np. dodać dwie liczby w trzech miejscach w programie. Oczywiście moglibyśmy to zrobić pisząc trzy

Bardziej szczegółowo

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.

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. 8. Wektory Przykłady 8.1. Napisz program, który pobierze od użytkownika 10 liczb, a następnie wypisze je w kolejności odwrotnej niż podana. Uwaga! Kod poniżej. To zadanie można rozwiązać przy użyciu wiedzy

Bardziej szczegółowo

6. Pętle while. Przykłady

6. Pętle while. Przykłady 6. Pętle while Przykłady 6.1. Napisz program, który, bez użycia rekurencji, wypisze na ekran liczby naturalne od pewnego danego n do 0 włącznie, w kolejności malejącej, po jednej liczbie na linię. Uwaga!

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

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

#include <iostream> using namespace std; void ela(int); int main( ); { Funkcja 3. return 0; } #include using namespace std; Prototypy funkcji Funkcja 1 void ela(int); double info (double); int main( ); return 0; Funkcja 2 void ela(int); Funkcja 3 double info(double); return 4*t; jeszcze

Bardziej szczegółowo

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

Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r. M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza

Bardziej szczegółowo

Wstęp do Programowania, laboratorium 02

Wstęp do Programowania, laboratorium 02 Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite

Bardziej szczegółowo

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie.

Funkcje. Deklaracja funkcji. Definicja funkcji. Wykorzystanie funkcji w programie. Funkcje Deklaracja funkcji typ funkcji identyfikator_funkcji(lista parametrów formalnych); Typ funkcji określa typ wartości zwracanej przez funkcję (typ zdefiniowany pierwotnie jak int, typ zdefiniowany

Bardziej szczegółowo

1 Podstawy c++ w pigułce.

1 Podstawy c++ w pigułce. 1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,

Bardziej szczegółowo

1 Powtórzenie wiadomości

1 Powtórzenie wiadomości 1 Powtórzenie wiadomości Zadanie 1 Napisać program, który w trybie dialogu z użytkownikiem przyjmie liczbę całkowitą, a następnie wyświetli informację czy jest to liczba parzysta czy nieparzysta oraz czy

Bardziej szczegółowo

Programowanie - wykład 4

Programowanie - wykład 4 Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include

Bardziej szczegółowo

C++ wprowadzanie zmiennych

C++ wprowadzanie zmiennych C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym

Bardziej szczegółowo

Podstawy programowania skrót z wykładów:

Podstawy programowania skrót z wykładów: Podstawy programowania skrót z wykładów: // komentarz jednowierszowy. /* */ komentarz wielowierszowy. # include dyrektywa preprocesora, załączająca biblioteki (pliki nagłówkowe). using namespace

Bardziej szczegółowo

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

Schematy blokowe I. 1. Dostępne bloki: 2. Prosty program drukujący tekst. Schematy blokowe I Jeżeli po schematach blokowych będzie używany język C, to należy używać operatorów: '&&', ' ', '!=', '%' natomiast jeśli Ruby to 'and', 'or', '%', '!='. 1. Dostępne bloki: a) początek:

Bardziej szczegółowo

Struktura pliku projektu Console Application

Struktura pliku projektu Console Application Struktura pliku projektu Console Application #include #include using namespace std; int main(int argc, char *argv[]) // to jest komentarz system("pause"); return EXIT_SUCCESS; Na początku

Bardziej szczegółowo

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach?

Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Część XVIII C++ Funkcje Widoczność zmiennych Czy wartości każdej zmiennej można zmieniać w dowolnym miejscu kodu? Czy można zadeklarować dwie zmienne o takich samych nazwach? Umiemy już podzielić nasz

Bardziej szczegółowo

Cw.12 JAVAScript w dokumentach HTML

Cw.12 JAVAScript w dokumentach HTML Cw.12 JAVAScript w dokumentach HTML Wstawienie skryptu do dokumentu HTML JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.skrypty Java- Script mogą być zagnieżdżane

Bardziej szczegółowo

Część 4 życie programu

Część 4 życie programu 1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część

Bardziej szczegółowo

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie

Po uruchomieniu programu nasza litera zostanie wyświetlona na ekranie Część X C++ Typ znakowy służy do reprezentacji pojedynczych znaków ASCII, czyli liter, cyfr, znaków przestankowych i innych specjalnych znaków widocznych na naszej klawiaturze (oraz wielu innych, których

Bardziej szczegółowo

Programowanie komputerowe. Zajęcia 1

Programowanie komputerowe. Zajęcia 1 Programowanie komputerowe Zajęcia 1 Code::Blocks - tworzenie projektu Create New Project Console Application -> C++ Wybierz nazwę projektu Stworzy się nowy projekt z wpisaną funkcją main Wpisz swój program

Bardziej szczegółowo

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

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nazwa implementacji: Nauka języka Python wyrażenia warunkowe Autor: Piotr Fiorek Opis implementacji: Poznanie wyrażeń warunkowych if elif - else. Nasz kalkulator umie już liczyć, ale potrafi przeprowadzać

Bardziej szczegółowo

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

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch. Instrukcje warunkowe i skoku. Spotkanie 2 Dr inż. Dariusz JĘDRZEJCZYK Wyrażenia i operatory logiczne Instrukcje warunkowe: if else, switch Przykłady 11/3/2016 AGH, Katedra Informatyki Stosowanej i Modelowania

Bardziej szczegółowo

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

for (inicjacja_warunkow_poczatkowych(końcowych); wyrazenie_warunkowe; wyrazenie_zwiekszajace(zmniejszające)) { blok instrukcji; } Pętle Pętle (ang. loops), zwane też instrukcjami iteracyjnymi, stanowią podstawę prawie wszystkich algorytmów. Lwia część zadań wykonywanych przez programy komputerowe opiera się w całości lub częściowo

Bardziej szczegółowo

do instrukcja while (wyrażenie);

do instrukcja while (wyrażenie); Instrukcje pętli -ćwiczenia Instrukcja while Pętla while (póki) powoduje powtarzanie zawartej w niej sekwencji instrukcji tak długo, jak długo zaczynające pętlę wyrażenie pozostaje prawdziwe. while ( wyrażenie

Bardziej szczegółowo

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

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: 1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci: * Jan Kowalski * * ul. Zana 31 * 3. Zadeklaruj zmienne przechowujące

Bardziej szczegółowo

Jak napisać program obliczający pola powierzchni różnych figur płaskich?

Jak napisać program obliczający pola powierzchni różnych figur płaskich? Część IX C++ Jak napisać program obliczający pola powierzchni różnych figur płaskich? Na początku, przed stworzeniem właściwego kodu programu zaprojektujemy naszą aplikację i stworzymy schemat blokowy

Bardziej szczegółowo

Podstawowe typy zmiennych

Podstawowe typy zmiennych Podstawowe typy zmiennych Typ Rozmiar w bajtach Minimalny zakres char 1 Kod ASCII znaku (liczba 0..255) int 1 4-2147483648 2147483647 long long 1 8-2 63...2 63-1 float 4-3,4*10 38 3,4*10 38 (do 6 cyfr

Bardziej szczegółowo

Wstęp do informatyki- wykład 7

Wstęp do informatyki- wykład 7 1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.

Bardziej szczegółowo

KURS WSPOMAGAJĄCY PRZYGOTOWANIA DO MATURY Z MATEMATYKI ZDAJ MATMĘ NA MAKSA. przyjmuje wartości większe od funkcji dokładnie w przedziale

KURS WSPOMAGAJĄCY PRZYGOTOWANIA DO MATURY Z MATEMATYKI ZDAJ MATMĘ NA MAKSA. przyjmuje wartości większe od funkcji dokładnie w przedziale Zestaw nr 1 Poziom Rozszerzony Zad.1. (1p) Liczby oraz, są jednocześnie ujemne wtedy i tylko wtedy, gdy A. B. C. D. Zad.2. (1p) Funkcja przyjmuje wartości większe od funkcji dokładnie w przedziale. Wtedy

Bardziej szczegółowo

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

Ok. Rozbijmy to na czynniki pierwsze, pomijając fragmenty, które już znamy: Kurs C++ częśd II Podstawowa obsługa konsoli + zmienne. Autor: Dawid Chróścielski. Wprowadzanie i wyprowadzanie danych z/do konsoli. Jak wyprowadzad dane dowiedzieliśmy się już wcześniej (metoda cout z

Bardziej szczegółowo

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

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 M. Trzebiński C++ 1/16 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IFJ PAN 6lipca2015 Uruchomienie maszyny w CC1 M. Trzebiński C++ 2/16

Bardziej szczegółowo

Programowanie - instrukcje sterujące

Programowanie - instrukcje sterujące Instytut Informatyki Uniwersytetu Śląskiego Laborki środowisko NetBeans, tworzenie nowego projektu; okno projekty; główne okno programu; package - budowanie paczek z klas; public class JavaApplication

Bardziej szczegółowo

Algorytmy i struktury danych. Wykład 4

Algorytmy i struktury danych. Wykład 4 Wykład 4 Różne algorytmy - obliczenia 1. Obliczanie wartości wielomianu 2. Szybkie potęgowanie 3. Algorytm Euklidesa, liczby pierwsze, faktoryzacja liczby naturalnej 2017-11-24 Algorytmy i struktury danych

Bardziej szczegółowo

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

1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami 1 Wskaźniki i zmienne dynamiczne, instrukcja przed zajęciami Celem tych zajęć jest zrozumienie i oswojenie z technikami programowania przy pomocy wskaźników w języku C++. Proszę przeczytać rozdział 8.

Bardziej szczegółowo

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

Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy dopóki nam sie nie znudzi. Program 3 Program znajduje największa lub najmniejsza z podanych liczb. Liczby podajemy póki nam sie nie znudzi. #include using namespace std; int main() int odp,a,m; bool pierwsze_podanie =

Bardziej szczegółowo

WYRAŻENIA ALGEBRAICZNE

WYRAŻENIA ALGEBRAICZNE WYRAŻENIA ALGEBRAICZNE Wyrażeniem algebraicznym nazywamy wyrażenie zbudowane z liczb, liter, nawiasów oraz znaków działań, na przykład: Symbole literowe występujące w wyrażeniu algebraicznym nazywamy zmiennymi.

Bardziej szczegółowo

Zbiór liczb rzeczywistych, to zbiór wszystkich liczb - wymiernych i niewymiernych. Zbiór liczb rzeczywistych oznaczamy symbolem R.

Zbiór liczb rzeczywistych, to zbiór wszystkich liczb - wymiernych i niewymiernych. Zbiór liczb rzeczywistych oznaczamy symbolem R. Zbiór liczb rzeczywistych, to zbiór wszystkich liczb - wymiernych i niewymiernych. Zbiór liczb rzeczywistych oznaczamy symbolem R. Liczby naturalne - to liczby całkowite, dodatnie: 1,2,3,4,5,6,... Czasami

Bardziej szczegółowo

Wstęp do informatyki- wykład 11 Funkcje

Wstęp do informatyki- wykład 11 Funkcje 1 Wstęp do informatyki- wykład 11 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum

Bardziej szczegółowo

Warunki logiczne instrukcja if

Warunki logiczne instrukcja if Warunki logiczne instrukcja if Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko 1. Wejdź na stronę kółka, uruchom edytor i wpisz: use console; def test::main() { var y; y = 1; while (y

Bardziej szczegółowo

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main.

znajdowały się różne instrukcje) to tak naprawdę definicja funkcji main. Część XVI C++ Funkcje Jeśli nasz program rozrósł się już do kilkudziesięciu linijek, warto pomyśleć o jego podziale na mniejsze części. Poznajmy więc funkcje. Szybko się przekonamy, że funkcja to bardzo

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1)

JAVAScript w dokumentach HTML (1) JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript mogą być zagnieżdżane w dokumentach HTML. Instrukcje JavaScript

Bardziej szczegółowo

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

Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne 1 Wstęp do informatyki- wykład 5 Instrukcja selekcji if-else Operatory arytmetyczne i logiczne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

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

Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:

Bardziej szczegółowo

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

Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) 1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,

Bardziej szczegółowo

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. IŚ ćw.8 JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania. Skrypty JavaScript są zagnieżdżane w dokumentach HTML. Skrypt JavaScript

Bardziej szczegółowo

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem

Naukę zaczynamy od poznania interpretera. Interpreter uruchamiamy z konsoli poleceniem Moduł 1 1. Wprowadzenie do języka Python Python jest dynamicznym językiem interpretowanym. Interpretowany tzn. że kod, który napiszemy możemy natychmiast wykonać bez potrzeby tłumaczenia kodu programistycznego

Bardziej szczegółowo

I - Microsoft Visual Studio C++

I - Microsoft Visual Studio C++ I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i

Bardziej szczegółowo

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

for (inicjacja_warunkow_poczatkowych; wyrazenie_warunkowe; wyrazenie_zwiekszajace) { blok instrukcji; } Pętle Pętle (ang. loops), zwane też instrukcjami iteracyjnymi, stanowią podstawę prawie wszystkich algorytmów. Lwia część zadań wykonywanych przez programy komputerowe opiera się w całości lub częściowo

Bardziej szczegółowo

Wstęp do informatyki- wykład 9 Funkcje

Wstęp do informatyki- wykład 9 Funkcje 1 Wstęp do informatyki- wykład 9 Funkcje Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com Jerzy Grębosz, Opus magnum

Bardziej szczegółowo

Kształcenie w zakresie podstawowym. Klasa 1

Kształcenie w zakresie podstawowym. Klasa 1 Kształcenie w zakresie podstawowym. Klasa 1 Poniżej podajemy umiejętności, jakie powinien zdobyć uczeń z każdego działu, aby uzyskać poszczególne stopnie. Na ocenę dopuszczającą uczeń powinien opanować

Bardziej szczegółowo

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

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 10 Kurs C++ Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 10 Kurs C++ Historia Lata 70-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard

Bardziej szczegółowo

Rekurencja (rekursja)

Rekurencja (rekursja) Rekurencja (rekursja) Rekurencja wywołanie funkcji przez nią samą wewnątrz ciała funkcji. Rekurencja może być pośrednia funkcja jest wywoływana przez inną funkcję, wywołaną (pośrednio lub bezpośrednio)

Bardziej szczegółowo

I. Podstawy języka C powtórka

I. Podstawy języka C powtórka I. Podstawy języka C powtórka Zadanie 1. Utwórz zmienne a = 730 (typu int), b = 106 (typu long long), c = 123.45 (typu double) Wypisz następujące komunikaty: Dane sa liczby: a = 730, b = 106 i c = 123.45.

Bardziej szczegółowo

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

Podstawowe elementy proceduralne w C++ Program i wyjście. Zmienne i arytmetyka. Wskaźniki i tablice. Testy i pętle. Funkcje. Podstawowe elementy proceduralne w C++ Program i wyjście Zmienne i arytmetyka Wskaźniki i tablice Testy i pętle Funkcje Pierwszy program // Niezbędne zaklęcia przygotowawcze ;-) #include using

Bardziej szczegółowo

Konstrukcje warunkowe Pętle

Konstrukcje warunkowe Pętle * Konstrukcje warunkowe Pętle *Instrukcja if sposób na sprawdzanie warunków *Konstrukcja: if(warunek) else { instrukcje gdy warunek spełniony} {instrukcje gdy warunek NIE spełniony} * 1. Wylicz całkowity

Bardziej szczegółowo

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu. Część XIX C++ w Każda poznana do tej pory zmienna może przechowywać jedną liczbę. Jeśli zaczniemy pisać bardziej rozbudowane programy, okaże się to niewystarczające. Warto więc poznać zmienne, które mogą

Bardziej szczegółowo

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Część XXII C++ w Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie. Ćwiczenie 1 1. Utwórz nowy projekt w Dev C++ i zapisz go na

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć

Bardziej szczegółowo

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

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()

Bardziej szczegółowo

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

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia

Bardziej szczegółowo

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

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły

Bardziej szczegółowo

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz

Bardziej szczegółowo

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

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

Bardziej szczegółowo

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

Pzetestuj działanie pętli while i do...while na poniższym przykładzie: Pzetestuj działanie pętli while i do...while na poniższym przykładzie: Zadania pętla while i do...while: 1. Napisz program, który wczytuje od użytkownika liczbę całkowitą, dopóki podana liczba jest mniejsza

Bardziej szczegółowo

Język C, tablice i funkcje (laboratorium, EE1-DI)

Język C, tablice i funkcje (laboratorium, EE1-DI) Język C, tablice i funkcje (laboratorium, EE1-DI) Opracował: Tomasz Mączka (tmaczka@kia.prz.edu.pl) Wstęp (tablice) Tablica to uporządkowany ciąg elementów tego samego typu, zajmujących ciągły obszar pamięci.

Bardziej szczegółowo

Instrukcje sterujące

Instrukcje sterujące Podstawy programowania w C++ Bibliografia: Instrukcje sterujące Nauka programowania dla początkujących; A. Struzińska-Walczak / K. Walczak CPA: PROGRAMMING ESSENTIALS IN C++ https://www.netacad.com Opracował:

Bardziej szczegółowo

PROGRAMOWANIE W C++ ZADANIA

PROGRAMOWANIE W C++ ZADANIA PROGRAMOWANIE W C++ ZADANIA Włodzimierz Gajda Rozdział 7 PĘTLE 7.1 PĘTLA FOR: rysowanie wzorków. ZADANIE 7.1.1 Napisz program drukujący na ekranie 19 gwiazdek: ******************* ZADANIE 7.1.2 Napisz

Bardziej szczegółowo

Warsztaty dla nauczycieli

Warsztaty dla nauczycieli WPROWADZENIE Wyprowadzanie danych: Wyprowadzanie na ekran komunikatów i wyników umożliwia instrukcja wyjścia funkcja print(). Argumentami funkcji (podanymi w nawiasach) mogą być teksty, wyrażenia arytmetyczne

Bardziej szczegółowo

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE 1. Proste typy danych- ciąg dalszy 2. Typy złożone danych : TABLICE Wykład 3 ZMIENNE PROSTE: TYPY WBUDOWANE Typy zmiennoprzecinkowe: float double long double Różne rozmiary bajtowe. W konsekwencji różne

Bardziej szczegółowo

Bukiety matematyczne dla gimnazjum

Bukiety matematyczne dla gimnazjum Bukiety matematyczne dla gimnazjum http://www.mat.uni.torun.pl/~kolka/ 1 X 2002 Bukiet I Dany jest prostokąt o bokach wymiernych a, b, którego obwód O i pole P są całkowite. 1. Sprawdź, że zachodzi równość

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 8 Agata Półrola Wydział Matematyki i Informatyki UŁ semestr zimowy 2018/2019 Podprogramy Czasami wygodnie jest wyodrębnić jakiś fragment programu jako pewną odrębną całość umożliwiają to podprogramy.

Bardziej szczegółowo

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

Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów

Bardziej szczegółowo

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p.

Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy. Laboratorium 2. Karol Tarnowski A-1 p. Wstęp do programowania INP003203L rok akademicki 2018/19 semestr zimowy Laboratorium 2 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Komentarze Funkcja printf() Zmienne Łańcuchy

Bardziej szczegółowo

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

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Zajęcia nr 1 Podstawy programowania dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Ramowy program warsztatów 1. Pierwsze: Podstawy programowania 2. Drugie:

Bardziej szczegółowo

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2

Wprowadzania liczb. Aby uniknąć wprowadzania ułamka jako daty, należy poprzedzać ułamki cyfrą 0 (zero); np.: wpisać 0 1/2 Wprowadzania liczb Liczby wpisywane w komórce są wartościami stałymi. W Excel'u liczba może zawierać tylko następujące znaki: 0 1 2 3 4 5 6 7 8 9 + - ( ), / $ %. E e Excel ignoruje znaki plus (+) umieszczone

Bardziej szczegółowo

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

W przeciwnym wypadku wykonaj instrukcję z bloku drugiego. Ćwiczenie 1 utworzyć program dzielący przez siebie dwie liczby Część XI C++ W folderze nazwisko36 program za każdym razem sprawdza oba warunki co niepotrzebnie obciąża procesor. Ten problem można rozwiązać stosując instrukcje if...else Instrukcja if wykonuje polecenie

Bardziej szczegółowo

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

Warto też w tym miejscu powiedzieć, że w C zero jest rozpoznawane jako fałsz, a wszystkie pozostałe wartości jako prawda. Nazwa implementacji: Nauka języka C wyrażenia warunkowe if- Autor: Piotr Fiorek Opis implementacji: Poznanie struktury oraz zastosowania wyrażeń warunkowych if- w języku C. W programie realizującym jakiś

Bardziej szczegółowo

Programowanie w języku Python. Grażyna Koba

Programowanie w języku Python. Grażyna Koba Programowanie w języku Python Grażyna Koba Kilka definicji Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania wykład 5 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Zadanie o kotach z poprzedniego wykładu # include < iostream > using namespace std ; int main (){ int rozmiar_ rodzinki,

Bardziej szczegółowo

Program 14. #include <iostream> #include <ctime> using namespace std;

Program 14. #include <iostream> #include <ctime> using namespace std; Program 14 Napisać: * funkcję słuŝącą do losowego wypełniania tablicy liczbami całkowitymi z podanego zakresu (*). Parametrami funkcji mają być tablica, jej długość oraz dwie liczby stanowiące krańce przedziału

Bardziej szczegółowo

Informatyka II. Laboratorium Aplikacja okienkowa

Informatyka II. Laboratorium Aplikacja okienkowa Informatyka II Laboratorium Aplikacja okienkowa Założenia Program będzie obliczał obwód oraz pole trójkąta na podstawie podanych zmiennych. Użytkownik będzie poproszony o podanie długości boków trójkąta.

Bardziej szczegółowo

#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 ); }

#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 ); } OPERACJE WEJŚCIA / WYJŚCIA Funkcja: printf() biblioteka: wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout) int printf ( tekst_sterujący, argument_1, argument_2,... ) ;

Bardziej szczegółowo

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, Materiał

Bardziej szczegółowo

Pytania sprawdzające wiedzę z programowania C++

Pytania sprawdzające wiedzę z programowania C++ Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?

Bardziej szczegółowo

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

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5. Operatory w Javie W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach

Bardziej szczegółowo

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

Podstawy Informatyki. Kompilacja. Historia. Metalurgia, I rok. Kompilatory C++ Pierwszy program. Dyrektywy preprocesora. Darmowe: Podstawy Informatyki Metalurgia, I rok Historia Lata 0-te XX w język C (do pisania systemów operacyjnych) "The C programming language" B. Kernighan, D. Ritchie pierwszy standard Koniec lat 80 standard

Bardziej szczegółowo

IX. Wskaźniki.(3 godz.)

IX. Wskaźniki.(3 godz.) Opracowała: dr inż. Anna Dubowicka Uczelniane Centrum Komputerowe PK IX. Wskaźniki.(3 godz.) Wskaźnik jest zmienną, która zawiera adres innej. 1. Definiowanie wskaźników. typ * nazwa ; gdzie: znak * informuje

Bardziej szczegółowo

Wstęp do informatyki- wykład 6

Wstęp do informatyki- wykład 6 1 Wstęp do informatyki- wykład 6 Operatory przypisania, złożone operatory przypisania, operator przecinkowy Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++.

Bardziej szczegółowo

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 3-2 5 8 12-4 -26 12 45-76 . p. 1 Algorytmem nazywa się poddający się interpretacji skończony zbiór instrukcji wykonania zadania mającego określony stan końcowy dla każdego zestawu danych wejściowych W algorytmach mogą występować

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Zadania przygotowawcze do konkursu o tytuł NAJLEPSZEGO MATEMATYKA KLAS PIERWSZYCH I DRUGICH POWIATU BOCHEŃSKIEGO rok szk. 2017/2018.

Zadania przygotowawcze do konkursu o tytuł NAJLEPSZEGO MATEMATYKA KLAS PIERWSZYCH I DRUGICH POWIATU BOCHEŃSKIEGO rok szk. 2017/2018. Zadania przygotowawcze do konkursu o tytuł NAJLEPSZEGO MATEMATYKA KLAS PIERWSZYCH I DRUGICH POWIATU BOCHEŃSKIEGO rok szk. 017/018 19 grudnia 017 1 1 Klasy pierwsze - poziom podstawowy 1. Dane są zbiory

Bardziej szczegółowo

Metody numeryczne Laboratorium 2

Metody numeryczne Laboratorium 2 Metody numeryczne Laboratorium 2 1. Tworzenie i uruchamianie skryptów Środowisko MATLAB/GNU Octave daje nam możliwość tworzenia skryptów czyli zapisywania grup poleceń czy funkcji w osobnym pliku i uruchamiania

Bardziej szczegółowo

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a Funkcja kwadratowa. Funkcją kwadratową nazywamy funkcję f : R R określoną wzorem gdzie a, b, c R, a 0. f(x) = ax + bx + c, Szczególnym przypadkiem funkcji kwadratowej jest funkcja f(x) = ax, a R \ {0}.

Bardziej szczegółowo