200 likes | 368 Views
Wykład 7. sortowanie BitButton format tekstu rysunki typ rekordowy. Sortowanie. Sortowanie bąbelkowe. Algorytm polega porównywaniu kolejnych par elementów sąsiadujących i zamianie miejscami w przypadku niewłaściwej kolejności. 1 2 3 4 ..... N. N-1 porównań. Wykonujemy N przebiegów.
E N D
Wykład 7 • sortowanie • BitButton • format tekstu • rysunki • typ rekordowy
Sortowanie Sortowanie bąbelkowe Algorytm polega porównywaniu kolejnych par elementów sąsiadujących i zamianie miejscami w przypadku niewłaściwej kolejności 1 2 3 4 ..... N N-1 porównań Wykonujemy N przebiegów
1 przebieg 12 5 11 4 7 2 zamiana 1 5 12 11 4 7 2 zamiana 2 5 11 12 4 7 2 zamiana 3 5 11 4 12 7 2 zamiana 4 5 11 4 7 12 2 zamiana 5 5 11 4 7 2 12 efekt ostatniej zamiany – największy na końcu 2 przebieg 5 11 4 7 2 12 5 11 4 7 2 12 zmiana 6 5 4 11 7 2 12 zmiana 7 5 4 7 11 2 12 zmiana 8 5 4 7 2 11 12 5 4 7 2 11 12 3 przebieg 5 4 7 2 11 12 zamiana 9 4 5 7 2 11 12 4 5 7 2 11 12 zamiana 10 4 5 2 7 11 12 4 5 2 7 11 12 4 5 2 7 11 12 4 przebieg 4 5 2 7 11 12 4 5 2 7 11 12 zamiana 11 4 2 5 7 11 12 4 2 5 7 11 12 4 2 5 7 11 12 4 2 5 7 11 12 N=6
5 przebieg 4 2 5 7 11 12 zmiana 12 2 4 5 7 11 12 2 4 57 11 12 2 4 5 711 12 2 4 5 7 11 12 2 4 5 7 11 12 6 przebieg 2 4 5 7 11 12 2 4 5 7 11 12 2 4 5 7 11 12 2 4 5 7 11 12 2 4 5 7 11 12 30 operacji= (N-1)*N=6*5
Sortowanie bąbelkowe skrócone Algorytm polega na porównywaniu kolejnych par elementów sąsiadujących, z tym, że w każdym kolejnym przebiegu liczba analizowanych par jest zmniejszana o 1 Przebiegów wykonujemy N-1
1 przebieg 12 5 11 4 7 2 zamiana 1 5 12 11 4 7 2 zamiana 2 5 11 12 4 7 2 zamiana 3 5 11 4 12 7 2 zamiana 4 5 11 4 7 12 2 zamiana 5 5 11 4 7 2 12 efekt 2 przebieg 5 11 4 7 2 12 5 11 4 7 2 12 zamiana 6 5 4 11 7 2 12 zamiana 7 5 4 7 11 2 12 zamiana 8 5 4 7 2 11 12 efekt 3 przebieg 5 4 7 2 11 12 zamiana 9 4 5 7 2 11 12 4 5 7 2 11 12 zamiana 10 4 5 2 7 11 12 efekt 4 przebieg 4 5 2 7 11 12 4 5 2 7 11 12 zamiana 11 4 2 5 7 11 12 efekt 5 przebieg 4 2 5 7 11 12 zamiana 12 2 4 5 7 11 12 efekt 5 15 operacji 4 3 2 1
Można też tak (rodzaj bąbelkowego): • Algorytm polega na porównywaniu: • pierwszego elementu z kolejnymi i dokonanie zamiany jeśli trzeba, • drugiego elementu z kolejnymi itd., • aż do porównania dwóch ostatnich elementów. N (N-1) operacji 2
1 przebieg 125 11 4 7 2 zamiana 1 5 12 11 4 7 2 5 12 11 4 7 2 zamiana 2 4 12 11 5 7 2 4 12 11 5 7 2 zamiana 3 2 12 11 5 7 4 najmniejszy na początku 2 przebieg 2 1211 5 7 4 zamiana 4 .. więc zaczynamy od 2-go 2 11 12 5 7 4 zamiana 5 2 5 12 11 7 4 2 5 12 11 7 4 zamiana 6 2 4 12 11 7 5 3 przebieg 2 4 1211 7 5 zamiana 7 2 4 11 12 7 5 zamiana 8 2 4 7 12 11 5 zamiana 9 2 4 5 12 11 7 4 przebieg 2 4 5 1211 7 zamiana 10 2 4 5 11 12 7 zamiana 11 2 4 5 7 12 11 5 przebieg 2 4 5 7 1211 zamiana 12 2 4 5 7 11 12 15 operacji
deklaracje globalne (dla wszystkich podprogramów modułu) implementation const N=10; var tab:array [1..N] of integer; wypełnienie losowe tablicy i StringGrida var k:1..N; begin Randomize; for k:=1 to N do begin tab[k]:=random(100); Stringgrid1.cells[1,k]:=IntToStr(tab[k]) end; end;
Sortowanie bąbelkowe skrócone var k,m:1..10; pom:integer; begin for k:=1 to N-1 do for m:=1 to N-k do if tab[m]>tab[m+1] then begin pom:=tab[m]; tab[m]:=tab[m+1]; tab[m+1]:=pom; end; for k:=1 to N do Stringgrid1.cells[2,k]:=IntToStr(tab[k])
Przycisk prostego polecenia (z bitmapą) – BitBtn • jak Button + rysunek • do wykonywania prostych, typowych poleceń dialogu obsługi aplikacji • właściwości • kind - rodzaj przycisku • glyph - obrazek
caption: string - tytuł przycisku (z & - dla znaku skrótu) • glyph - plik z rysunkiem (bmp) symbolu • default: boolean - True – Enter oznacza kliknięcie • cancel: boolean - True – Esc oznacza kliknięcie • modalResult - rezultat przyciśnięcia: • mrNone mrOk mrCancel • mrAbort mrRetry mrIgnore • mrYes mrNo mrAll • dostępny np. po zamknięciu okna lub grupy obiektów procedure TForm1.FormActivate(Sender: TObject); begin case Form2.ModalResult of mrAbort: Edit1.Text:='Abort'; ....... end; end; • zdarzenia • onClick - procedura obsługi kliknięcia • uwaga wygodnie używać w GroupBox Przykłady:sortowanie, bitbtn
Funkcje konwersji tekstowo-numerycznej Znamy.... f. intToStr( value: integer ): string; - integer string f. strToInt( s: string ): integer; - string integer f. floatToStr( value: extended ): string; - real string f. strToFloat( s: string ): extended; - string real Inne… • f. strToIntDef( s: string; default: integer ): integer; • - wynik konwersji lub wartość domyślna (gdy string niepoprawny) • p: val( s: string; var value; var code: integer) - s value (int lub real) • code 0- OK, >0 nr niepoprawnego znaku • f. floatToStrF( value: extended; format: TFloatFormat; precision, digits: integer ): string; • - real string + format: • TFloatFormat - ffGeneral najkrótsza • - ffExponent d,ddd...Edddd • - ffFixed ddd,ddd... • - ffNumber ddd ddd,dddd • - ffCurrency ddd ddd,dd zł
RYSUNKI • Shape – komponent rysujący prymitywny kształt • Shape– typ obiektu - stRectangle, stCircle itp.. • Pen - złożona właściwość opisująca kontur • Brush – złożona właściwość opisująca wypełnienie Image - mogą być umieszczane na formatkach jako osobne obiekty typu Timage - z plików typu bmp • właściwości • transparent: boolean - przeźroczystość • picture - określenie pliku pochodzenia rysunku • metody - dla picture - p. loadFromFile( const fileName: string ); - wpisanie z pliku - p. saveToFile( const fileName: string); - zapisanie do pliku - p. loadFromClipboardFormat - p. saveToClipboardFormat
Typ rekordowy (record) Pojęcie i opis • pojęcie: - skończony zbiór elementów dowolnego typu składowego - pola - ułożonych jednowymiarowo, niejednorodnie - o położeniu (selekcji) określanym przez nazwęskładowej (pola) tzw. dostęp kwalifikowany wektor nazwanych pól dowolnego typu (różnego rozmiaru) • opis: record lista_nazw_pól: typ; . . . end typ dowolny: prosty strukturalny (bez plików) pole tablica, napis, rekord deklaracja_jednakowych_pól;
fizycznie: w PaO kolejne wartości pól określonego typu • przykłady: type data = record rok: 1900 .. 2100; mies: 1..12; dzien: 1..31 end; var student: record nazw: string[ 20 ]; imie: array[1..2] of string[ 15 ]; data_ur: data; stypend: real end; St. Wołek - Podst. Progr. Komput.
Porównanie: jednakowe składowe selektor typu indeks dostęp bezpośredni statyczny rozmiar różne składowe selektor typu nazwa pola dostęp bezpośredni statyczny rozmiar Uwaga: Rekord to jeden zestaw danych, jeśli więcej to tworzymy tablicę rekordów St. Wołek - Podst. Progr. Komput.
Zmienne rekordowe całościowe desygnator pola (składowa) • zmienne całościowe - tylko przypisanie - typów tożsamych brak: + - * / porównania wej/wyj np: var r1, r2: record ..definicja... end ; begin r1 := r2;
desygnator pola (składowa) - dostęp do pola Z . p Ztypu składowego kropka oddziela nazwę zmiennej rekordowej od nazwy pola nazwa pola nazwa zmiennej rekordowej • użycie - w wyrażeniach lub instrukcjach, jak zmienne typu składowego student.nazw student.imie student.imie[1] student.data_ur.rok student.nazw[1] student.imie[2][1] student.stypend student[1].imie student.rok Przykłady: var student: record nazw: string[ 20 ]; imie: array[1..2] of string[ 15 ]; data_ur: data;//wcześniej zdef. typrekordowy stypend: real end;
type osoba = record nazw: string[ 20 ]; imie: array[1..2] of string[ 15 ]; data_ur: data; end; var grupa: array[1..100] of osoba; //tablica rekordów !!!! type data = record rok: 1900 .. 2100; mies: 1..12; dzien: 1..31 end; grupa – typ tablicowy grupa[k] – typ rekordowy grupa[1].nazw - typ string grupa[2].imie – typ tablicowy grupa[k].imie[1] - typ string grupa[k].data_ur - typ rekordowy grupa[k].data_ur.rok – typ integer grupa[2].imie[2][5] – typ char Użycie zależne od typu: memo1.lines.add( grupa[3].nazw); osoba.nazw := 'Nowak'; edit1.text := grupa[k]. imie; if grupa[k].data_ur.rok>1970 then… ..bo osoba to nazwa typu