INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

Podobne dokumenty
lekcja 8a Gry komputerowe MasterMind

do instrukcja while (wyrażenie);

*W uproszczeniu: jest dziewięciu sędziów przyznających po dwie noty: za wartość techniczną i artystyczną (skala od 0.0 do 6.0)

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

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

Podstawy Programowania C++

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

tablica: dane_liczbowe

Programowanie w C++ Wykład 5. Katarzyna Grzelak. 26 marca kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 40

Część 4 życie programu

Inicjacja tablicy jednowymiarowej

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

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

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

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

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

Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.pl. Tablice cz. II. Kopiowanie tablic, tablice wielowymiarowe

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

1 Podstawy c++ w pigułce.

Pętla for. Wynik działania programu:

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

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

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

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

7. Pętle for. Przykłady

Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119

Zmienne i struktury dynamiczne

6. Pętle while. Przykłady

Tablice. Jones Stygar na tropie zmiennych

Akademia ETI Marcin Jurkiewicz

Tablice jednowymiarowe

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

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

Proste programy w C++ zadania

1 Podstawy c++ w pigułce.

Programowanie - wykład 4

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

Programowanie 2 - Tablice i łańcuchy

TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;

O podstawowych operacjach na tablicach. Mateusz Ziółkowski, MBiU II

Programowanie - instrukcje sterujące

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

Język C, tablice i funkcje (laboratorium)

Wstęp do programowania

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

Podstawy i języki programowania

Programowanie komputerowe. Zajęcia 1

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

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

r. Tablice podstawowe operacje na tablicach

Funkcje. Wprowadzenie. Mirosław Ochodek

KURS C/C++ WYKŁAD 2. char znak; znak = a ; Program 2 #include<stdio.h> void main() { char znak; while( (znak = getchar() )!= t ) putchar(znak); }

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

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

Instrukcje sterujące

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.

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

Tablice są typem pochodnym. Poniżej mamy przykłady deklaracji różnych tablic:

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

Programowanie komputerowe. Zajęcia 3

Podstawy programowania. Wykład: 6. Tablice statyczne. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Ćwiczenie nr 3. Wyświetlanie i wczytywanie danych

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

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

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

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

Liczby całkowite i rzeczywiste

Program 22. #include <iostream> using namespace std; struct Osoba { string Imie; string Nazwisko; char Plec; int RokUr; };

Warszawa dnia 2 stycznia 2011 r. Zbiór zadań z programowania w języku C do samodzielnego wykonania

do instrukcja while(wyrażenie);

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

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

4. Funkcje. Przykłady

Materiał Typy zmiennych Instrukcje warunkowe Pętle Tablice statyczne Wskaźniki Tablice dynamiczne Referencje Funkcje

Programowanie w języku Python. Grażyna Koba

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

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.

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

Wstęp do programowania

Algorytm. a programowanie -

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

WHILE (wyrażenie) instrukcja;

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych

Wstęp do informatyki- wykład 6

Pytania sprawdzające wiedzę z programowania C++

W języku C/C++ pomiędzy wskaźnikami a tablicami istnieje bardzo ścisły związek. Do onumerowania elementów w tablicy służą tzw. INDEKSY.

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

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

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

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

Wstęp do programowania

MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata

wagi cyfry pozycje

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

Pętla for. Matematyka dla ciekawych świata -19- Scilab. for i=1:10... end. for k=4:-1:1... end. k=3 k=4. k=1. k=2

3. Instrukcje warunkowe

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Programowanie komputerowe. Zajęcia 5

WHILE (wyrażenie) instrukcja;

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

Transkrypt:

INFORMATYKA Z MERMIDONEM Programowanie Moduł 5 / Notatki

Projekt współfinansowany ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego. Realizator projektu: Opracowano w ramach projektu Nowa Era Informatyki www.mermidon 2

Moduł 5. Tablice jedno i dwuwymiarowe Notatki do wszystkich części TWORZENIE TABLICY JEDNOWYMIAROWEJ Tablicę tworzymy poprzez zdefiniowanie typu zmiennych, które będą przechowywane w tablicy, jej nazwy i ilości elementów: typ_zmiennej nazwa_tablicy [liczba elementów] np.: int mojatablica[7]; char tab[20]; Tablicę możemy wypełnić w chwili deklaracji. Tego sposobu używamy, gdy wiemy, co dokładnie będziemy chcieli przechowywać w tablicy. int dnimesiaca[12] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 int imie[6] = 'm', 'i', 'c', 'h', 'a', 'l'; OPERACJE NA TABLICY JEDNOWYMIAROWEJ Do operowania na tablicy np. do wypisywania zawartości używamy pętli. Pętle pozwalają na przechodzenie od pierwszego elementu do ostatniego. int tablica[100]; for (int a = 0; a < 100; a++) cout << tablica[a] << " "; Tablice indeksowane są od zera, pierwszy element ma indeks zero (nie jeden): tablica[0] tablica[1] pierwszy element drugi element tablica[99] setny element ostatni element w tablicy Rozważmy napisanie programu, który pobierze z klawiatury n liczb, umieści je w tablicy a następnie wyświetli. Program powinien wczytać liczbę n mówiącą ile liczb będziemy wczytywać a następnie je pobrać, zapisać i wypisać. 3

