Lekcja : Tablice + pętle

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

Pętle. Dodał Administrator niedziela, 14 marzec :27

7. Pętle for. Przykłady

Lekcja 3: Pierwsze kroki z Pythonem. Pętle

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.

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

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

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

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

Programowanie strukturalne i obiektowe. Funkcje

Pętla for. Wynik działania programu:

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

Podstawy Programowania C++

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

do instrukcja while (wyrażenie);

Tablice - podstawowa organizacja danych

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

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

Nazwa implementacji: Nauka języka Python pętla for. Autor: Piotr Fiorek

tablica: dane_liczbowe

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

INFORMATYKA Z MERMIDONEM. Programowanie. Moduł 5 / Notatki

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

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

Programowanie w Baltie klasa VII

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

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

Język C, tablice i funkcje (laboratorium)

Wstęp do programowania

6. Pętle while. Przykłady

Wstęp do programowania

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

1 Podstawy c++ w pigułce.

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

Pytania sprawdzające wiedzę z programowania C++

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

Zad. 3: Układ równań liniowych

Wstęp do programowania

Programowanie i techniki algorytmiczne

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

Konstrukcje warunkowe Pętle

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

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

Instrukcje sterujące

lekcja 8a Gry komputerowe MasterMind

4. Funkcje. Przykłady

- - Ocena wykonaniu zad3. Brak zad3

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

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

Zmienne i struktury dynamiczne

1 Wskaźniki. 1.1 Główne zastosowania wskaźników

Temat 20. Techniki algorytmiczne

Programowanie - wykład 4

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

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

Część XV C++ Ćwiczenie 1

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

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

Celem tego projektu jest stworzenie

XII. Warunek wielokrotnego wyboru switch... case

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

Pętla while. Prowadzący: Łukasz Dunaj, strona kółka: atinea.pl/kolko

Proste programy w C++ zadania

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

1 Wielokrotne powtarzanie tych samych operacji

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

Język C++ zajęcia nr 2

Jak zawsze wyjdziemy od terminologii. While oznacza dopóki, podczas gdy. Pętla while jest

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

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

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.

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

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Języki i techniki programowania Ćwiczenia 2

Wstęp do informatyki- wykład 7

do instrukcja while(wyrażenie);

Struktura pliku projektu Console Application

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

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

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

wagi cyfry pozycje

Programowanie - instrukcje sterujące

Część 4 życie programu

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

Liczby losowe i pętla while w języku Python

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

PROGRAMOWANIE W C++ ZADANIA

Zapisywanie algorytmów w języku programowania

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

Wstęp do programowania

TABLICA (ang. array) pojedyncza zmienna z wieloma komórkami, w których można zapamiętać wiele wartości tego samego typu danych.

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

ALGORYTMY. 1. Podstawowe definicje Schemat blokowy

Wstęp do informatyki- wykład 6

Lista 0. Kamil Matuszewski 1 marca 2016

METODY KOMPUTEROWE W OBLICZENIACH INŻYNIERSKICH

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

> C++ wskaźniki. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki 26 kwietnia 2017

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

Transkrypt:

Lekcja : Tablice + pętle Wprowadzenie Oczywiście wiesz już jak dużo można osiągnąć za pomocą tablic oraz jak dużo można osiągnąć za pomocą pętli, jednak tak naprawdę prawdziwe możliwości daje połączenie tablic i pętli i ich wspólne stosowanie w programach, bez dobrej znajomości pętli i tablic, dalsza nauka C++ będzie prawie niemożliwa. Czas zacząć kojarzyć Jeśli nie wiesz jeszcze, w jaki sposób połączyć wykorzystanie pętli w tablicach, postaraj się skojarzyć dwa proste fakty o których wspomniano. Przede wszystkim jak już wiesz pętle umożliwiają powtarzanie pewnej operacji tak długo jak warunek końcowy pętli będzie spełniony. Wszystkie pętle posiadają zmienne (jedną lub kilka) sterujące. W bardzo łatwy sposób można zmieniać wartość zmiennej sterującej w kolejnych krokach pętli i bardzo łatwo stworzyć pętlę, która wykona określoną operację dla zmiennej sterującej z określonego przedziału. Z drugiej strony, tablice umożliwiają przechowywanie zmiennych danego typu i dla zmiennej o nazwie auto typu tablicowego, poszczególne elementy tablicy to auto[0], auto[1], auto[2] itd. Schematycznie zatem można zapisać postać dowolnego elementu tablicy jako auto[indeks], gdzie indeks zmienia się od 0 do pewnej liczby określonej rozmiarem tablicy. Jak zatem połączyć pętle z tablicami? Nie jest to takie trudne - zmienną indeksującą tablicy (czyli u nas nazwaną indeks) należy potraktować jako zmienną sterującą pętlą i zmieniać ją od 0 aż do rozmiar tablicy -1 i dzięki temu, uda nam się dostać za pomocą jednej pętli do każdego elementu tablicy i dokonać na nim dowolnych operacji.

