tema 1 introducciÓn a los lenguajes de … · parecido, como los de un alfabeto o silabario de la...

38
Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN - Introducción - Sintaxis - Semántica básica - Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

Upload: tranhanh

Post on 20-Sep-2018

212 views

Category:

Documents


0 download

TRANSCRIPT

Tema 1

INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

- Introducción

- Sintaxis - Semántica básica

- Tipos de datos - Expresiones y enunciados - Procedimientos y ambientes - Tipos abstractos de datos y módulos

TIPOS DE DATOS

•TIPOS DE DATOS SIMPLES –Entero

–Real –Booleano

–Carácter –Enumerados –Subrango

•TIPOS DE DATOS ESTRUCTURADOS –Arrays –Registros –Listas

EN PASCAL

EN C

Datos de tipo entero

Operaciones con enteros

•Las típicas operaciones aritméticas: suma, resta, multiplicación y división se pueden realizar con datos de tipo entero. •Módulo o resto de la división entera

•Operaciones relacionales y de asignación

•Lenguajes como C tiene operaciones a nivel de bit (desplazamiento)

EN PASCAL

EN C

Tipo de dato real

Tipo de dato lógico o booleano

•El tipo de dato lógico o booleano es en computación aquel que puede representar valores de lógica binaria, esto es 2 valores, valores que normalmente representan falso o verdadero. •Estos se pueden combinar en expresiones lógicas mediante los operadores lógicos (AND, OR, NOT, ...)

EN PASCAL

EN C

Tipo de dato lógico o booleano

tipo de dato carácter

•un carácter es una unidad de información que corresponde aproximadamente con un grafema o con una unidad o símbolo parecido, como los de un alfabeto o silabario de la forma escrita de un lenguaje natural. •Los ordenadores y los equipos de comunicaciones representan caracteres mediante el uso de una codificación que asigna un valor a cada carácter (típicamente, un valor entero representado por una secuencia de bits) que puede ser almacenado o transmitido por una red. La codificación más común ha sido hasta hace poco ASCII, si bien actualmente se está haciendo más popular el Unicode.

EN PASCAL

EN C

Tipo de dato carácter

Tipos De Datos Enumerados

•Una enumeración o tipo enumerado es un tipo especial de estructura en la que los literales de los valores que pueden tomar sus objetos se indican explícitamente al definirla. Ejemplo de enumerado en C enum Tamaño

{

Pequeño, Mediano, Grande }

EN PASCAL

EN C

Tipo de dato enumerado

Tipo de dato subrango •Un tipo subrango se define de un tipo ordinal, especificando dos constantes de ese tipo, que actúan como límite inferior y superior del conjunto de datos de ese tipo. Un tipo subrango es un tipo ordinal y sus valores se ordenan de igual modo que en el tipo patrón de que se deducen. •Ejemplos 0..9 — este tipo subrango consta de los elementos 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

'0'..'9' — este subrango consta de los caracteres '0', '1', '2', '3', '4', '5', '6‘, '7‘ ,'8‘, '9' 'A'..'F' — este subrango consta de los caracteres 'A', 'B', 'C', 'D', 'E', 'F'

EN PASCAL

EN C: como tal los subrangos no existen

Tipo de dato subrango

Tipos de datos estructurados

•Un objeto de datos que está construido como un agregado de otros objetos de datos, llamados componentes. Un componente puede ser elemental o puede ser otra estructura de datos; por ejemplo, un componente de un arreglo puede ser un número o un registro, una cadena de caracteres u otro arreglo.

Especificación de tipos de estructuras de datos

•Número de componentes: puede ser de tamaño fijo si el número de componentes es invariable durante su tiempo de vida, o de tamaño variables si cambia de forma dinámica. •Tipo de cada componente: Estructura homogénea si todos sus componentes son del mismo tipo. Heterogénea si sus componentes son de tipo distinto. •Nombres que se deben usar para seleccionar componentes. •Número máximo de componentes. •Organización de los componentes.

Operaciones sobre estructuras de datos

•Operación de selección de componentes: –Selección directa.- Tiene el acceso a un componente arbitrario de la estructura de datos. –Selección secuencial.- Los componentes se selecciones en un orden determinado.

•Inserción / eliminación de componentes. •Creación / destrucción de estructuras de datos. •Operaciones con estructuras de datos completas. Las operaciones pueden tomar estructuras de datos enteras como argumentos y producir nuevas estructuras de datos como resultados.

Almacenamiento de los valores

•Las dos representaciones básicas son: •Representación secuencial: La estructura de datos se guarda en un solo bloque contiguo de almacenamiento que incluye tanto descriptor como componente. •Representación vinculada: La estructura de datos se guarda en varios bloques no contiguos de almacenamiento, con los bloques vinculados entre sí a través de punteros.

Arrays •zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. •En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones. Notación Ejemplos

vector[índice_1,índice_2...,índice_N] (Java, Lexico, Perl, etc.)

vector[índice_0][índice_1]...[índice_N] (C, C++, PHP, etc.)

vector(índice_1,índice_2...,índice_N) (Basic)

EN PASCAL

EN C:

Tipo de dato array

Tipo de datos registro •Un registro, en programación, es un tipo de dato estructurado formado por la unión de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carácter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le llama campo. struct: TipoEmpleado

{

int ID ;

int Edad ;

float SALARIO ;

char Dpto.

} Empleado;