Tworzymy tablicę np. 100 elementową ( n w tym przypadku jest w przedziale od 1 do 100). Pobieramy z klawiatury liczbę n. W pętli od zera do n pobieramy kolejne liczby i umieszczamy je w tablicy. W kolejnej pętli od zera do n pobieramy kolejne elementy z tablicy i wypisujemy je na ekran. Fragment kodu źródłowego, którego możemy użyć do pobierania zmiennej ilości danych z klawiatury: int tablica[1000]; rezerwujemy miejsce, nie koniecznie musimy całe użyć int wielkosc; cin >> wielkosc; wczytujemy ile liczb będziemy wczytywać (ile liczb oczekujemy) for (int a = 0; a < wielkosc; a++) pętla od zera do n cin >> tablica[a]; TWORZENIE TABLICY DWUWYMIAROWEJ Tablice dwuwymiarowe tworzymy poprzez określenie typu tablicy, jej nazwy oraz dwóch wymiarów (ilości wierszy i kolumn): typ_zmiennej nazwa_tablicy [wymiar1][wymiar2]; np.: int tablica[10][10]; Tak jak w przypadku tablicy jednowymiarowej, dwuwymiarową również możemy wypełnić w chwili tworzenia. int tablica[3][2] = 1,2, 3,4, 5,6; OPERACJE NA TABLICY DWUWYMIAROWEJ Do operowania na tablicy dwuwymiarowej używamy dwóch pętli. Jedna jest odpowiedzialna za iterowanie (przechodzenie) po wierszach a druga po kolumnach. Jedna jest zagnieżdżona w drugiej, czyli na jeden obrót pierwszej pętli, druga zagnieżdżona przechodzi przez wszystkie elementy. 4

int tablica[100][50]; for (int w = 0; w < 100; w++) iterujemy po wierszach for (int k = 0; k < 100; k++) iterujemy po kolumnach cout << tablica[w][k] << " "; cout << endl; po wypisaniu wiersza z tablicy, przechodzimy do nowej linii LICZBY PIERWSZE Liczbą pierwszą jest liczba naturalna, która ma dokładnie dwa różne dzielniki naturalne i są nimi: jeden, ona sama. Kolejne liczby pierwsze: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, itd. Rozważmy napisanie programu, który sprawdzi czy podana z klawiatury liczba jest liczbą pierwszą. Pobieramy z klawiatury liczbę. W pętli od 2 do n sprawdzamy czy któraś liczba dzieli n bez reszty. Sprawdzamy, czy w poprzednim kroku znaleźliśmy dzielniki dla n, jeśli nie, to liczba n jest liczbą pierwszą. Fragmentu kodu źródłowego szukającego dzielników dla n : for(int a=2; a<n; a++) if(n % a == 0) //znaleźliśmy dzielnik dzielenie modulo 5

LICZBY DOSKONAŁE Liczbą doskonałą jest liczba naturalna taka, że suma jej naturalnych dzielników jest równa jej samej. 6 = 1 + 2 + 3 Kolejne liczby doskonałe: 6, 28, 496, 8128, 33550336, 8589869056 Rozważmy napisanie programu, który sprawdzi czy podana z klawiatury liczba jest liczbą doskonałą. Pobieramy z klawiatury liczbę, którą będziemy sprawdzać. Tworzymy tablicę o wielkości 100 (nie musimy całej wykorzystywać), w której będziemy trzymać dzielniki. W pętli od 1 do n sprawdzamy czy któraś liczba dzieli n bez reszty, jeśli tak, liczbę zapisujemy w tablicy z kroku poprzedniego. W kolejnej pętli od 1 do k, (gdzie k jest liczbą mówiącą ile znaleźliśmy dzielników) wykonujemy sumowanie. Sprawdzamy czy suma dzielników równa się wczytanej liczbie, jeśli tak to znaleźliśmy liczbę doskonałą. LICZBY BLIŹNIACZE Liczbami bliźniaczymi są liczby pierwsze, różniące się między sobą o 2. Przykład: 3 5, 5 7, 11 13, 17 19. Rozważmy napisanie programu, który wypisze wszystkie liczby bliźniacze w zbiorze od 1 do n. Rozwiązań problemu jest co najmniej kilka: Możemy szukać liczb bliźniaczych w tablicy z wartościami od 1 do n, przeszukując komórki leżące w odległości dwóch indeksów od siebie. Możemy przygotować sobie tablicę liczb pierwszych i to w niej szukać liczb bliźniaczych, porównując komórki leżące obok siebie. 6

