Wstęp do Informatyki

Podobne dokumenty
Wstęp do Informatyki

Podstawy Informatyki

FUNKCJA REKURENCYJNA. function s(n:integer):integer; begin if (n>1) then s:=n*s(n-1); else s:=1; end;

Języki i metody programowania

1. Liczby wymierne. x dla x 0 (wartością bezwzględną liczby nieujemnej jest ta sama liczba)

2.8. Algorytmy, schematy, programy

Warsztaty dla nauczycieli

Algorytm. a programowanie -

WHILE (wyrażenie) instrukcja;

ALGORYTMY MATEMATYCZNE Ćwiczenie 1 Na podstawie schematu blokowego pewnego algorytmu (rys 1), napisz listę kroków tego algorytmu:

WHILE (wyrażenie) instrukcja;

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

Proste programy w C++ zadania

Podstawy programowania w Pythonie

Podstawy programowania 2. Temat: Funkcje i procedury rekurencyjne. Przygotował: mgr inż. Tomasz Michno

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

Algorytm Euklidesa. Największy wspólny dzielnik dla danych dwóch liczb całkowitych to największa liczba naturalna dzieląca każdą z nich bez reszty.

Wstęp do Informatyki

if (wyrażenie ) instrukcja

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Opis problemu i przedstawienie sposobu jego rozwiązania w postaci graficznej. Gimnazjum nr 3 im. Jana Pawła II w Hrubieszowie 1

Programowanie w Baltie klasa VII

Algorytmy i struktury danych. Wykład 4

Algorytmy komputerowe. dr inŝ. Jarosław Forenc

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

Podstawowe algorytmy i ich implementacje w C. Wykład 9

1 Wprowadzenie do algorytmiki

ALGORYTMY Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

PROGRAMOWANIE W PYTHONIE OD PIERWSZYCH KROKÓW

Podstawy Programowania Algorytmy i programowanie

Wykład IV Algorytmy metody prezentacji i zapisu Rzut oka na język PASCAL

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 5. Karol Tarnowski A-1 p.

Podstawy programowania w Pythonie

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

Algorytm poprawny jednoznaczny szczegółowy uniwersalny skończoność efektywność (sprawność) zmiennych liniowy warunkowy iteracyjny

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Wstęp do programowania

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

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

Algorytm - pojęcie algorytmu, sposób zapisu, poziom szczegółowości, czynności proste i strukturalne. Pojęcie procedury i funkcji.

Zadanie 1. Potęgi (14 pkt)

Dr inż. Robert Wójcik, p. 313, C-3, tel Katedra Informatyki Technicznej (K-9) Wydział Elektroniki (W-4) Politechnika Wrocławska

Rekurencja (rekursja)

Język C zajęcia nr 5

Programowanie - wykład 4

5. Rekurencja. Przykłady

INSTRUKCJE WARUNKOWE. Zadanie nr 1. Odpowiedź. schemat blokowy

Algorytmy i Struktury Danych.

WYKŁAD 3 (13 MARZEC 2014) LICZBY CAŁKOWITE I RZECZYWISTE. Bartosz Łakomy i Dariusz Dobiesz

Algorytmy i Struktury Danych.

do instrukcja while (wyrażenie);

3. Instrukcje warunkowe

TEMAT: Podejmowanie decyzji w programie instrukcja warunkowa (IF).

Podstawy programowania w Pythonie

Podstawy Programowania C 02

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

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Luty 2001 Algorytmy (7) 2000/2001

I) Reszta z dzielenia

Wybrane zagadnienia teorii liczb

Podstawy programowania. Podstawy C# Przykłady algorytmów

Wstęp do programowania

6. Pętle while. Przykłady

INSTRUKCJE PĘTLI, INSTRUKCJA WYBORU. Instrukcja pętli For to do

W języku C dostępne są trzy instrukcje, umożliwiające tworzenie pętli: for, while oraz do. for (w1;w2;w3) instrukcja

Programowanie Proceduralne

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Instrukcje sterujące

Algorytmy w teorii liczb

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Teoria liczb. Zajmuje się własnościami liczb, wszystkim całkowitych

