Programowanie komputerów 2

Dokument: pdf (280.5 KB)
  • 14 stron
Opublikowany 2016-11-06 00:45:24

Programowanie komputerów 2Typ tablic dynamicznych - nie mają stałego rozmiaru i nie przydzielają automatycznie pamięci - np.: var MyFlexibleArray= array of real; - deklaruje jednowymiarową dynamiczną tablicę o wartościach rzeczywistych - aby utworzyć tablicę w pamięci, wywołujemy procedurę SetLength; np.: SetLength(MyFlexibleArray, 20) – przydziela tablicy pamięć na 20 l.rzeczywistych, indeksowanych od 0 do 19 - zawsze indeksuje liczby całkowite od 0 - tab1:=tab2; - nie kopiuje zawartości tab2 do tablicy tab1, ale przypisuje wskazanie na ten sam obszar pamięci - aby zwolnić pamięć przydzieloną tablicy dynamicznej należy zmienić wielkość tablicy na 0 Typ rekordowy - rekord może stanowić niejednorodny zestaw elementów - każdy element jest nazywany polem - deklaracja typu rekordu określa nazwę i typ każdego pola - np.: type TDateRec= record Year:integer; Month:(Jan, Feb, Mar, Apr, Jun, Jul, Aug, Sep, Oct, Nov, Dec); Day:1..31; End; - var Record1, Record2:TDateRec; - po zdeklarowaniu zmiennej takiego typu, do poszczególnych pól zmiennej rekordowej odwołujemy się podając nazwę zmiennej rekordowej, kropkę i nazwę pola Np.: Record1.Year:=1905; Record1.Month:=Jun; Record1.Day:=23; Lub z komendą with Np: with record1 do begin Year:=1905; Month:=Jun; Day:=23; End; - gdyby w programie była zdeklarowana zmienna o takiej samej nazwie jak pole rekordu, to zostanie ona przesłonięta w zakresie działania instrukcji wiążącej, tzn. odwołania będą dotyczyły pola rekordu, a nie tej zmiennej - aby skopiować wartości z pól rekordu Record1 do pól Record2 wystarczy użyć komendy przypisania Record2:=Record1 - można definiować rekordy z wariantami type TStudent=record imie:string[23]; nazwisko:string[30]; nrInd:word; SrOcen:real; grupa:string[10]; end; TStudenci=array of TStudent; TPorownanie=function(s1,s2:TStudent):real; procedure DodajStudenta(var studenci:TStudenci); begin SetLength(studenci, Length(studenci)+1); with studenci[high(studenci)] do begin write('Podaj imie: '); readln(imie); write('Podaj nazwisko: '); readln(nazwisko); ... end; end; procedure PodajDaneStudenta(var student:TStudent); begin with student do begin write('Podaj imie: '); readln(imie); write('Podaj nazwisko: '); readln(nazwisko); write('Podaj numer indeksu: '); readln(nrInd); write('Podaj srednia ocen: '); readln(SrOcen); write('Podaj oznaczenie grupy dziekanskiej: '); readln(grupa); end; end; procedure DodajStudenta(var grupa:TStudenci); begin SetLength(grupa, length(grupa)+1); PodajDaneStudenta(grupa[high(grupa)]); end; procedure WyswietlDaneStudenta(const student:Tstudent); begin with student do begin writeln('Imie: ', imie); writeln('Nazwisko: ', nazwisko); writeln('Numer indeksu: ', nrInd); writeln('Srednia ocen: ', SrOcen:1:2); writeln('Grupa: ', grupa); end; end; procedure Wypisz(const grupa:Tstudenci); var i:integer; begin for i:=0 to high(grupa) do begin writeln(i+1,'-----------'); WyswietlDaneStudenta(grupa[i]); end; writeln('------------'); end; function IloscDobrychStudentow(studenci:TStudenci; minSrednia:real):integer; var i:integer; begin result:=0; for i:=0 to high(studenci) do if studenci[i].SrOcen>=minSrednia then inc(result); end; {sortowanie ze względu na kryterium} procedure Zamien(studenci:TStudenci; ind1,ind2:integer); var pom:TStudent; begin pom:=studenci[ind1]; studenci[ind1]:=studenci[ind2]; studenci[ind2]:=pom; end; procedure UporzadkujStudentow(studenci:TStudenci); var i,j:integer; begin for i:=0 to high(studenci)-1 do for j:=i+1 to high(studenci) do if studenci[i].SrOcenstudenci[j].nazwisko; ... end; if bZamien then Zamien(studenci,i,j); (Zamien2(studenci[i],studenci[j];) end; end; procedure Zamien2(var s1,s2:TStudent); var p:TStudent; begin p:=s1; s1:=s2; s2:=p; end; function PorownajStudentowWgOceny(s1,s2:TStudent):real; begin result:=s1.SrOcen-s2.SrOcen; end; procedure Sortuj(var T:TStudenci; porownaj:TPorownanie); var i,j:integer; bufor:TStudent; begin for i:=low(T) to high(T)-1 do for j:=i+1 to high(T) do if prownaj(T[i],T[j])>0 then begin bufor:=T[i]; T[i]:=T[j]; T[j]:=bufor; end; end; function PrownajStudentowWgOcenyMalejaco(s1,s2:TStudent):real; begin result:=s2.SrOcen-s1.SrOcen; end; function PorownajStudentowWgNazwiskoImieNrInd(s1,s2:TStudent):real; begin if s1.nazwisko>s2.nazwisko then result:=1 else if s1.nazwiskos2.imie then result:=1 else if s1.imie

Komentarze do: Programowanie komputerów 2 • 0