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

Podobne dokumenty
Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Warsztaty dla nauczycieli

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

ALGORYTMY I STRUKTURY DANYCH

Zaawansowane algorytmy i struktury danych

Programowanie dynamiczne

Rekurencja (rekursja)

1 Wprowadzenie do algorytmiki

WHILE (wyrażenie) instrukcja;

Laboratorium nr 1. i 2.

do instrukcja while(wyrażenie);

Programowanie - wykład 4

WHILE (wyrażenie) instrukcja;

Wstęp do Informatyki

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

Informatyka A. Algorytmy

PRÓBNY EGZAMIN MATURALNY Z INFORMATYKI STYCZEŃ Arkusz I. Czas pracy: 60 minut Liczba punktów do uzyskania: 15

Podstawowe I/O Liczby

Macierze. Rozdział Działania na macierzach

Ćwiczenie 1. Wprowadzenie do programu Octave

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

EGZAMIN MATURALNY Z INFORMATYKI 19 MAJA 2015 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 9:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Wykład 2. Poprawność algorytmów

Wyznaczniki. Mirosław Sobolewski. Wydział Matematyki, Informatyki i Mechaniki UW. 6. Wykład z algebry liniowej Warszawa, listopad 2013

EGZAMIN MATURALNY Z INFORMATYKI 19 MAJA 2015 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 9:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Tablice mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Spis treści JĘZYK C - PRZEKAZYWANIE PARAMETRÓW DO FUNKCJI, REKURENCJA. Informatyka 1. Instrukcja do pracowni specjalistycznej z przedmiotu

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

Elementy metod numerycznych - zajęcia 9

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Podstawy programowania funkcjonalnego

do MATLABa programowanie WYKŁAD Piotr Ciskowski

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Wieczorowe Studia Licencjackie Wrocław, Wykład nr 6 (w oparciu o notatki K. Lorysia, z modyfikacjami) Sito Eratostenesa

Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:

JAVAScript w dokumentach HTML (2)

Ćwiczenie 1. Wprowadzenie do programu Octave

Metody Metody, parametry, zwracanie wartości

Typy sparametryzowane

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

Instrukcje pętli przykłady. Odgadywanie hasła. 1) Program pyta o hasło i podaje adres, gdy hasło poprawne lub komunikat o błędnym haśle.

Rekurencja, schemat rekursji i funkcje pierwotnie rekurencyjne

Zapis algorytmów: schematy blokowe i pseudokod 1

Proste programy w C++ zadania

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Technologie informacyjne Wykład VII-IX

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

Ilość cyfr liczby naturalnej

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.

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

Wstęp do Programowania potok funkcyjny

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

15. Macierze. Definicja Macierzy. Definicja Delty Kroneckera. Definicja Macierzy Kwadratowej. Definicja Macierzy Jednostkowej

Lekcja 6: Pascal. Procedura i funkcja

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Wykład III PASCAL - iteracja cz, 2, - liczby losowe, - tablice

Analiza matematyczna i algebra liniowa Macierze

Macierze - obliczanie wyznacznika macierzy z użyciem permutacji

Funkcje i tablice. Elwira Wachowicz. 23 maja 2013

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

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

Konstrukcje warunkowe Pętle

Instrukcje sterujące

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Java Podstawy. Michał Bereta

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

PROGRAMOWANIE W C++ ZADANIA

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Przetwarzanie sygnałów

Złożoność obliczeniowa zadania, zestaw 2

Wykład 6. Wyszukiwanie wzorca w tekście

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

Scenariusz lekcji. Scenariusz lekcji 1 TEMAT LEKCJI: 2 CELE: 2.1 Wiadomości: 2.2 Umiejętności: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE

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

Podprogramy. Procedury

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Lab 10. Funkcje w argumentach funkcji metoda Newtona. Synonimy nazw typów danych. Struktury. Tablice struktur.

Informatyka 1. Plan dzisiejszych zajęć. zajęcia nr 1. Elektrotechnika, semestr II rok akademicki 2008/2009

Metody i analiza danych

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Ekoenergetyka Matematyka 1. Wykład 3.

do instrukcja while (wyrażenie);

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

Palindromy. Przykładowe rozwiązanie

Obliczenia iteracyjne

Elementy języka C. ACprogramislikeafastdanceonanewlywaxeddancefloorbypeople carrying razors.

Wykład 5. Metoda eliminacji Gaussa

Podstawy informatyki I r.

Rozdział 5. Macierze. a 11 a a 1m a 21 a a 2m... a n1 a n2... a nm