Przykłady Na szczęście użycie tablic i pętli jest tak naprawdę bardzo łatwe. Teraz spróbujmy przedstawić różne przykłady, ilustrujące jak wiele można osiągnąć dzięki umiejętnemu posługiwaniu się poznanymi mechanizmami. int calkowite[3]=6,7,10; // wersja bez petli cout <<calkowite[0]<<' '<<calkowite[1]<<' '<<calkowite[2]<<'\n'; // wersja z uzyciem petli for (unsigned int i=0;i<3;++i) cout <<"\nnacisnij ENTER aby zakonczyc"<<'\n'; Jak widzisz w powyższym przykładzie, w jaki sposób można wypisać wszystkie elementy tablicy. Co prawda w tym wypadku zysk jest niewielki - bowiem tablica ma tylko 3 elementy i w przybliżeniu napisanie kodu wypisującego elementy tej tablicy zajmuje tyle samo czasu, jednak zastanów się, która metoda byłaby wygodniejsza dla tablicy 100- elementowej. Zastosowaliśmy tutaj przedstawione wcześniej podejście. Zmienna decydująca o tym, którym elementem tablicy się obecnie "zajmujemy" (tutaj oznaczona jako i, bo mamy zapis calkowite[i]), została wykorzystana jako zmienna sterująca pętlą. Wartość zmiennej sterującej zmienia się od 0 do 2, bowiem nasza tablica jest 3-elementowa. Zapis przedstawiony w pętli nie jest tak naprawdę najszczęśliwszy, bo dlaczego w pętli warunkiem końcowym jest <3? Ty zapewne odpowiesz, że to przecież liczba elementów tablicy.

Co jednak jeśli za moment zmienisz liczbę elementów tablicy? Oczywiście tutaj należałoby również zmienić wartość. Dodatkowo, gdyby taka pętla znajdowała się w znacznie odleglejszej części programu od miejsca, gdzie tablica zostaje utworzona, to wówczas w końcu sami byśmy zapomnieli, dlaczego warunek końcowy jest taki a nie inny. Dlatego też w ogólnym wypadku lub w bardziej skomplikowanych przykładach, najczęściej wprowadzamy zmienną pomocniczą (najlepiej stałą, czyli z modyfikatorem const), którą następnie wykorzystujemy w warunku końcowym pętli. Dzięki temu zrozumienie warunku końcowego będzie łatwiejsze i nawet, gdy okaże się, że potrzebujemy mniejszej lub większej tablicy, wystarczy, że zmienimy tylko wartość zmiennej określającej rozmiar tablicy. Wspomniany przed momentem sposób ilustruje poniższy przykład: const int ile=3; // rozmiar tablicy int calkowite[3]=6,7,10; for (unsigned int i=0;i<ile;++i) cout <<"\nnacisnij ENTER aby zakonczyc...\n"; Dla formalności dodam, że tutaj zmienną określającą rozmiar tablicy, jest zmienna ile - jak widzisz, zastosowana nazwa zmiennej mówi dość dużo o jej przeznaczeniu. Oczywiście możemy nie tylko wypisywać elementy tablicy. Możemy również je pobierać w ten łatwiejszy sposób oraz dokonywać pewnych modyfikacji na danych. Jak to zrobić dowiesz się przyglądając się poniższemu przykładowi:

const int ile=6; // rozmiar tablicy int calkowite[ile]; unsigned int i; // zmienna sterujaca petlami // pobieranie elementow tablicy cout <<"Podaj "<<i+1<<". element tablicy: "; cin >>calkowite[i]; cin.ignore(); // wypisanie elementow tablicy cout <<"\noto tablica: "; // dodanie liczby 2 do kazdego elementu tablicy calkowite[i]+=2; // ponowne wypisanie elementow tablicy cout <<"\noto zmodyfikowana tablica: "; cout <<"\n\nnacisnij ENTER aby zakonczyc...\n";

