TABLAS

28
TABLAS • Definición . El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. • Ejemplos . El tipo tabla se utiliza para definir puntos en 3-D, vectores, matrices, palabras, etc.

description

TABLAS. Definición . El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos . El tipo tabla se utiliza para definir puntos en 3-D, vectores, matrices, palabras, etc. TABLAS. Sintaxis - PowerPoint PPT Presentation

Transcript of TABLAS

Page 1: TABLAS

TABLAS

• Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo.

• Ejemplos. El tipo tabla se utiliza para definir puntos en 3-D, vectores, matrices, palabras, etc.

Page 2: TABLAS

TABLAS

• Sintaxisnombre_nuevo_tipo = tabla [rango, rango,...] de nombre_tipo

donde rango se define como primer_rango .. ultimo_rango siendo primer_rango y ultimo_rango expresiones de constantes de tipo entero el número de elementos que se pueden guardar en la tabla es igual a ultimo_rango–primer_rango+1

Page 3: TABLAS

TABLAS

• Ejemplosalgoritmo

tipo vector = tabla [1..10] de real palabra = tabla [1..10] de caracteres matriz = tabla [1..20,1..30] de entero ftipo var v1,v2: vector; p:palabra; m:matriz fvar

Page 4: TABLAS

Operaciones

La única operación que se puede realizar con un tipo tabla es la asignación. La asignación puede ser:

• Tabla -> Tabla • Componente de la tabla -> variable del tipo

base• Objeto del tipo base -> componente

Sobre los componentes de la tabla se pueden realizar las mismas operaciones que sobre cualquier objeto del mismo tipo base.

Page 5: TABLAS

OperacionesEjemplostipo vector = tabla [1..10] de realftipovar v1,v2: vector ; n: real fvar

• Tabla -> Tabla v1 := v2• Componente de la tabla -> variable del tipo base v1[1] := n• Objeto del tipo base -> componente n := v1[7]

Page 6: TABLAS

Operaciones

EjemplosCualquier operación que se puede realizar

con el tipo base

v1[1] := LeerReal() v1[2] := v1[1] *v2[1] /0.5 EscribirReal (v1[2]) EscribirReal(v1[1]+v2[2])

Page 7: TABLAS

Convenio de longitud

• El número de elementos contenidos en una variable de tipo tabla siempre ha de ser menor o igual a la que aparece en la definición.

• Dos tipos de convenios se utilizan para indicar el número de elementos de una tabla:

• La marca específica de final (centinela)• El conocimiento explícito de la longitud

Page 8: TABLAS

Calcular el producto escalar de dos vectores de 25 elementos reales

algoritmo producto_escalar

const

N: entero = 25

fconst

tipo

vector = tabla [1..N] de real

ftipo

var v1, v2: vector; j : entero; p: real fvar

Page 9: TABLAS

Leer los N primeros reales y guardarlos en el vector v1

var v1, v2: vector; j : entero; p: real fvar

j:= 1

mientras j <= N hacer

v1[j] := LeerReal()

j := j+1

fmientras

Page 10: TABLAS

Leer los N siguientes reales y guardarlos en el vector v2

j:= 1

mientras j <= N hacer

v2[j] := LeerReal()

j := j+1

fmientras

Page 11: TABLAS

Multiplicar componente a componente

v1 y v2

j:= 1; p := 0

mientras j <= N hacer

p := p + v1[j] * v2[j]

j := j+1

fmientras

EscribirReal (p)

Page 12: TABLAS

algoritmo producto_escalar const N: entero = 25 fconst tipo vector = tabla [1..N] de real ftipo var v1, v2: vector; j : entero; p: real fvar j:= 1 mientras j < N hacer v1[j] := LeerReal j := j+1 fmientras j:= 1 mientras j < N hacer v2[j] := LeerReal j := j+1 fmientras j:= 1; p := 0 mientras j <= N hacer p := p + v1[j] * v2[j] j := j+1 fmientras EscribirReal (p)falgoritmo

Page 13: TABLAS

Estructura repetitiva para

para indice en [rango_inicial..rango_final]

(paso expresión) hacer

Sentencias

fpara

para j en [1..N] hacer

v1[j] := LeerEntero()

fpara

para j en [1..N] paso 2 hacer

v1[j] := v1[j] + 10

fpara

Page 14: TABLAS

Leer los N siguientes reales y guardarlos en el vector v2

para j en [1..N] hacer

v2[j] := LeerReal()

hacer

Page 15: TABLAS

Multiplicar componente a componente

v1 y v2

p := 0

para j en [1..N] hacer

p := p + v1[j] * v2[j]

fpara

EscribirReal (p)

Page 16: TABLAS

Lee una secuencia de enteros acabada en 0 y un siguiente entero e indica si este entero

aparece en la secuencia anterior

algoritmo búsqueda_entero

const

N: entero = 25

fconst

tipo

tentero = tabla [1..N] de entero