Algorytmy i Struktury Danych, 2. ćwiczenia

Podstawy Programowania Algorytmy i programowanie

6. Pętle while. Przykłady

Operacje na wektorach i macierzach.

1 Powtórzenie wiadomości

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

Zadanie 1. Potęgi (14 pkt)

Podstawy Programowania C 02

EGZAMIN MATURALNY Z INFORMATYKI WYBRANE: ... (system operacyjny) ... (program użytkowy) ... (środowisko programistyczne)

Transkrypt:

Wstęp do informatyki Ćwiczenia Piotr Fulmański

Piotr Fulmański 1 e-mail 1: fulmanp@math.uni.lodz.pl Wydział Matematyki i Informatyki, Uniwersytet Łódzki Banacha 22, 90-238, Łódź Polska Data ostaniej modyfikacji: 30 listopada 2007

Spis treści Spis treści 3 1 Algorytmy 5 1.1 Funkcja.............................. 6 1.1.1 Rozwiązanie (pseudokod)................ 6 1.2 Sumowanie wyrazów....................... 7 1.2.1 Rozwiązanie (pseudokod)................ 7 1.3 Średnia.............................. 8 1.3.1 Rozwiązanie (pseudokod)................ 8 1.4 Macierz.............................. 9 1.4.1 Rozwiązanie (pseudokod)................ 9 1.5 Macierz.............................. 10 1.5.1 Rozwiązanie (pseudokod) (wersja 1).......... 10 1.5.2 Rozwiązanie (pseudokod) (wersja 2).......... 10 1.6 Macierz.............................. 12 1.6.1 Rozwiązanie (pseudokod)................ 12 1.7 Potęga iteracyjnie........................ 13 1.7.1 Rozwiązanie (pseudokod)................ 13 1.8 Potęga rekurencyjnie....................... 14 1.8.1 Rozwiązanie (pseudokod)................ 14 1.9 Selectionsort........................... 15 1.9.1 Rozwiązanie (przebieg wykonania)........... 16 1.9.2 Rozwiązanie (schemat blokowy)............. 16

4 SPIS TREŚCI

Rozdział 1 Algorytmy W tej części zestawu ćwiczeń chcemy zaprezentować serię zadań związanych z zapisywaniem algorytmu, przechodzeniem od jednej postaci do drugiej (np. od pseudokodu do schematu blokowego) oraz śledzeniem sposobu jego wykonania.

6 Algorytmy 1.1 Funkcja Niech dana będzie funkcja określona w następujący sposób 2x dla x 5, f(x) = x dla x ( 5, 5], 2x dla x 6. (1.1) Napisz program (funkcję) zwracający odpowiednią wartość funkcji f(x) dla zadanego jako argument funkcji x. Zauważmy, że bardzo problematyczne w tym zadaniu jest zachowanie funkcji dla x (5, 6). Można od biedy dla takich argumentów zwrócić wartość, której funkcja nigdy nie przyjmuje jednak nie jest to najlepsze rozwiązanie. W praktyce należałoby albo zastosować mechanizm wyjątków, albo zadbać o to, że użytkownik nie wywoła funkcji ze złym argumentem. I właśnie to ostatnie założenie (inteligentnego zachowania użytkownika) przyjmiemy, choć jest ono całkowicie sprzeczne z praktyką. Dzięki takiemu założeniu kod staje się czytelniejszy a pamiętajmy, że rolą tego rozdziału jest jedynie ćwiczenie umiejętności poprawnego zapisywania i posługiwania się algorytmem. Zwracamy uwagę na słowo: poprawnego!!!. 1.1.1 Rozwiązanie (pseudokod) function GetValue(x) if (x<=-5) then v:=2*x; else if ((x>-5) AND (x<=5)) then v:=x; eles if ((x>=6)) then v:=-2*x; return v;

1.2 Sumowanie wyrazów 7 1.2 Sumowanie wyrazów Proszę napisać program wczytujący maksymalnie n liczb i obliczający ich sumę. Jeśli jedną z podanych liczb będzie 0 algorytm powinien się zakończyć. 1.2.1 Rozwiązanie (pseudokod) function Sum(n) s:=0; for i:=1 to n step 1 a:=read(); if (a==0) then break; s:=s+a; return s;

8 Algorytmy 1.3 Średnia Proszę napisać program wczytujący liczby tak długo jak ich suma nie przekroczy wartości 100. Po przekroczeniu wartości 100 program powinien zwrócić średnią arytmetyczną wprowadzonych liczb. 1.3.1 Rozwiązanie (pseudokod) function Sum(n) s:=0; c:=0; while (s<=100) a:=read(); s:=s+a; c:=c+1; return (s/c);

