background image

 

/\/\irosław Paja, gg:799450 

1

Temat  VI.

 

Na czym polega programowanie strukturalne? 

 
Zadanie 1. Napisz program, który wyświetla twoje imię na początku i końcu strony. 

gotoXY(x,y) – umoŜliwia ustawienie kursora na ekranie w miejscu o współrzędnych X,Y. 

 
Zadanie 2. 
Napisz program, który rysuje 3 uśmiechy ‘:)’. 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 
 
programowanie strukturalne – program ma okre
śloną strukturę, w której moŜna wyodrębnić deklaracje (mo-
dułów, zmiennych, stałych), definicje (procedury i funkcje) oraz bloki instrukcji. 
 

1.

 

Zalety stosowania procedur i funkcji: 

 

dzielenie zadania na mniejsze moduły 

 

wprowadzenie porządku do programu, 

 

unikanie powtórzeń, 

 

łatwiejsze wyszukiwanie błędów i dokonywanie poprawek, 

 

programowanie zespołowe. 

 
przykłady:  

 

procedur: Readln, Writeln, ClrScr,  

 

funkcji: pi, sqr, sort 

 

2.

 

Definiowanie procedur i funkcji 

  procedure nazwa-procedury(lista-parametrów);  
  deklaracje-i-definicje-obiektów-lokalnych  
  begin  
      instrukcje-realizujące-treść-procedury  
  end; 

function nazwa-funkcji(lista-parametrów) :typ-wyniku;  
  deklaracje-i-definicje-obiektów lokalnych  
  begin  
      instrukcje-realizujące-treść funkcji  
  end;  

     

 

funkcja stanowi rozszerzenie procedury o moŜliwość przekazywania wartości. 

 

w przypadku funkcji naleŜy umieścić w definicji instrukcję przypisania: nazwa-funkcji := wartość-wyniku 

 

3.

 

Procedury bez parametru 

Zadanie 3. Napisz program, który rysuje 3 
uśmiechy ‘:)’, korzystając z procedury malujUs-
miechy.
 

 

program zadanie_6_3; 
uses Crt; 
 
procedure malujUsmiechy
var i: integer; 
    
begin 
       for i := 1 to 3 do Write(':)'); 
   end; 
 
begin 
   ClrScr; 
   GotoXY(5,1);  

malujUsmiechy; 

   GotoXY(70,50); 

malujUsmiechy; 

   repeat until keypressed; 
end

Zadanie 4. Napisz procedurę, która dla liczby dodat-
niej rysuje 3 uśmiechy, a dla ujemnej 3 smutki. 

 

program zadanie_6_4; 
uses Crt; 
 
procedure Usmiechy; 
 var i,k:integer; 
 
begin 
    Write('Podaj liczbe: '); 
    Readln(k); 
    if k>0 then for i:=1 to 3 do Write(':-) ') 

  else for i:=1 to 3 do Write(':-( '); 

 end; 
 
begin 
    Usmiechy; 
    repeat until keypressed; 
end. 

background image

 

/\/\irosław Paja, gg:799450 

2

4.

 

Procedury z parametrem 

Zadanie 5. Zmodyfikuj zadanie_3, aby program 
rysował podaną przez nas liczbę uśmiechów. 
 
program zadanie_6_5; 
 uses Crt; 
 var n: integer; 
 
  procedure malujUsmiechy(n:integer); 
   var i: integer; 
 
    begin 
          for i := 1 to n do Write(':)'); 
    end; 
 
 begin 
     ClrScr; 
     Write('Podaj liczbe usmiechow: '); 
      readln(n); 
     GotoXY(2,5); 
     malujUsmiechy(n); 
     GotoXY(50,50); 
     malujUsmiechy(n); 
     repeat until keypressed; 
 end. 

Zadanie 6.  Napisz programu który dla zadanego n 
rysuje trójkąt z gwiazdek – ‘*’. 
 
program zadanie_6_6; 
 uses crt; 
 var    i, j,n : byte; 
 
procedure gwiazdki(n : byte);  
var   i,j : byte; 
 
begin 
    for i := 1 to n do write('*'); 
    writeln; 
end;  
 
 begin 
      ClrScr; 
      write('podaj bok trojkata: '); 
      readln(n); 
      for i := 1 to n do   gwiazdki(i); 
      readln; 
 end
 

 
 

5.

 

Funkcje 

