Aula16

VETORES

 

 

 

 

VETOR
Sintaxe:

<nome array>: array [dimensão] of <tipo>;

Declaração e exemplo:

Var
    vet:array[1..6] of integer;
Begin
    vet[2]:=90;
    vet[4]:=45;
    vet[5]:=30;
end.

Representação:
 

 

90

 

45

30

MATRIZ
Sintaxe:

<nome array>: array [dimensões] of <tipo>;

Declaração e exemplo:

Var
    mat:array[1..5,1..3] of integer; {matriz 19x3}
Begin
    mat[1,2]:=10;
    mat[3,1]:=11;
    mat[5,3]:=12;
    mat[2,2]:=78;
end.

Representação:

mat[linha,coluna]

 

10

 

 

78

 

11

 

 

 

 

 

 

 

12

 

Exemplo : Inclusão de 5 valores inteiros num vetor, e depois disto emitir a soma dos mesmos.

 

program vet_soma;

var

   v: array [1..5] of integer;

   soma,cont:integer;

Begin

     soma:=0;

     writeln('digite os 5 valores');

     for cont:=1 to 5 do

         readln(v[cont]);

     for cont:=1 to 5 do

         soma:=soma + v[cont];

     writeln('Soma=',soma);

end.

Exemplo: Ler 6 valores em uma matriz de 2 linhas e 3 colunas e depois disto emitir a soma dos valores.

program matriz;

var

   m:array[1..2,1..3] of integer;

   soma,contl,contc:integer;

Begin

     writeln('Digite os 6 valores');

     soma:=0;

     for contl:=1 to 2 do

         for contc:=1 to 3 do

             readln(m[contl,contc]);

     for contl:=1 to 2 do

         for contc:=1 to 3 do

             soma:=soma + m[contl,contc];

     writeln('Soma=',soma);

end.

 

 

Ler as notas de 30 alunos.Calcular e informar a média da turma.

 

Program MediaTurma;

var Nota : real;  { nota de um aluno }

       Media, Soma: real;

       Aluno: integer; { variável de controlo da repetição }

begin

  Soma := 0; { inicializa a soma das notas }

  for Aluno := 1 to 30 do { para cada aluno da turma }

        begin

         readln(Nota); { obtém a nota do aluno }

        Soma := Soma + Nota

        end;

   Media := Soma / 30;

   writeln(‘Media da turma: ’, Media:5:1);

end.

 

a) Escreva um programa que mostra no ecrã os múltiplos de 5 entre 1 e 100.

a.1. Com recurso ao ciclo while

a.2.com recurso ao ciclo for

 

b) Escreva um programa que pede um número, se o utilizador digitar um número  inferior a 100 o programa deve solicitar o número novamente.

b.1. Com recurso ao ciclo repeat

b.2.com recurso ao ciclo while

 

 

 

1.  Compila, traduz e explica o programa

 

PROGRAM EJER55;

        USES CRT;

 

        VAR sns:REAL; {salario neto semanal}

        VAR h_trabajadas, h_extra:REAL;

        VAR precio_h, precio_h_extra:REAL;

        VAR total:REAL;

        VAR impuestos0,impuestos25,impuestos45:REAL;

        {Impuestos con cada % correspondiente}

BEGIN

     ClrScr;

 

     WRITELN ('INTRODUZCA LOS DATOS PARA CALCULAR EL SALARIO  NETO SEMANAL');

     WRITELN ('');

     WRITE ('Las horas trabajadas semanales son 35, las demas  debe ');

     WRITELN ('considerarlas como horas extra. Escriba en  dolares.');

     WRITELN ('');

     WRITE ('Horas trabajadas: ');     READLN (h_trabajadas);

     WRITE ('Horas extra: ');          READLN (h_extra);

     WRITE ('Precio por cada hora: '); READLN (precio_h);

     WRITELN ('');

 

     precio_h_extra:=precio_h * 1.5;

     sns:=(h_trabajadas * precio_h) + (h_extra * precio_h_extra);

 

     impuestos0:=0;

     impuestos25:=sns - ((sns - 50) * 0.25);

     impuestos45:=sns - ((sns - 90) * 0.45);

 

     IF sns <= 50 THEN

     WRITELN ('El salario neto semanal es: ',sns:5:2)

     ELSE IF sns < 90 THEN

     WRITELN ('El salario neto semanal es: ',impuestos25:5:2)

     ELSE IF sns > 90 THEN

     WRITELN ('El salario neto semanal es: ',impuestos45:5:2);

     readln;

END.

2.  Compila, traduz e explica o programa

1.  scribir un programa en Pascal que sume dos cadenas. (los datos vienen en

2.  el cuerpo del ejercicio).

3.   

4.  PROGRAM EJER60;

5.          USES CRT;

6.   

7.          VAR tit_pel1:STRING;

8.          VAR tit_pel2:STRING;

9.          VAR tit_pel3:STRING;

10. BEGIN

11.      tit_pel1:='Alien';

12.      tit_pel2:='Blade ';

13.      tit_pel3:='Runner';

14.  

15.      ClrScr;

16.  

17.      WRITELN ('TITULOS DE PELICULAS');

18.  

19.      WRITELN (tit_pel1);

20.      WRITELN (tit_pel2 + tit_pel3);

21.  

22. END.

 

 

 

 

 

program SUM_ARRAY(input, output);

TYPE

   IntArray = array[1..5] of integer;

 

VAR

   i, sum: integer;

   numbers : IntArray;

 

begin

   sum := 0;

   numbers[1] := 3;

   numbers[2] := 7;

   numbers[3] := 2;

   numbers[4] := 4;

   numbers[5] := 5;

 

   for i := 1 to 5 do

       sum := sum + numbers[1];

   writeln('sum = ', sum);