Tworzymy tablicę, w której będziemy poszukiwali liczb bliźniaczych (np. 100 elementową). W pętli od 0 do 100 wpisujemy wartości poszczególnym komórkom w tablicy (dla indeksu 0, wpisujemy wartość 1, itd.). Tworzymy nową tablicę, do której przepiszemy liczby pierwsze. W pętli od 0 do 100 sprawdzamy główną tablicę czy znajdują się w niej liczby pierwsze, jeśli takową znajdziemy, przepisujemy do tablicy z liczbami pierwszymi. W pętli od 1 do ilości liczb pierwszych w tablicy, porównujemy pola obok siebie, dany element jest porównywalny z poprzednim. Jeśli różnica między nimi wynosi 2, oznacza to ze znaleźliśmy parę liczb bliźniaczych. LICZBY CZWORACZE Liczbami czworaczymi są liczby pierwsze, które można zapisać w postaci: p, p+2, p+6, p+8 np.: 5, 7, 11, 13 821, 823, 827, 829 Rozważmy napisanie programu, który wypisze wszystkie liczby czworacze w zbiorze od 1 do n. Tworzymy tablicę, w której będziemy szukać liczb czworaczych (np. 100 elementową). W pętli od 0 do 100 wpisujemy wartości poszczególnym komórkom w tablicy (dla indeksu 0, wpisujemy wartość 1, itd.). Tworzymy nową tablicę, do której przepiszemy liczby pierwsze. W pętli od 0 do 100 sprawdzamy główną tablicę czy znajdują się w niej liczby pierwsze, jeśli takową znajdziemy, przepisujemy do tablicy z liczbami pierwszymi. W pętli będziemy sprawdzać czy znaleźliśmy liczby czworacze. W pętli będziemy przechodzić od 1 do n 8. Pobierzemy pierwszy element z tablicy, sprawdzimy czy jest liczbą pierwszą, jeśli tak, sprawdzimy czy następny element w tablicy liczb pierwszych jest równy p+2, kolejny p+6 i jeszcze jeden p+8. Sprawdzamy czy wszystkie liczby (p, p+2, p+6, p+8) są liczbami pierwszymi. Jeśli tak, znaleźliśmy liczby czworacze. 7

LICZBY GERMAIN Liczbą Germain jest liczbą pierwszą, dla której 2 p+1 również jest liczbą pierwszą. Kolejne liczby Germain: 2, 3, 5, 11, 23, 29, 41, 53, 83 sprawdźmy: 2 2 + 1 = 5 2 3 + 1 = 7 Rozważmy napisanie programu, który sprawdzi czy liczba wczytana z klawiatury jest liczbą Germain. Pobieramy liczbę z klawiatury. Sprawdzamy czy wczytana liczba jest liczbą pierwszą. Jeśli tak, podstawiamy wartość do wzoru. Sprawdzamy czy wartość wyrażenia również jest liczbą pierwszą. ROZKŁAD LICZBY NA CZYNNIKI PIERWSZE Rozkład liczby na czynniki pierwsze polega na zapisaniu jej jako iloczynu liczb pierwszych. np.: 14 = 2 7 15 = 3 5 Każda liczba naturalna większa od jeden jest albo liczbą pierwszą albo iloczynem liczb pierwszych (liczbą złożoną). Rozważmy napisanie programu, który rozłoży liczbę na czynniki pierwsze Pobieramy liczbę z klawiatury, którą chcemy rozłożyć, niech nią będzie liczba k. Tworzymy tablicę, w której będziemy przechowywać czynniki pierwsze. W pętli dzielimy liczbę k przez liczbę p i sprawdzamy czy otrzymaliśmy resztę z dzielenia czy nie. Jeśli nie ma reszty, oznacza to, że znaleźliśmy czynnik pierwszy, więc przepisujemy go 8

do odpowiedniej tablicy na liczby pierwsze. Kroki powtarzamy. W następnym obiegu pętli liczbą k będzie równa k / p. Jeśli w pętli z poprzedniego kroku podczas dzielenia otrzymamy resztę z dzielenia to powiększamy liczbę p i krok powtarzamy. Rozkład liczby 90 na czynniki pierwsze: 90 2 = 45 45 3 = 15 15 3 = 5 5 5 = 1 1 Czynnikami pierwszymi są 2, 3, 3, 5. 9