Warunki i sposoby realizacji podstawy programowej kształcenia ogólnego w klasie IV i VII szkoły podstawowej z informatyki.

Największy wspólny dzielnik Algorytm Euklidesa (także rozszerzony) WZAiP1: Chińskie twierdzenie o resztach

Przykładowe zadania z teorii liczb

przedmiot kilka razy, wystarczy kliknąć przycisk Wyczaruj ostatni,

Algorytmy i Struktury Danych.

Wstęp do programowania

Podstawy Informatyki

EGZAMIN MATURALNY Z INFORMATYKI

Wstęp do informatyki Ćwiczenia. Piotr Fulmański

Scenariusz lekcji. Obliczanie NWD- algorytm Euklidesa.

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 7 Algorytmy

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

EGZAMIN MATURALNY Z INFORMATYKI

Algorytmy i struktury danych

Problem W przedziale całkowitym <a,b> wyszukaj wszystkie liczby parzyste.

Projektowanie algorytmów rekurencyjnych

Teoria liczb. Magdalena Lemańska. Magdalena Lemańska,

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

Zaawansowane algorytmy i struktury danych

Algorytmy. Programowanie Proceduralne 1

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

Algorytmy i struktury danych

Algorytmy i Struktury Danych.

Wstęp do Informatyki

1. Informatyka - dyscyplina naukowa i techniczna zajmująca się przetwarzaniem informacji.

EGZAMIN MATURALNY Z INFORMATYKI. 10 maja 2017 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I

Zapisywanie w wybranej notacji algorytmów z warunkami i iteracyjnych

INSTRUKCJE ITERACYJNE

Transkrypt:

Wstęp do Informatyki dr hab. Bożena Woźna-Szcześniak, prof. AJD bwozna@gmail.com Jan Długosz University, Poland Wykład 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 1 / 32

Instrukcje iteracyjne (z powtórzeniami) Spotykamy się często z takim sytuacjami, w których musimy wykonywać pewna czynność aż do momentu, gdy odniesiemy sukces, np. zrób dziesięć pompek; będziesz tak długo czytać wiersz, aż nauczysz się go na pamięć; dopóki będziesz siedzieć cicho, nie zapytam cię. Z tego wynika, że możemy spotkać się z dwoma sytuacjami: gdy musimy wykonać czynność badź zadana ilość razy, badź do momentu spełnienia warunku. Zatem powtarzanie różnych działań ma dwojaka postać: liczba powtórzeń jest z góry określona (przed rozpoczęciem cyklu). liczba powtórzeń jest nieznana (zależy od spełnienia pewnego warunku). Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 2 / 32

Schemat blokowy - druk liczb z zakresu 1... 9. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 3 / 32

Pseudokod - druk liczb z zakresu 1... 9 write("liczby z zakresu 1..9"); i:= 1; while (i <= 9) do write(i); i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 4 / 32

Python - druk liczb z zakresu 1... 9 #!/usr/bin/env python3 print("liczby z zakresu 1..9") i = 1 while i<=9: print(i) i=i+1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 5 / 32

Python - druk liczb z zakresu 1... 9 #!/usr/bin/env python3 def zakres (): print("liczby z zakresu 1..9") i = 1 while i<=9: print(i) i=i+1 def main(): zakres() main() Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 6 / 32

Schemat blokowy - druk liczb z zakresu 1... n. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 7 / 32

Pseudokod - druk liczb z zakresu 1... n. write("liczby z zakresu 1..n"); write("podaj liczbe n = "); read (n); i:= 1; while (i <= n) do write(i); i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 8 / 32

Python - druk liczb z zakresu 1... n #!/usr/bin/env python3 n = int(input("podaj liczbę całkowitą: ")) print("liczby z zakresu 1..",n) i = 1 while i<=n: print(i) i=i+1 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 9 / 32

Python - druk liczb z zakresu 1... n #!/usr/bin/env python3 def zakres (n): i = 1 while i<=n: print(i) i=i+1 def main(): n = int(input("podaj liczbę całkowitą: ")) print("liczby z zakresu 1..",n) zakres(n) main() Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 10 / 32

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego wspólnego dzielnika (NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) = 5, NWD(22,24) = 2. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 32

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego wspólnego dzielnika (NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) = 5, NWD(22,24) = 2. Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 32