end.

program limitearray;

uses crt;

 

const

     max=10; {Creio que seja o suficiente não?}

 

var

   i,limarray:integer;

   palavras:array [1..max] of string;

 

begin

  clrscr;

  writeln('Entre com o limite do Array');

  read(limarray);

  for i:=1 to limarray do

    begin

      writeln('Entre com o array ',i,' do vetor');

      readln(palavras[i]);

    end;

  for i:=1 to limarray do writeln(palavras[i]); {Imprimir oq tu computou}

end. 

 

 

program arrays2;

  type

    CustomTable=record

      m_kind:Integer;

      m_value:Integer;

      m_name:array[1..16] of Char;

    end;

 

  var

    arr1:array [1..3] of CustomTable;

    arr2:array [1..5] of CustomTable;

 

  procedure DBAdd(in_defn:array of CustomTable);

    var i:Integer;

  begin

    writeln('Lower index of in_defn   = ', low(in_defn));

    writeln('Upper index of in_defn   = ', high(in_defn));

    writeln('Number of array elements = ', high(in_defn)+1);

    for i:=low(in_defn) to high(in_defn) do

      writeln(' - ',i,' : ',in_defn[i].m_value);

  end;

 

begin

  (*--- 3 elements array ---*)

  arr1[1].m_value:=42;

  arr1[2].m_value:=43;

  arr1[3].m_value:=44;

 

  writeln('Lower index of arr  = ', low(arr1));

  writeln('Upper index of arr  = ', high(arr1));

  writeln;

  DBAdd(arr1);

  writeln('--------------------------------');

  (*--- 5 elements array ---*)

  arr2[1].m_value:=10;

  arr2[2].m_value:=20;

  arr2[3].m_value:=30;

  arr2[4].m_value:=40;

  arr2[5].m_value:=50;

  writeln('Lower index of arr  = ', low(arr2));

  writeln('Upper index of arr  = ', high(arr2));

  writeln;

  DBAdd(arr2);

  readln;

end. 

 

 

 

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   begin

     arr[i]:=i;

     writeln('pos  ', arr[i]);

end;

  readln;

END.

 

Programa tabuada do 2

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   begin

     arr[i]:=i*2;

     writeln('pos  ', arr[i]);

end;

  readln;

END.  

 

 

 

 

 

Explica o funcionamento do programa

 

Program exC ;

  var arr:array[1..10] of integer;

    i:integer;

BEGIN

  for i:=1 to 10   do

   arr[i]:=i*2;

   begin

       for i:=1 to 10   do

     writeln('valor da pos  ',i,'   ' ,arr[i]);

end;

  readln;

END. 

 

 

 

Escreva um programa em Pascal para preencher uma matriz de números
inteiros entre 4 e 14.

1.  PROGRAM EJER81;

2.          USES CRT;

3.          VAR arr_num:ARRAY [4..14] of INTEGER;

4.          VAR i:INTEGER;

5.  BEGIN

6.       ClrScr;

7.   

8.       FOR i:=4 TO 14 DO

9.           arr_num[i]:=i;

10.  

11.      FOR i:=4 TO 14 DO

12.      BEGIN

13.           WRITELN('Numero: ',arr_num[i]);

14.      END;

END.

Escreva um programa em Pascal que, após a atribuição de números, 23, 45, 68, 99, 10, 15 e 4 para uma matriz, determine a posição da matriz onde está localizado o maior valor.

 

PROGRAM EJER88;

        USES CRT;

        CONST arr_num:ARRAY [1..7] of INTEGER=(23,45,68,99,10,15,4);

        VAR i:INTEGER;

BEGIN

     ClrScr;

 

     FOR i:=1 TO 7 DO

     BEGIN

 

     IF arr_num[i]=99 THEN

        WRITE ('Aposicao do maior num  (',arr_num[i],') e: ',i);

     END;

     readln;

END.

 ENVIAR AO PROFESSOR (PROFCARLOS2006@gmail.com)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.  PROGRAM EJER46;

2.          USES CRT;

3.   

4.          VAR num:INTEGER;

5.  BEGIN

6.       num:= 5;

7.   

8.       ClrScr;

9.   

10.     WHILE num <= 100 DO

11.     BEGIN

12.          WRITELN (num);

13.          num:= num + 5;

14.     END;

15.END.

16. 

17. 

18.PROGRAM EJER46;

19.        USES CRT;

20.        VAR sem:INTEGER;

21.BEGIN

22.     ClrScr;

23. 

24.     FOR sem:= 1 TO 100 DO

25.     BEGIN

26.          IF sem mod 5=0 THEN

27.             WRITELN(sem);

28.     END;

END.

 

 

  1. PROGRAM EJER52;
  2.         USES CRT;
  3.  
  4.         VAR num:INTEGER;
  5. BEGIN
  6. {Este programa no finaliza hasta que se escribe un numero mayor a 100}
  7.  
  8.      ClrScr;
  9.  
  10.      REPEAT
  11.            WRITELN ('Introduzca un numero: ');
  12.            READLN (num);
  13.      UNTIL num > 100;
  14. END.
  15.  
  16.  
  17. PROGRAM EJER52;
  18.         USES CRT;
  19.         VAR num:INTEGER;
  20. BEGIN
  21.      ClrScr;
  22.  
  23.      WRITE('Introduzca un numero -> '); READLN(num);
  24.  
  25.      WHILE num<=100 DO
  26.      BEGIN
  27.           WRITE('Introduzca un numero -> '); READLN(num);
  28.      END;
  29. END.