Wykład 5 - Wydział Matematyki i Informatyki UŁ

Transkrypt

Wykład 5 - Wydział Matematyki i Informatyki UŁ
Wstęp
do programowania
wykład 5
Piotr Cybula
Wydział Matematyki i Informatyki UŁ
2012/2013
http://www.math.uni.lodz.pl/~cybula
Pętle zagnieżdżone
Pętle można zagnieżdżać dowolnie
Instrukcja wyjścia zawsze dotyczy pętli,
bezpośrednio w której została użyta
Iteratory pętli mogą być:
nieskorelowane (niezależne od siebie)
skorelowane (wartości iteratora pętli
wewnętrznej zależą od iteratora pętli
zewnętrznej)
Wybór par wartości
Grupa osób - Jacek, Anka, Magda, Piotr,
Tomek, Kamil, Adam, Paweł, Ewa - ma
wybrać spośród siebie dwuosobowy
zespół. Wybieramy:
wszystkie możliwe składy zespołów, w
których jedna osoba jest szefem a druga
podwładnym (pary „nierównorzędne”)
wszystkie możliwe składy zespołów
złożonych z dwóch równoprawnych
członków (pary „równorzędne”)
Pary „nierównorzędne”
(uporządkowane)
Pary „nierównorzędne”
(uporządkowane)
{ (x, y): x ∈ T, y ∈ T, x ≠ y}
Algorytm:
wybieramy pierwszy element pary (szefa)
tworzymy wszystkie możliwe pary: szef +
podwładny (podwładnym może być każda
inna osoba w grupie) – iterator
nieskorelowany
pary_uporzadkowane.c
Pary „równorzędne”
(nieuporządkowane)
Pary „równorzędne”
(nieuporządkowane)
{ {x, y}: x ∈ T, y ∈ T, x < y}
Algorytm:
wybieramy pierwszą osobę pary (x)
dobieramy do niej drugą osobę (y), przy
czym należy pominąć te osoby, które już
były w roli x (bo para x+y, to to samo co
para y+x) – iterator skorelowany
pary_nieuporzadkowane.c
Przykładowy program z
pętlami skorelowanymi
choinka.c
*
***
*
***
*****
*
***
*****
******
Algorytmy logiczne
(„z poglądem”)
Algorytmy „z poglądem”:
mamy jakiś „pogląd” na wynik i próbujemy
mu zaprzeczyć
pojawienie się „przeczącej” wartości
zmienia ten pogląd i kończy analizę
pojawienie się „nieprzeczącej” wartości
zostawia dotychczasowy pogląd bez zmiany
ostatecznym wynikiem jest końcowy
„pogląd”
Przykładowe programy z
algorytmami logicznymi
czy_parzysta.c
pierwsze.c (dodatkowo pętle skorelowane)
Algorytmy strumieniowe
Algorytmy strumieniowe analizujące
fragment strumienia danych (bufor):
pobieramy pojedyncze dane do bufora
gdy bufor został zapełniony wykonujemy
analizę (nie wolno używać przypadkowych
danych dostępnych w buforze przed jego
zapełnieniem)
przesuwamy dane w buforze w celu
przygotowanie miejsca dla kolejnych
danych i powtarzamy czynności
Przykładowe programy z
algorytmami strumieniowymi
pary_sasiednie.c
trojki_sasiednie.c

Podobne dokumenty