Lista kroków - algorytm Euklidesa Algorytm Euklidesa: Algorytm ten jest najstarszym algorytmem (ma ponad 2000 lat) i przeznaczony jest do znajdowania największego wspólnego dzielnika (NWD) dla dwóch liczb naturalnych, tj. NWD(5,25) = 5, NWD(15,25) = 5, NWD(22,24) = 2. Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 11 / 32

Lista kroków - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 12 / 32

Lista kroków - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) Krok 0: Rozpocznij algorytm. Krok 1: Wprowadź wartości dla liczb a i b. Krok 2: Oblicz c jako resztę z dzielenia a przez b. Krok 3: Zastap a przez b, zaś b przez c. Krok 4: Jeżeli b = 0, to szukane NWD(a, b) wynosi a, w przeciwnym wypadku przejdź do 2. Krok 5: Wyprowadź wynik: NWD(a, b). Krok 4: Zakończ algorytm. Przykład obliczenia NWD(1000, 32): 1 a = 1000, b = 32, c = 1000 mod 32 = 8 2 a = 32, b = 8, c= 32 mod 8 = 0 3 a = 8, b = 0 = NWD(1000, 32) = 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 12 / 32

Schemat blokowy - algorytm Euklidesa Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 13 / 32

Pseudokod - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) write("podaj dwie liczby naturalne"); read(a,b); while (b!= 0) do {reszta z dzielenia a przez b } c := a mod b; a := b; b := c end NWD := a write(nwd); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 14 / 32

Python - algorytm Euklidesa #!/usr/bin/env python3 a = int(input("podaj liczbę całkowitą: ")) b = int(input("podaj liczbę całkowitą: ")) print("nwd(",a,",",b,") = ") while b!=0: c = a % b a = b b = c print(a) Przykładowe wykonanie: Podaj liczbę całkowitą: 1000 Podaj liczbę całkowitą: 32 NWD( 1000, 32 ) = 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 15 / 32

Pseudokod - algorytm Euklidesa Dane: dowolne dwie liczby naturalne a i b. Wynik: NWD(a, b) write("podaj dwie liczby naturalne"); read(a,b); while (a!= b) do if (a < b) b:=b-a; else a:=a-b; end NWD := a write(nwd); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 16 / 32

Python - algorytm Euklidesa #!/usr/bin/env python3 a = int(input("podaj liczbę całkowitą: ")) b = int(input("podaj liczbę całkowitą: ")) print("nwd(",a,",",b,") = ") while a!=b: if (a < b): b = b - a else: a = a - b print(a) Przykładowe wykonanie: Podaj liczbę całkowitą: 1000 Podaj liczbę całkowitą: 32 NWD( 1000, 32 ) = 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 17 / 32

Python - algorytm Euklidesa #!/usr/bin/env python3 def main(): a = int(input("podaj liczbę całkowitą: ")) b = int(input("podaj liczbę całkowitą: ")) print("nwd(",a,",",b,") = ") while a!=b: if (a < b): b = b - a else: a = a - b print(a) main() Przykładowe wykonanie: Podaj liczbę całkowitą: 1000 Podaj liczbę całkowitą: 32 NWD( 1000, 32 ) = 8 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 18 / 32

Python - algorytm Euklidesa #!/usr/bin/env python3 def nwd (a,b): while a!=b: if (a < b): b = b - a else: a = a - b return a def main(): a = int(input("podaj liczbę całkowitą: ")) b = int(input("podaj liczbę całkowitą: ")) c = nwd(a,b) print("nwd(",a,",",b,") = ",c) main() Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 19 / 32

Liczby trójkatne Nazwa liczby trójkatne pochodzi stad, że każda taka liczba o numerze n jest liczba np. kół jednakowej wielkości, z których można ułożyć trójkat równoboczny o boku zbudowanym z n kół. Liczby trójkatne to liczby postaci: t n = n (n + 1) 2 gdzie n jest liczba naturalna. = 1 + 2 + 3 +... + n Przykłady liczb trójkatnych: t 1 = 1, t 2 = 3, t 3 = 6, t 4 = 10. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 20 / 32