Zadanie 7.  Napisz programu, który znajduje silnie dla zadanej liczby naturalnej. 
 

N! = 1*2* ... (n-1)*n 

(

)

=

=

1

 

dla

   

!

 

1

0

 

dla

       

          

1

!

N

N

N

N

N

  

 
3! = 3*2! 
3! = 3*(2*1!) 
3! = 3*(2*(1*0!)) 
3! = 3*(2*(1*1)) = 6 
 
 
program zadanie_6_7; 
 uses Crt; 
 var s, liczba: LongInt; 
 
function silnia(n : byte) : longint; 
{funkcja oblicza silnię liczby naturalnej n} 
var  i        

: byte; 

       wartosc  

: longint; 

 
  begin 
      wartosc := 1; 
      for i := 1 to n do  wartosc := wartosc * i; 
      silnia := wartosc; 
   end; 
 
 

 
 
 
 
 
 
 
begin 
  ClrScr; 
  Write('Podaj liczbe: '); 
  readln(liczba); 
  s:=silnia(liczba); 
  Writeln(liczba,'! = ',s); 
  Writeln(liczba,'! = ',silnia(liczba)); 
  repeat until keypressed; 
end. 

background image

 

/\/\irosław Paja, gg:799450 

3

Zadanie 8.  Napisz programu, który znajduje największy wspólny dzielnik (NWD) liczb a i b. 
 
program zadanie_6_8; 
uses Crt; 
var a,b: Integer; 
 
 function nwd(a,b: integer) : longint; 
 var  pom : integer; 
 
  begin 
     while a<>b do 
          begin 
              if a<b then 
                             begin 
                                  pom:=a; 
                                  a:=b; 
                                  b:=pom; 
                             end; 
                a:=a-b; 
             end; 
     nwd:=a; 
  end; 
 

 
 
 
 
 
 
 
 
begin 
  ClrScr; 
  Write('Podaj A: ');  readln(a); 
  Write('Podaj B: ');  readln(b); 
  writeln('NWD(',a,',',b,') = ',NWD(a,b)); 
  repeat until keypressed; 
end. 
 

 
Program 9. Napisz program, zliczający wprowa-
dzone liczby ujemne i nieujemne wśród n liczb 
wprowadzonych  z klawiatury. Zdefiniuj procedu-
r
ę zliczaj (z jednym parametrem), która będzie 
zliczała liczby. 
 