EN PASCAL

EN C:

Tipo de dato registro

Listas

•Una estructura de datos compuesta de una serie ordenada de estructuras de datos se conoce como lista. •Las listas se componen de una serie ordenada de objetos. Las listas difieren de los vectores en varios aspectos importantes: 1.Las listas son rara vez de longitud fija

2.Las listas no suelen ser homogéneas.

EXPRESIONES Y ENUNCIADOS

•Expresión: es un bloque de construcción básico que puede acceder a los datos del programa y que devuelve un resultado. Enunciado (también denominado sentencia) es el bloque de construcción en el que se basan los lenguajes imperativos.

EXPRESIONES •Formada por

–una constante (5 “Hola Mundo” nil null NULL true false) –una variable

–invocación a un subprograma que devuelve un valor –expresión condicional –Operador con operandos que sean expresiones

•Operadores –unarios (cambio de signo -4, autoincremento i++ ++i…) –binarios (+,-,*,/, mod) usados de manera infija

•Operadores sobrecargados + para suma de números, concatenación de cadenas…

EN PASCAL

EN C:

Expresiones vs enunciados( o sentencias)

EFECTOS COLATERALES

•Expresiones que cambian el estado de la máquina (que a priori no debería estar permitido) •Por ejemplo:

–Operador incremento y decremento en C ++i –En C, la asignación además de cambiar el valor devuelve el valor –a=b=c;

EN C:

Efectos colaterales

1.5.3 EVALUACIÓN DE EXPRESIONES

Expresiones booleanas en cortocircuito

•Consiste en no evaluar una expresión completamente cuando ya se puede conocer el valor

–Ejemplo: if (A=0) or (B/A >0) then ... else

–No puede fallar debido a división entre cero, puesto que si A = 0 la evaluación de la expresión completa concluye y el valor se toma como cierto.

EN PASCAL

EN C:

Cortocircuito

1.5.3 EVALUACIÓN DE EXPRESIONES

•EVALUACIÓN DIFERIDA Y EVALUACIÓN ESTRICTA –Evaluación diferida( o perezosa): Retardar el cálculo de las expresiones hasta que realmente son necesarias

(Integer, Integer, Integer, Integer)-> Integer

maxMin(a,b,exprA,exprB)=if(a>b) then exprA else

exprB

–Evaluación estricta (o ansiosa): Los argumentos de una función son completamente evaluados antes de la invocación de la función

int maxMin(int a,int b,int exprA, int exprB){

if (a>b)

return exprA

else

return exprB

}

EN PASCAL

EN C:

Evaluación diferida y estricta

ENUNCIADOS

•Enunciados compuestos –Secuencia de enunciados ejecutados secuencialmente. Por ejemplo en pascal begin

enunciado_1;

enunciado_2;

end

–Por ejemplo en C {

enunciado_1;

enunciado_2;

}

ENUNCIADOS •Enunciados condicionales –Controlan que enunciados se ejecutan en base a una determinada condición. Por ejemplo en C o Java if (condición) {

enunciado_1;

enunciado_2;

}

–También pueden incluir la ejecución de otros enunciados en caso de no cumplirse la condición Por ejemplo en C o Java if (condición) {

enunciado_1;

enunciado_2;

}

else{

enunciado_1;

enunciado_2;

}

ENUNCIADOS •Enunciados condicionales

–Se evalua una condición y se compara con una serie de alternativas. Por ejemplo en Pascal case(a/2) of

0: begin

enunciado_1;

enunciado_2;

end;

1: begin

enunciado_1;

enunciado_2;

end;

else: begin

enunciado_1;

enunciado_2;

end;

end;

Por ejemplo en C o Java switch(a/2) {

case 0:

enunciado_1;

enunciado_2;

break;

case 1:

enunciado_1;

enunciado_2;

break;

default:

enunciado_1;

enunciado_2;

break;

}

Enunciados de iteración

•Repiten un enunciado un determinado número de veces según el valor de una condición

•Enunciado de repetición con contador –Por ejemplo en Pascal for i:=1 to 10 do

begin

grupo de instrucciones;

end;

–Por ejemplo en C o Java for (i=1; i<10; i++) {

grupo de instrucciones;

}

Enunciados de iteración

•Enunciado iterativo con condición. –Por ejemplo en Pascal while condicion do

begin

grupo cierto de instrucciones;

instruccion(es) para salir del ciclo;

end;

–Por ejemplo en C o Java while (condicion) {

grupo cierto de instrucciones;

}

Enunciados de iteración

•Enunciado iterativo con condición. –Por ejemplo en Pascal REPEAT

WriteLn (Numero);

Numero := Numero + 1;

UNTIL Numero = 50;

–Por ejemplo en C o Java do{

grupo cierto de instrucciones;

}

while (condicion);

MANEJO DE EXCEPCIONES •Las excepciones puede representar diversas condiciones de error, tales como condiciones inesperadas de final de archivo, errores de ámbito de subíndices o datos malos por procesar. •Ejemplo de manejo de excepción en Java: import java.io.IOException;

// ...

public static void main(String[] args) {

try {

// Se ejecuta algo que puede producir una

excepción

} catch (IOException e) {

// manejo de una excepción de

entrada/salida

} catch (Exception e) {

// manejo de una excepción cualquiera

} finally {

// código a ejecutar haya o no excepción

}

}