Schemat blokowy - obliczanie sumy suma = n i=1 i. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 21 / 32

Pseudokod - obliczanie sumy suma = n i=1 i. write("podaj liczbe n = "); read (n); i:= 1; suma := 0; while (i <= n) do suma := suma + i; i := i+1; end; end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 22 / 32

Python - obliczanie sumy suma = n i=1 i. #!/usr/bin/env python3 def suma (n): i = 1 suma = 0 while i<=n: suma = suma + i i = i + 1 return suma def main(): n = int(input("podaj liczbę całkowitą: ")) c = suma(n) print("suma od 1 do ",n," = ",c) main() Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 23 / 32

Python - obliczanie sumy suma = n i=1 i. #!/usr/bin/env python3 def suma (n): i = 1 suma = 0 while i<=n: suma += i i = i+1 return suma def main(): n = int(input("podaj liczbę całkowitą: ")) print("suma od 1 do ",n," = ",suma(n)) main() Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 24 / 32

Schemat blokowy - funkcja silnia n! = 1 2... n Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 25 / 32

Pseudokod - funkcja silnia n! = 1 2... n. write("podaj liczbe n = "); read (n); i:= 1; silnia := 1; while (i <= n) do silnia := silnia * i; i := i+1; end; write(silnia); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 26 / 32

Suma n liczb wprowadzonych z klawiatury Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 27 / 32

Suma n liczb wprowadzonych z klawiatury write("podaj liczbe n = "); read (n); i:= 1; suma := 0; while (i <= n) do write("podaj liczbe: "); read (a); suma := suma + a; i := i+1; end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 28 / 32

Suma ciagu liczb wprowadzonego z klawiatury i zakończonego zerem Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 29 / 32

Suma ciagu liczb wprowadzonego z klawiatury i zakończonego zerem write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 30 / 32

Suma ciagu liczb parzystych wprowadzonego z klawiatury i zakończonego zerem write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do if (a mod 2 = 0) then suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 31 / 32

Suma ciagu liczb podzielnych przez 5, wprowadzonego z klawiatury i zakończonego zerem write("podaj liczbe: "); read (a); suma := 0; while (a!= 0) do if (a mod 5 = 0) then suma := suma + a; write("podaj liczbe: "); read (a); end; write(suma); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 32 / 32

Iloczyn ciagu liczb nieujemnych, wprowadzonego z klawiatury i zakończonego zerem write("podaj liczbe: "); read (a); iloczyn := 1; while (a!= 0) do if (a > 0) then iloczyn := iloczyn * a; write("podaj liczbe: "); read (a); end; write(iloczyn); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 33 / 32

Iloczyn ciagu liczb nieujemnych, parzystych, wprowadzonego z klawiatury i zakończonego zerem write("podaj liczbe: "); read (a); iloczyn := 1; while (a!= 0) do if ((a > 0) and (a mod 2 = 0)) then iloczyn := iloczyn * a; write("podaj liczbe: "); read (a); end; write(iloczyn); end. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 34 / 32

Wybór algorytmu Reguła jest, że należy implementować najprostsze algorytmy, które wykonuja określone zadanie. Prosty algorytm to: łatwiejsza implementacja, czytelniejszy kod, łatwość testowania łatwość pisania dokumentacji,... Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 35 / 32

Zadania Skonstruuj schemat blokowy do następujacego zadania: 1 Wprowadź dwie liczby a i b. Skonstruuj algorytm porównania tych liczb i wyprowadzania na wyjściu większej z nich. W przypadku liczb równych wyprowadź napis liczby równe. 2 Sprawdzić czy dana liczba dzieli się przez 3. 3 Sprawdzić czy suma dwóch liczb podanych przez użytkownika jest parzysta. 4 Zamienić dana liczne w systemie o podstawie n, na liczbę w systemie o podstawie m; 5 Dane sa liczby dwa pojemniki A i B. W pojemniku A znajduje się ser, a w pojemniku B mak. Zaprojektuj algorytm, który przeniesie ser do pojemnika B, a mak do pojemnika A. Pamiętaj jednak o tym, ze nigdy nie może być tak, że ser i mak znajda się w tym samym pojemniku. Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 8 36 / 32