1 / 20

Wykład 7

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.

dragon
Download Presentation

Wykład 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wykład 7 • sortowanie • BitButton • format tekstu • rysunki • typ rekordowy

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

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

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

  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

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

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

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

  9. 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;

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

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

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

  13. 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...Edddd • - ffFixed ddd,ddd... • - ffNumber ddd ddd,dddd • - ffCurrency ddd ddd,dd zł

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

  15. 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;

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

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

  18. 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;

  19. 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;

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

More Related