1.4 Macierz 9 1.4 Macierz Proszę napisać program wypisujący zawartość macierzy kwadratowej o wymiarze nxn kolumnami od pierwszego wiersza do ostatniego. Przykład input: n:=3 1 2 3 M:= 4 5 6 7 8 9 output: 1 4 7 2 5 8 3 6 9 1.4.1 Rozwiązanie (pseudokod) function PrintMatrix(M,n) for i:=1 to n step 1 for j:=1 to n step 1 Print(M[i][j]);

10 Algorytmy 1.5 Macierz Proszę napisać program kopiujący dane z macierzy do tablicy jednowymiarowej o wymiarze 1 n n. Dane powinny być kopiowane kolumnami. Przykład input: n:=3 1 2 3 M:= 4 5 6 7 8 9 S result: S=[1 4 7 2 5 8 3 6 9] 1.5.1 Rozwiązanie (pseudokod) (wersja 1) function MatrixToSequence(M,n,S) for i:=1 to n step 1 for j:=1 to n step 1 S[j+(i-1)*n]:=M[j][i]; return S; 1.5.2 Rozwiązanie (pseudokod) (wersja 2) function MatrixToSequence(M,n,S) c=1; for i:=1 to n step 1 for j:=1 to n step 1 S[c]:=M[j][i];

1.5 Macierz 11 c=c+1; return S;

12 Algorytmy 1.6 Macierz Proszę napisać program kopiujący dane z tablicy jednowymiarowej o wymiarze 1 n n do macierzy o wymiarze n n. Dane powinny wypełniać macierz kolumnami. Przykład input: n:=3 M S=[1 4 7 2 5 8 3 6 9] result: 1 2 3 M:= 4 5 6 7 8 9 1.6.1 Rozwiązanie (pseudokod) function SequenceToMatrix(M,n,S) for i:=1 to n*n step 1 x=(i%n)+1 y=(i/n)+1 M[x][y]:=S[i]; return M;

1.7 Potęga iteracyjnie 13 1.7 Potęga iteracyjnie Proszę napisać iteracyjny program obliczający n-tą potęgę liczby naturalnej a. Przykład input: a:=3 n:=3 result: 27 1.7.1 Rozwiązanie (pseudokod) Iteracyjny sposób obliczania potęgi sprowadza się do zaimplementowania następującej formuły a n = a a }{{} n function Power(a,n) p:=1; for i:=1 to n-1 step 1 p:=p*a; return p;

14 Algorytmy 1.8 Potęga rekurencyjnie Proszę napisać rekurencyjny program obliczający n-tą potęgę liczby naturalnej a. Przykład input: a:=3 n:=3 result: 27 1.8.1 Rozwiązanie (pseudokod) Rekurencyjny sposób obliczania potęgi sprowadza się do zaimplementowania następującej formuły function Power(a,n) if (n==0) then p:=1; else p:=a*power(a,n-1); return p; a n = a a n 1, dla n > 0, a 0 = 1.

1.9 Selectionsort 15 1.9 Selectionsort Poniżej zapisano pewien algorytm. Proszę wykonać go dla zadanego zbioru danych i napisać odpowiadający jemu schemat blokowy. Algorytm: #a - array of Integer numbers #n - dimension fo array a function Selectionsort(a,n) for i:=1 to n-1 step 1 min:=a[i]; #searching for a min value in subsequence a[i+1...n] of array a for j:=i+1 to n step 1 if (a[j]<a[i]) then min:=a[j]; pos:=j; #exchange min value and a[i] tmp:=a[i]; a[i]:=a[pos]; a[pos]:=tmp; return a; Przykład input: a:=[2 4 1 3] n:=4 result: a=[1 2 3 4] description: step 1: exchange value at index 3 with value at index 1: situation before: a=[2 4 1 3]

16 Algorytmy situation after: a=[1 4 2 3] step 2: exchange value at index 3 with value at index 2: situation before: a=[1 4 2 3] situation after: a=[1 2 4 3] step 3: exchange value at index 4 with value at index 3: situation before: a=[1 2 4 3] situation after: a=[1 2 3 4] 1.9.1 Rozwiązanie (przebieg wykonania) Przyjmijmy dane a oraz n jak w przykładzie. Zgrubny schemat wykonania zawarty jest w przykładzie. Oto szczegółowy przebieg wykonania. 1.9.2 Rozwiązanie (schemat blokowy)