ftipo

var t1: tentero; n, j: entero

encontrado: booleano

fvar

Page 17: TABLAS

Leer la secuencia de enteros, guardarlos en la tabla t1 y leer el siguiente entero

j:= 1; t1[j] := LeerEntero

mientras t1[j] != 0 y j < N hacer

j := j+1

t1[j] := LeerEntero

fmientras

n := LeerEntero

Page 18: TABLAS

Buscar el entero en la secuencia guardada en el la tabla t1

j:= 1; encontrado := falso

mientras t1[j] != 0 y no encontrado hacer

si t1[j] = n entonces

encontrado := cierto

fsi

j := j+1

fmientras

si encontrado entonces EscribirCaracter(‘S’)

sino EscribirCaracter(‘N’)

fsi

Page 19: TABLAS

algoritmo búsqueda_entero

const N: entero = 25 fconst

tipo tentero = tabla [1..N] de entero ftipo

var t1: tentero; n, j: entero ; encontrado: booleano fvar

j:= 1; t1[j] := LeerEntero

mientras t1[j] != 0 y j < N hacer

j := j+1; t1[j] := LeerEntero

fmientras

n := LeerEntero; j:= 1; encontrado := falso

mientras t1[j] != 0 y no encontrado hacer

si t1[j] = n entonces encontrado := cierto fsi

j := j+1

fmientras

si encontrado entonces EscribirCaracter(‘S’)

sino EscribirCaracter(‘N’)

fsi

falgoritmo

Page 20: TABLAS

Llegir dos vector de 4 components reals I escriure el vector resultant de sumar els

dos vectors component a component

12 3 0 -5 0 -1 23 4

12 2 23 -1

Page 21: TABLAS

Llegir dos vector de N components reals I escriure el vector resultant de sumar els

dos vectors component a component

algoritme sumar_vectors

const

N: enter = 4

fconst

tipus

vector = taula [1..N] de reals

ftipus

var v1,v2: vector; j: enter

fvar

Page 22: TABLAS

algoritme sumar_vectors

const N: enter = 4 fconst

tipus vector = taula [1..N] de reals ftipus

var v1,v2: vector; j: enter fvar

per j en [1..N] fer v1[j] := LlegirReal() fper

per j en [1..N] fer v2[j] := LlegirReal() fper

per j en [1..N] fer

escriureReal (v1[j] + v2[j])

fper

falgoritme

Page 23: TABLAS

Estructura repetitiva per

per index en [rang_inicial..rang_final] fer

Sentències

fper

for (index = rang_inicial; index <=rang_final;increment index)

{

.. Sentències

}

for (j= 0; j<N; j++) {

v1[j] = v1[j + 2];

}

Les taules en C comencen a la posició 0

Page 24: TABLAS

Llegir una seqüència de enters acabada en 0 i escriure-la incrementant cada element

amb la mitjana de la seqüència

algoritme incrementar_seqüència

const

N: enter = 25

fconst

tipus

tenter = taula [1..N] de enter

ftipus

var t1: tenter; suma,n, j: enter

mitjana: real

fvar

Page 25: TABLAS

Llegir la seqüència d’enters, guardarlos en la taula1 i calcular la mitjana

j:= 1; t1[j] := LlegirEnter ; suma := t1[j]

mentre t1[j] != 0 i j < N fer

j := j+1;

t1[j] := LlegirEnter

suma := suma + t1[j]

fmentre

mitjana := EnterAReal(suma)/ EnterAReal(j)

n := j

Page 26: TABLAS

Escriure la seqüència dels enters incrementada amb la mitjana

per j en [1..n ] fer

EscriureReal (EnterAReal(t1[j]) + mitjana)

fper

Page 27: TABLAS

algoritme incrementar_seqüència

const N: enter = 25 fconst

tipus tenter = taula [1..N] de enter ftipus

var t1: tenter; suma,n, j: enter ; mitjana: real; fvar

j:= 1; t1[j] := LlegirEnter ; suma := t1[j]

mentre t1[j] != 0 i j < N fer

j := j+1;

t1[j] := LlegirEnter

suma := suma + t1[j]

fmentre

mitjana := EnterAReal(suma)/ EnterAReal(j)

n := j

per j en [1..n ] fer

EscriureReal (EnterAReal(t1[j]) + mitjana)

fper

falgoritme

Page 28: TABLAS

Traducció a C# define N 25

typedef int tenter [N];

void main(void) {

tenter t1; int suma,num, j; float mitjana, aux;

j= 0; cin >> t1[j] ; suma = t1[j];

while (t1[j] != 0 && j < N-1) {

j = j+1; cin >> t1[j] ;

suma = suma + t1[j];

}

mitjana = (float)suma / (float)j; num = j;

for (j =0; j< num; j++){

aux = (float) t1[j] + mitjana ; cout << aux <<endl;

}

system(“PAUSE”);

}