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