Kontrola przebiegu programu

Podobne dokumenty
Wstęp do programowania

Instrukcja wyboru, pętle. 2 wykład. Podstawy programowania - Paskal

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

Instrukcje sterujące. Programowanie Proceduralne 1

Programowanie - wykład 4

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

Wstęp do programowania

PODSTAWY INFORMATYKI 1 PRACOWNIA NR 6

Wstęp do programowania

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

Opis zagadnieo 1-3. Iteracja, rekurencja i ich realizacja

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

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

Instrukcje sterujące

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

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

Informatyka I. Wykład 3. Sterowanie wykonaniem programu. Instrukcje warunkowe Instrukcje pętli. Dr inż. Andrzej Czerepicki

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Podstawy programowania. Wykład Pętle. Tablice. Krzysztof Banaś Podstawy programowania 1

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

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

Struktura pliku projektu Console Application

Instrukcje sterujące. wer. 11 z drobnymi modyfikacjami! Wojciech Myszka :53:

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

Język C zajęcia nr 5

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Języki programowania - podstawy

Język C część 2. Podejmowanie decyzji w programie. if else. switch

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

Język ludzki kod maszynowy

Programowanie Obiektowe i C++

Podstawy Programowania C++

Wstęp do Informatyki

Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;

Podstawy programowania w języku C

Pętla for. Wynik działania programu:

typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury

Wstęp do informatyki- wykład 6

Programowanie komputerowe. Zajęcia 1

Wstęp do programowania

Programowanie komputerowe. Zajęcia 3

Programowanie proceduralne w języku C++ Pętle, tablice

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

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Java Podstawy. Michał Bereta

Wstęp do informatyki- wykład 7

1 Podstawy c++ w pigułce.

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

1 Podstawy c++ w pigułce.

Podstawy programowania. Wykład: 4. Instrukcje sterujące, operatory. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania

Liczby całkowite i rzeczywiste

Wstęp do programowania

Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy

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

Podstawy programowania obiektowego

tablica: dane_liczbowe

Wykład II PASCAL - podstawy składni i zmienne, - instrukcje wyboru, - iteracja, - liczby losowe

Konstrukcje warunkowe Pętle

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

Język C, instrukcje sterujące (laboratorium)

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

a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10]

Wstęp do programowania

while (test) instrukcja; int i=0; while (i<10) i++; dopóki test prawdziwy wykonuj instrukcję Wykonano: 35% / \ fałsz test prawda instrukcja

WHILE (wyrażenie) instrukcja;

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

WHILE (wyrażenie) instrukcja;

Języki C i C++ Wykład: 2. Wstęp Instrukcje sterujące. dr Artur Bartoszewski - Języki C i C++, sem. 1I- WYKŁAD

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.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

Języki skryptowe w programie Plans

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

Programowanie Proceduralne

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

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Część 4 życie programu

dr inż. Jarosław Forenc

Ćwiczenie 4 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz

wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis

12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.

Podstawowe elementy programowania strukturalnego. Wbudowane typy danych w C++

Języki programowania obiektowego Nieobiektowe elementy języka C++

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

Iteracje. Algorytm z iteracją to taki, w którym trzeba wielokrotnie powtarzać instrukcję, aby warunek został spełniony.

Prof. Danuta Makowiec Instytut Fizyki Teoretycznej i Astrofizyki pok. 353, tel danuta.makowiec at gmail.com

Programowanie, algorytmy i struktury danych

Programowanie i struktury danych

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Pytania z języka C/C++ main dyrektywy preprocesora #include 15. #define 16. #define słowa zastrzeżone \n, \t, \f 26.

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Podstawy Informatyki

WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński

Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne

1,3,4,2,3,4,0,1,4,5,0. Wówczas największa suma trzech kolejnych liczb (zaznaczone na czerwono) wynosi:

np. dla p=1 mamy T1(N) N/2 średni czas chybionego wyszukiwania z prawdopodobieństwem q:

Transkrypt:

Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki

PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem danego n Max2Podzielnik(n; m): Jeśli n mod 2 == 1 to 0 inaczej Max2Podzielnik(n/2 ; m ): m = 1 +m W języku C++: int Max2Podzielnik( int n) { if (n%2 == 1) return 0; else return 1+Max2Podzielnik(n/2); 2013-03-25 2

Instrukcje sterujące Sterowanie przebiegiem programu : Fakt z teorii programowania programowanie strukturalne Wszystkie obliczenia można wyrazić jako: (1)ciąg zdań, (2)decyzje (3) powtórzenia!!!! podejmowanie decyzji, selekcja Pętla: powtórzenia, pętle rozgałęzienia kontrolowane powtarzanie instrukcji while (<warunek>) <polecenie> do <polecenie> while (<warunek>) for ( <init>; <warunek> ; <iteracja>) <polecenie> 3

Pętla FOR 1. 2. 3. 1. 2. 3. 4

Zadanie: odwróć kolejność znaków w zadanym łańcuchu Pętla for :przykład Dane: łańcuch znaków s Wynik: łańcuch znaków s z odwróconą kolejnością elementów i=dlugosc(s) -1 j=0 dopóki (i>j) wykonuj znak=s[i] s[i]=s[j] s[j]=znak i =i-1 j=j+1 5

Rozwiązanie najprostsze referencja cpp c 6

Pętle: składnia 7

Instrukcje sterujące Sterowanie przebiegiem programu : Fakt z teorii programowania programowanie strukturalne Wszystkie obliczenia można wyrazić jako: (1)ciąg zdań, (2)decyzje (3) powtórzenia!!!! podejmowanie decyzji, selekcja powtórzenia, pętle rozgałęzienia (1) while (<warunek>) <polecenie> (2) do <polecenie> while (<warunek>) (3) for ( <init>; <warunek> ; <iteracja>) <polecenie> 8

Przykład Zadanie: Znajdź wśród zadanych liczb liczbę nieparzystą, której suma cyfr jest 7. Zakładamy, że liczba jest dwucyfrowa. Dane: tablica A[N] zadanych liczb Wynik: liczba z tablicy, która jest nieparzysta a suma jej cyfr jest 7 int znajdz( int *liczby, int N) { int i; for (i = 0; i < N; ++i) { int dig1, dig2; if (liczby[i]%2 == 0) continue; // pomiń resztę pętli dig2 = liczby[i]%10; dig1 = liczby[i]/10; if (dig1 + dig2 == 7) break; // zakończ pętle return liczby[i]; 9

Dziwne użycie pętli? Puste warunki z założenia są spełnione for(;i<30;) { I++; //do something Zadanie domowe: Które z tych pętli są sobie równoważne? 10

Instrukcje sterujące Sterowanie przebiegiem programu : programowanie strukturalne podejmowanie decyzji, selekcja (1) if (2) If else (3) switch powtórzenia, pętle rozgałęzienia 11

IF ELSE Ifelse pozwala wykonywać jedną z dwóch instrukcji( bloku instrukcji). Dołączając kolejne instrukcje if else, obsługujemy więcej możliwości wyboru. 12

IF ELSE false test_expr _1 true false 13

Przykład: if else Zadanie: Pobrać wiek klienta i skomentować go następująco: jeśli wiek <20 to wyświetlić mlodziak z Ciebie! jeśli 20 <= wiek <40 to wyświetlić " jestes juz dorosly! jeśli 40 <= wiek <60 to wyświetlić "to masz bole i zgryzoty! jeśli 60 <= wiek <80 to wyświetlić "brawo: osiagnales wiek zloty!"; Natomiast jeśli wiek >80 to poprosić o potwierdzenie. Pierwszy test Drugi test Test złożony: konuinkcja warunków if (wiek < 20) cout<< " mlodziak z Ciebie!"; else if (wiek < 40) cout <<" jestes juz dorosly! "; else if (wiek < 60) cout<<"to masz bole i zgryzoty!"; else if (wiek < 80) cout <<"brawo: osiagnales wiek zloty!"; else { char naprawde; cout <<"naprawde masz " << wiek <<" (T/t)?\n"; cin>> naprawde; if (naprawde == 'T' naprawde == 't') cout << " to gratulacje!"; else cout<<"wiedzialam, ze nie jestes taki stary!"; 14

Ogólna postac wyrażenia switch #include <iostream> using namespace std; int main(){ int wiek; char naprawde; cout <<"Podaj swoj wiek: "; cin >> wiek; switch switch(wyrażenie_o_wartościach_calkowitych) { case etykieta1: instrukcja1; break; case etykieta2: instrukcja2; break; default: intstrukcja 3; switch(wiek/20){ case 0: cout<< " mlodziak z Ciebie!"; break; case 1: cout <<" jestes juz dorosly! "; break; case 2: cout<<"to masz bole i zgryzoty!"; break; case 3: cout << "brawo: osiagnales wiek zloty!"; break; default: cout <<"naprowde masz " << wiek <<" (T/t)?\n"; cin>> naprawde; if (naprawde == 'T' naprawde == 't') cout << " to gratulacje!"; else cout<<"wiedzialam, ze nie jestes taki stary!"; return 0; wiek_2.cpp 15

Instrukcje sterujące Sterowanie przebiegiem programu : Fakt z teorii programowania programowanie strukturalne podejmowanie decyzji, selekcja powtórzenia, pętle Wszystkie obliczenia można wyrazić jako: (1)ciąg zdań, (2)decyzje (3) powtórzenia!!!! (1) while (<warunek>) <polecenie> (1) if (2) If else (3) switch break continue goto rozgałęzienia (2) do <polecenie> while (<warunek>) (3) for ( <init>; <warunek> ; <iteracja>) <polecenie> goto 16

Przykład użycia goto char ch; Cin >> ch; if (ch == P ) goto paryz; cout <<.. Skok do etykiety paryz. paryz: cout << Witaj w Paryzu! ; Uważa się, że użycie instrukcji skoku goto jest nieeleganckim rozwiązaniem 17

o wydajności programu decydują pętle Zadanie: Zaproponuj algorytm wyznaczający pozycje zadanej wartości w tablicy liczb uporządkowanych rosnąco Rozwiązanie 1: Dane: tab[n] tablica N liczb całkowitych uporządkowanych rosnąco szukaj poszukiwana wartość Wynik: gdzie = -1 jeśli w tablicy nie ma poszukiwanej wartości = pozycja w tablicy jeśli w tablicy dana wartość występuje. Zmienna pomocnicza: k Złożoność obliczeniowa algorytmu: N* ( czas wykonania 1 testu) = O(N) 18

Przykład: #include <iostream> using namespace std; int szukaj( int tab[], int, int ); int main(){ const int rozmiar=8; int tablica[rozmiar]={ 2,5,6,7,12,13,15,21; int szukam, czy_jest=0, gdzie=-1; cout << "podaj liczbe do wyszukania "; cin >> szukam; gdzie=szukaj( tablica,rozmiar-1, szukam); if ( gdzie >-1 ) cout <<"\nliczba "<< szukam << " to tab[ " << gdzie <<" ]" ; else cout<< "\n nie ma podanej liczby w tablicy" ; return 0; int szukaj ( int tab[], int N, int szukam){ int k ; for (k=0; k<n ; ++k) if ( tab[k] == szukam) break; return (k==n)? -1: k ; 19

Przykład: Zadanie: Zaproponuj algorytm wyznaczający pozycje zadanej wartości w tablicy liczb uporządkowanych rosnąco Rozwiązanie 2: Szukaj_Bin(szukaj, tab[n], start, koniec; gdzie) Jeśli( start >= koniec) to jeśli ( szukaj== tab[start] ) to gdzie = start inaczej gdzie = -1 inaczej srodek= ( start+koniec)/2 jeśli ( szukaj== tab[srodek] ) to gdzie = srodek inaczej jeśli ( szukaj < tab[srodek] ) to Szukaj_Bin(szukaj, tab[n], start, srodek-1;gdzie ) gdzie = gdzie inaczej Szukaj_Bin(szukaj, tab[n], srodek+1, koniec; gdzie ) gdzie = gdzie Złożoność obliczeniowa: O(log 2 N) 20

Przykład: int szukaj_bin ( int tab[], int start, int koniec, int szukam){ int srodek; if ( start >= koniec) return ( szukam == tab[start] )? start: -1; else { srodek=(koniec+start)/2; if ( szukam == tab[srodek]) return srodek; else if (szukam <tab[srodek]) return szukaj_bin(tab, start, srodek-1,szukam); else return szukaj_bin( tab, srodek+1, koniec, szukam); szukaj_bin.cpp 21