program
 zadanie_6_9; 
 uses Crt; 
 var  i, n, x, ujemne, nieujemne :integer; 
          
  procedure Zliczaj(x:integer); 
     begin 
          if x<0 then ujemne:=ujemne+1 
 

        else nieujemne:=nieujemne+1; 

      end; 
 
   begin 
       ClrScr; 
       ujemne:=0;     nieujemne:=0; 
       Write('Podaj liczbe elementow: '); 
       ReadLn(n); 
       for i:=1 to n do 
             begin 
 

     Write('Podaj liczbe: '); 

 

     ReadLn(x); 

 

     Zliczaj(x); 

            end; 
       Writeln; 
       WriteLn(‘Ujemnych: ', ujemne); 
      WriteLn('Nieujemnych: ', nieujemne); 
      repeat until keypressed; 
   end. 

Program 10.  Napisz program, który wyświetli na 
ekranie trójkąt prostokątny składający się ze zna-
ków ”$”,  przy czym jego wysokość i podstawa 
mają ”długość” 10 znaków. Zdefiniuj odpowiednie 
procedury. 
 
program  zadanie_6_10; 
 uses Crt; 
 var n:integer; 
 
 procedure wiersz(n:integer); 
  var i:integer; 
  begin 
      for i:=1 to n do Write('$'); 
      WriteLn; 
  end; 
 
 procedure trojkat(n:integer); 
  var i:integer; 
  begin 
      for i:=1 to n do wiersz(i); 
  end; 
 
 begin 
     ClrScr; 
     trojkat(10); 
     repeat until keypressed; 
 end. 
 
 
 
 
 

background image

 

/\/\irosław Paja, gg:799450 

4

Program 11. Napisz program, który umoŜliwi wydrukowanie w kaŜdym naroŜniku pustego ekranu dowolnego 
 

znaku. Zdefiniuj procedurę z parametrem, której zadaniem będzie wypisanie tego znaku. 

 

program zadanie_6_11; 
 uses Crt; 
 
 procedure Znak(c:char); 
   begin 
      ClrScr; 
      GotoXY(1,1); 

 

Write(c); 

      GotoXY(80,1); 

 

Write(c); 

      GotoXY(1,24); 

 

Write(c); 

      GotoXY(80,24); 

         

Write(c); 

   end; 
 
 begin 
    ClrScr; 
    Znak('@'); 
    repeat until keypressed; 
end. 

 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 

 

6.

 

Wydobywanie dźwięku - standardowe procedury języka Pascal 

 
Sound(cz
ęstotliwość : Word;  -  powoduje wygenerowanie dźwięku o podanej częstotliwości. Dźwięk wydo-
bywa się z głośnika do czasu aŜ zostanie wyłączony bezparametrową procedurą NoSound; 
 
Delay(milisekundy : Word); -  zatrzymuje wykonywanie programu na podaną ilość milisekund (1000ms = 
1s),  
 
Wygenerowanie półsekundowego dźwięku o częstotliwości 640Hz uzyskuje się poprzez trzy polecenia:  

Sound(640); 
Delay(500); 
NoSound; 

 
JeŜeli zamierzamy w programie często generować róŜne dźwięki, to moŜna do tego celu zdefiniować  
procedurę dźwięk(s,d):  
 

procedure dzwiek (Czest, Czas : Word); 
 begin 
     Sound(Czest); 
     Delay(Czas); 
     NoSound; 
 end;  

 
 
częstotliwości nut 
 

Nuta\ Oktawa 

131 

147 

165 

175 

196 

220 

247 

262 

262 

294 

330 

349 

392 

440 

494 

523 

 
 
Zadanie 12.  Napisz program, który generujący dźwięk. 
 

background image

 

/\/\irosław Paja, gg:799450 

5

Temat  VII.

 

Sposoby przekazywania parametrów 

program zadanie_7_1; 
uses Crt; 
var a,b:integer; 
 
procedure przezWartosci(

x, y: integer

); 

{ przekazywanie parametrów przez wartosc } 
       begin 
 

x:= x+1; 

 

y:= y-1; 

 

Writeln('x = ',x); 

 

Writeln('y = ',y); 

        end
 
procedure przezZmienna(

var x, y: integer

); 

{ przekazywanie parametrów przez zmienna } 
       begin 
 

x:= x+1; 

 

y:= y-1; 

 

Writeln('x = ',x); 

 

Writeln('y = ',y); 

        end
 
begin; 
     ClrScr; 
     Write('Podaj a, a = '); 

Readln(a); 

     Write('Podaj b, b = '); 

Readln(b); 

     writeln; 
     przezZmienna(a,b); 
     Writeln(' - - - - - - - - '); 
     Writeln('a = ',a); 
     Writeln('b = ',b); 
     repeat until keypressed; 
end
 

Tabela do programu przekazywanie_parametrow: 

wartości zmiennych 

na początku procedury przez________ 

 

 

 

 

na końcu procedury przez________ 

 

 

 

 

po powrocie do programu głównego 

(zmienna przestaje istnieć

(zmienna przestaje istnieć

 

 

 

1.

 

Przekazywanie parametrów przez wartość 
 
Wywołanie procedury w programie głównym powoduje, Ŝe w miejsce parametrów formalnych (x, y)
przekazywanych przez wartość, są wprowadzone parametry aktualne (a, b). 
 
Przy przekazywaniu parametrów przez wartość zmienna x i odpowiadająca jej zmienna a zajmują dwa 
róŜne miejsca w pamięci komputera.  
 

2.

 

Przekazywanie parametrów przez zmienną 
 
Przed listą parametrów wpisuje się słowo kluczowe var. Zapis taki oznacza zarezerwowanie tego sa-
mego miejsca w pamięci dla parametrów formalnych i aktualnych. Dlatego teŜ przekazywanie parame-
trów przez zmienną określa się jako przekazywanie parametrów przez adres

background image

 

/\/\irosław Paja, gg:799450 

6

Program 2. Przeanalizuj program, w którym zastosowano dwa sposoby przekazywania argumentów do proce-
dur obliczających cenę brutto towaru. 
 

program zadanie_7_2; 
 uses Crt; 
 var cena, podatek :Real; 
 
  procedure przezWartosc(

cena:Real;

 var podatek:Real); 

    begin 
         podatek:=cena*0.22; 
         cena:=cena+podatek; 
    end; 
 
   procedure przezZmienna(

var cena:Real;

 var podatek:Real); 

    begin 
         podatek:=cena*0.22; 
         cena:=cena+podatek; 
    end; 
 
 begin 
     Clrscr; 
     podatek:=0; 
     Write('Podaj cene towaru: '); 
     readln(cena); 
     przezWartosc(cena,podatek); 
     {przezZmienna(cena,podatek);} 
     Writeln('Cena brutto: ',cena:5:2); 
     Writeln('podatek: ',podatek:5:2); 
     repeat until keypressed; 
 end. 

 
 
Program 3. 
Napisz program, który skraca podany ułamek. Zdefiniuj funkcje NWD i procedurę skracaj. 
 

program zadanie_7_3; 
 uses Crt; 
 var a,b : integer; 
 
 function NWD(x,y:integer):integer; 
  begin 
      while x<>y do 
        if x > y then x:=x-y 
                    else y:=y-x; 
         NWD:=x; 
  end; 
 
  procedure skracaj(var k,l :integer); 
   var dzielnik : integer; 
 
   begin 
       dzielnik:=NWD(k,l); 
       k:=k div dzielnik; 
       l:=l div dzielnik; 
   end; 

 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 begin 
     ClrScr; 
     Write('Podaj a: ');   Readln(a); 
     Write('Podaj b: ');   Readln(b); 
     Writeln('a/b = ',a,'/',b); 
     Skracaj(a,b); 
     Writeln('po skroceniu: '); 
     Writeln('a/b = ',a,'/',b); 
     repeat until keypressed; 
  end. 

background image

 

/\/\irosław Paja, gg:799450 

7

Program 4. Napisz program, który wyświetli na ekranie prostokąt składający się ze znaków ”*” o wymiarach  
 

n x m. Zdefiniuj procedurę prostokat (z dwoma parametrami). 

 

program zadanie_7_4; 
 uses Crt; 
 var a,b :integer; 
 
 procedure Pytaj(var a,b:integer); 
  begin 
    repeat 
      Write('Podaj bok a, a = ');  Readln(a); 
      Write('Podaj bok b, b = ');  Readln(b) 
    until (a>0) and (b>0); 
    writeln; 
  end; 
 
 procedure prostokat(a,b:integer); 
  var i,j:integer; 
  begin 
    for i:=1 to b do 
         begin 
            writeln; 
            for j:=1 to a do write('*'); 
         end; 
   end; 
 
 

 
 
 
 begin 
   ClrScr; 
   Pytaj(a,b); 
   prostokat(a,b); 
   repeat until keypressed; 
 end. 
 

Program 5. Napisz program, który wyświetli na ekranie trójkąt prostokątny składający się z n znaków ”$”.  
 

Zdefiniuj odpowiednie procedury. (Zdefiniuj procedurę, która będzie umoŜliwiała wprowadzenie 

 

wymiarów trójkąta). 

 

program zadanie_7_5; 
 uses Crt; 
 var n:integer; 
 
 procedure Pytaj(var n:integer); 
  begin 
      repeat 
         Write('Podaj wielkosc figury (1-49): '); 
         ReadLn(n); 
         if (n<1) or (n>50) then Writeln('Nie moge namalowac takiej figury!!') 
      until (n>=1) and (n<50); 
      writeln; 
  end; 
 
 procedure wiersz(n:integer); 
  var i:integer; 
  begin 
      for i:=1 to n do Write('$'); 
      WriteLn; 
  end; 
 
 procedure trojkat(n:integer); 
  var i:integer; 
  begin 
      for i:=1 to n do wiersz(i); 
  end; 
 
 

 
 begin 
     ClrScr; 
     Pytaj(n); 
     trojkat(n); 
     repeat until keypressed; 
 end. 

background image

 

/\/\irosław Paja, gg:799450 

8

Program 6. Napisz program, który korzystając z procedur wyświetli na ekranie monitora świąteczną choinkę. 
 

program zadanie_7_6; 
  uses Crt; 
  var  n:integer; 
 
 procedure Pytaj(var n:integer); 
  begin 
    repeat 
      Write('Podaj wysokosc choinki (6-40): ');  ReadLn(n); 
    until (n>=6) and (n<40); 
  end; 
 
 procedure Wiersz(poziom:integer); 
 var i:integer; 
   begin 
      for i:=1 to n-poziom do Write(' '); 
      for i:=1 to poziom*2-1 do Write('$'); 
      WriteLn; 
   end; 
 
  procedure choinka(n:integer); 
  var i: integer; 
   begin 
      for i:=1 to n-3 do Wiersz(i); 
      for i:=1 to 3 do Wiersz(1); 
    end; 

 
 
 
 
 
 
begin 
    ClrScr; 
    Pytaj(n); 
    Writeln; 
    choinka(n); 
    repeat until keypressed; 
  end. 

 
 

background image

 

/\/\irosław Paja, gg:799450 

9

Temat  VIII.

 

Instrukcja wyboru case 

 
case przełącznik of  
    wartość-1 : akcja-1;  
    wartość-2 : akcja-2;  
    ...  
    else akcja-domyślna  
  end;  
 

 

  case znak of   
     '+' : c := a + b; 
     '-'  : c := a – b 
   else Writeln(‘Zly znak’); 
  end;   
 

case miesiac of 
1,3,5,7,8,10,12  dni := 31; 
4,6,9,11 

: dni := 30; 

2  

 

: dni := 28 

end 

 
Zadanie 1. Napisz program, który w zaleŜności od podanej liczby wyświetli numer miesiąca. JeŜeli liczba jest 
inna niŜ {1..12} program wyświetla komunikat ”numer nie poprawny”.  
 
program zadanie_8_1; 
var  m:  integer; {numer miesiąca } 
 
begin 
  write ('podaj numer miesiąca: '); 
  readln (m); 
  case m of  
    1:  writeln ('styczen'); 
    2:  writeln ('luty'); 
     .... 
    12:  writeln ('grudzien'); 
    else writeln ('numer nie poprawny')  
  end; 
end. 
 
Zadanie 2. Napisz program, który wykonuje działania: +, -, *, / na wprowadzonych liczbach rzeczywistych.  

Zdefiniuj odpowiednie funkcje (np. dodawanie(a,b)).  
 
 
 
 

background image

 

/\/\irosław Paja, gg:799450 

10

Temat  IX.

 

Praca z danymi tekstowymi 

var nazwa-zmiennej: string; 

 

 

- dana typu string zajmuje zawsze 256 bajtów, niezaleŜnie od rzeczywistej długości tekstu. 

 
Aby "skrócić" łańcuch moŜna wykorzystać deklarację:   var  nazwa-zmiennej : string[długość] 
  'C' < 'P'  

(kod ASCII znaku 'C' jest mniejszy od kodu 'P')  

   
JeŜeli:  

lancuch1:='Turbo',  
lancuch2:= 'Pascal',  

 to wynikiem sklejenia obu zmiennych: 

wynik := lancuch1 + lancuch2

   

będzie oczywiście tekst 'TurboPascal'.  

 
Length(łańcuch : string ) : integer; 

 

Funkcja zwraca długość danego łańcucha.  
s:='Tekst'; 
Writeln(Length(s));    

   

 
Chr(kod : byte):char;   
Funkcja zwraca znak (wartość typu char) o poda-
nym kodzie ASCII. 
Write(Chr(7)); 
Write(#7); 
 

Ord(x) : longint;   

 

Funkcja zwraca kod ASCII  podanego znaku. 
Writeln(Ord('A'));  

  65  

 
UpCase(Ch : char) : char; 

  

Konwertuje znak do wielkiej litery. 
UpCase('a')='A'; 

UpCase('B')='B'; 

 
ReadKey 

 

Funkcja odczytuje wciśnięty klawisz.    
a:=ReadKey;

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 
 
Zadanie 1. Napisz program, który wypisuje kod 
wczytanego z klawiatury znaku. 
 
program zadanie_9_1; 
uses Crt; 
var  znak : Char; 
 
begin 
    ClrScr; 
    Write('Wpisz dowolny znak : '); 
    Readln(znak); 
    Writeln('Wpisales znak [', znak, '] o kodzie ',  
 

 

 

 

Ord(znak)); 

   repeat until keypressed; 
 end. 
 
 

Zadanie 2. Napisz program, który wczytuje napis  
i zamienia w nim wszystkie małe litery na duŜe: 
 
program zadanie_9_2; 
uses Crt; 
var  napis : string; 
     i : byte; 
 
Begin 
    Write('Podaj napis: '); 
    Readln(napis); 
    For i:=1 To Length(napis) Do napis[i]  
 

 

 

:=UpCase(napis[i]); 

     Writeln('po zamianie: ',napis); 
     repeat until keypressed; 
 end. 

Zadanie 3. Napisz program, który będzie wypisywał kody znaków  
naciskanych na klawiaturze do czasu wciśnięcia klawisza ESCAPE. 
 
program zadanie_9_3; 
Uses Crt; 
var  Znak : Char; 
 
begin 
    ClrScr; 
    WriteLn('Nacisnij dowolny klawisz lub Escape : '); 
    Znak:=ReadKey
    While Ord(Znak)<>27 Do 
        begin 

WriteLn('Znak = [', znak, '] Kod znaku = ', Ord(znak)); 

             znak:=ReadKey
         end; 
end. 

background image

 

/\/\irosław Paja, gg:799450 

11

Zadanie 4. Napisz program, oraz zdefiniuj funkcję IloscWystapien(a,b), która zwróci ilość wystąpień podanego 
 

znaku w podanym napisie. 

 
program zadanie_9_4; 
 uses Crt; 
 var  napis : string; 
        litera : char; 
        ile     : byte; 
 
 function iloscWystapien(s : string; znak : char) : byte; 
  var i, wynik : byte; 
  begin 
      wynik:=0; 
      for i:=1 to Length(s) do 
      if s[i]=znak then Inc(wynik); 
      iloscwystapien:=wynik; 
  end; 
 
begin 
    ClrScr; 
    Write('Podaj napis: ');      Readln(napis); 
    Write('Podaj litere: ');     Readln(litera); 
    ile:=iloscwystapien(napis,litera); 
    Writeln('W podanym napisie litera "',litera,'" wystepuje ',ile,' razy.'); 
    repeat until keypressed; 
end. 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 
 
Pozostałe funkcje i procedury łańcuchowe 
 
Concat(ła
ńcuch1,łańcuch2, ...): string;  
Funkcja łączy otrzymane łańcuchy w jeden, który następnie zwraca.  
Writeln(Concat('abc','def','ghi')); 

- abcdefghi 

Writeln('abc'+'def'+'ghi'); 
 
Copy(łańcuch : string; skąd, ile : integer): string;  
Funkcja zwraca podciąg łańcucha zaczynający się od indeksu skąd i mający ile znaków. Jeśli skąd jest większe 
niŜ długość łańcucha, to zwracany jest łańcuch pusty. Jeśli ile podaje więcej znaków, niŜ ich jest w łańcuchu od 
indeksu skąd, to zwraca tyle znaków, ile jest.  
Writeln(Copy('abcde',1,3));   

 

  

'abc' 

Writeln(Copy('abcde',6,3));      

  

'' 

Writeln(Copy('abcde',4,3));      

  

'de' 

 
Pos(podciąg, łańcuch : string) : byte;      
Podaje pozycje wyszukanego podciągu w danym łańcuchu znaków. 
Pos(‘Pascal’,’Turbo Pascal’) 

  

 
Delete(var s : string; początek, ile : integer);  
Procedura usuwa z określonego parametrem s łańcucha ile znaków zaczynając od indeksu początek.  
s:='jakiś długi tekst'; 

 

Delete(s,7,6); 
Writeln(s);   

  

'jakiś tekst' 

 
Val(S:string;V:integer;error:integer); 

 

Funkcja przekształca ciąg znaków na liczbę. 

val('123',i,error);      

 

i=123 

val('abc',i,error);      

 

error<>0 

 
Str(X;S:string); 

 

Instrukcja zamienia liczbę  X na łańcuch znaków. 

background image

 

/\/\irosław Paja, gg:799450 

12

Temat  X.

 

Tablica jako przykład trybu strukturalnego. 

 
Deklaracja tablicy 

var zmienna: array [1..n] of typ elementów tablicy; 

Tablica jest złoŜoną strukturą danych, składającą się z określonej liczby elementów tego samego typu.  

Deklaracja tablicy składającej się z 20 znaków:  array [1..20] of char; 

 
Zadanie 1. Napisz program, który wczytuje dane do tablicy, a potem je wyświetla. 
 

program zadanie_10_1; 
uses Crt; 
const n = 3; 
var  I  : integer; 
     tab  : array [1..n] of integer; 
 
 procedure Czytaj(n:byte); 
  begin 
     for i:=1 to n do 
        begin 
            write('tab[',i,']= '); 
            Readln(tab[i]); 
        end; 
  end; 
 
  procedure Wyprowadz(n:byte); 
   begin 
      for i:=1 to n do 
        begin 
            write('tab[',i,']= ',tab[i]); 
            writeln; 
        end; 
   end; 

 
 
 
 
 
 
 begin 
     ClrScr; 
     Writeln('Wprowadz elementy do tabl-
licy'); 
     Czytaj(n); 
     Writeln; 
     Writeln('Elementy tablicy'); 
     Wyprowadz(n); 
     repeat until keypressed; 
 end. 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 
 
Do otrzymania liczb losowych słuŜy procedura Randomize i funkcja Random(),  
Funkcja Random(zakres) zwraca całkowitą liczbę pseudolosową z zakresu 0..zakres-1. Argument zakres po-
winien być liczbą całkowitą, najczęściej typu Word.  
 
Zadanie 2. 
Napisz program, który z podanego zakresu losowo wczyta liczby do tablicy, a potem je wyświetla. 
 
program zadanie_10_2; 
uses Crt; 
const n = 10; 
var  i,x  : integer; 
      tab  : array [1..n] of integer; 
 
 procedure Czytaj(n:byte); 
  begin 
    for i:=1 to n do tab[i]:=

random(x);

 

  end; 
 
 procedure Wyprowadz(n:byte); 
  begin 
      for i:=1 to n do begin 
                                   write('tab[',i,']= ',tab[i]); 
                                   writeln; 
                                end; 
  end; 

 
 
 
 
 
 
 
 
 begin 
     ClrScr; 
     Write('Podaj przedzial liczb (max 50): '); 
     readln(x); 
     Czytaj(n); 
     

Randomize; 

     Writeln('Elementy tablicy'); 
     wyprowadz(n); 
     repeat until keypressed; 
 end

background image

 

/\/\irosław Paja, gg:799450 

13

Zadanie 3. Napisz program, który zapełnia tablicę przypadkowymi liczbami z zakresu (0,100) i znajduje  
 

największą oraz najmniejszą z nich. 

 
program zadanie_10_3; 
uses Crt; 
var   liczby  

  

: array[1..20] of byte; 

         i, N, Min, Max  

: byte; 

   
begin 
    ClrScr; 
    Randomize; 
    for i := 1 to 20 do liczby[i] := Random(101); 
    Min := liczby[1]; 
    Max := liczby[1]; 
    writeln; write('Tablica: '); 
    for i := 1 to 20 do 
      begin 
          write(liczby[i], ' '); 
          if liczby[i] > Max then Max := liczby[i]; 
          if liczby[i] < Min then Min := liczby[i]; 
       end; 
    writeln; 
    writeln('Najmniejsza liczba to: ', Min); 
    writeln('Najwieksza liczba to: ', Max); 
    repeat until keypressed; 
 end. 
 
Zadanie 4. Napisz program, który oblicza średnią wprowadzonych do tablicy liczb. 
 
program zadanie_10_4; 
uses Crt; 
const n = 3; 
var  I  : integer; 
       tab : array [1..n] of integer; 
 
 procedure Czytaj(n:byte); 
   begin  
       … 
   end; 
 
  procedure Wyprowadz(n:byte); 
   begin 
       … 
   end; 
 
  function Srednia(n:byte):real; 
   var suma, sr :real; 
       begin 
        suma:=0; 
        for i:=1 to n do suma:=suma+tab[i]; 
        sr:=suma/n; 
        Srednia:=sr; 
    end; 

 
 
 
 
 
begin 
     ClrScr; 
     Writeln('Wprowadz elementy do tabllicy'); 
     Czytaj(n); 
     Writeln('Srednia wprowadzonych liczb to: '); 
     Writeln; 
     Writeln('Elementy tablicy'); 
     wyprowadz(n); 
     Writeln('Srednia wprowadzonych liczb to: ',  
 

 

 

 

srednia(n):5:2); 

     repeat until keypressed; 
 end. 

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ 

 
W przykładach wykorzystałem materiały z: 
 
1.

 

ksiąŜki TURBO Pascal 5.5 Andrzeja Marciniaka 

2.

 

podręczników GraŜyny Koby Informatyka cz. I i Informatyka cz. II 

3.

 

z serwisu: http://helion.pl/online/turbo-pasca