Jak widzisz, w powyższym przykładzie realizujemy wszystkie operacje, które bez użycia pętli nie byłyby już takie łatwe i szybkie. Dodatkowo zmienna sterująca pętlami została utworzona przed wszystkimi pętlami, dzięki czemu, program wykona się w rzeczywistości nieco szybciej. Innym przykładowym programem może być obliczenie sumy wszystkich wartości występujących w tablicy. Oczywiście taką operację, jak i wszystkie inne można przeprowadzić za pomocą dowolnej pętli (tak jak wszystkie inne operacje), jednak teraz, żeby pokazać, że do przeglądania tablic można używać nie tylko pętli for, użyjemy dwóch pozostałych typów pętli. const int ile=6; // rozmiar tablicy float calkowite[ile]=3.45, 5, -10, 2.78, 4, 2.22; unsigned int i; //zmienna sterujaca petlami float suma_pocz, suma_kon; // suma liczona od "przodu" petla while i=0; suma_pocz=0; while (i<ile) suma_pocz+=calkowite[i]; ++i; // suma liczona "od konca" petla do while i=ile; suma_kon=0; do suma_kon+=calkowite[i]; --i;

while (i>0); //tutaj i ma wartosc 0 i trzeba dodac do sumy calkowite[i] suma_kon+=calkowite[i]; cout <<"Suma elementow liczona od poczatku petla while wynosi "<<suma_pocz; cout <<"\nsuma elementow liczona od konca petla do while wynosi "<<suma_kon; cout <<"\n\nnacisnij ENTER aby zakonczyc...\n"; Jak widzisz, w powyższym programie obliczyliśmy sumę elementów tablicy dwoma metodami. Wszystko powinno być dość łatwe do zrozumienia poza jedną kwestią, a mianowicie, dlaczego po pętli do while dodajemy do sumy jeszcze wartość początkowego elementu. Zrobiliśmy tak dlatego, bowiem w pętli ograniczyliśmy ostatnią poprawną wartość pętli do 1 (warunek >0), co spowoduje, że ostatnią wartością zmiennej sterującej będzie 0. Gdybyśmy natomiast zmienili warunek, pisząc przykładowo >=0, wówczas otrzymalibyśmy opisywany w poprzednich lekcjach błąd zapętlenia w przypadku zmiennych z modyfikatorem unsigned - bo taki modyfikator ma właśnie zmienna i. Oczywiście wystarczyło zastosować zmienną bez modyfikatora unsigned i byłoby po kłopocie. Stosując jednak taką "sztuczkę", teoretycznie udało nam się zwiększyć zakres dopuszczalnych dodatnich wartości zmiennej sterującej (chociaż tutaj i tak z tego nie skorzystaliśmy). Na koniec przedstawię przykład realizacji takiego zadania: zmień obecną tablicę tak, aby każdy nowy element był sumą dwóch dotychczasowych elementów: samego siebie i elementu go poprzedzającego. Inaczej mówiąc chcemy, żeby w elemencie o indeksie jeden, znalazła się suma elementu z indeksem jeden i z indeksem zero, a w ostatnim elemencie tablicy, suma ostatniego i przedostatniego elementu. Pierwszy element tablicy (element o indeksie zero) powinien pozostać taki sam, bowiem nie ma przed nim żadnego innego elementu.

Wykonując modyfikacje na tablicy, trzeba być bardzo ostrożnym. Tutaj właśnie dokonując operacji od początku tablicy do końca, nie udałoby się nam osiągnąć właściwego wyniku (bez użycia dodatkowej zmiennej), bowiem "niechcący" zamazywalibyśmy wcześniejsze wartości. Dlatego też w tym wypadku, aby realizacja postawionego problemu była łatwa, należy dokonywać operacje na tablicy od jej końca. Oto prosty przykład realizacji: const unsigned int ile=6; // rozmiar tablicy float tab[ile]=3.45, 5, -10, 2.78, 4, 2.22; cout <<"Poczatkowa tablica: "; for (unsigned int i=0;i<ile;++i) cout <<tab[i]<<' '; for (unsigned int i=ile-1;i>0;--i) tab[i]=tab[i]+tab[i-1]; cout <<"\n\nzmodyfikowana tablica: "; for (unsigned int i=0;i<ile;++i) cout <<tab[i]<<' '; cout <<"\n\nnacisnij ENTER aby zakonczyc...\n"; Podsumowanie Tak naprawdę tablice wraz z pętlami są podstawową konstrukcją językową, która jest używana w wielu poważnych programach, dlatego też zrozumienie tego zagadnienia jest kluczowe dla dalszej Twojej nauki języka C++.