Algoritmos Trabajo Unidad 3

Materia: Algoritmos y lenguajes de programación. Tema unidad 3: Introducción a la programación de un lenguaje estructur

Views 141 Downloads 5 File size 658KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

  • Author / Uploaded
  • luz
Citation preview

Materia: Algoritmos y lenguajes de programación.

Tema unidad 3: Introducción a la programación de un lenguaje estructurado.

Catedrático: Ing. Guillermo barragán Jiménez

Elaboro: luz fernanda martinez cruz fecha: 11/DIC./18 Vo.Bo.

Temario: 3

introducción a la programación de un lenguaje estructurado. 3.1 introducción y estructura del entorno de un lenguaje de programación. 3.2 Estructura básica de un programa.

3.3 Tipos de datos 3.4 Identificadores

3.5 Almacenamiento, direccionamiento y representación en memoria 3.6 Proposición de asignación

3.7 Operadores, operandos y expresiones. 3.8 Prioridad de operadores, evaluación de expresiones.

3.9 Elaboración de programas. 3.10 Pruebas y depuración.

3.1.- INTRODUCCIÓN A LA PROGRAMACIÓN Se llama Programación a la implementación de un algoritmo en un determinado lenguaje de programación, para realizar un programa.

Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse para resolver un problema. Programa (Software en inglés) es una secuencia de instrucciones que una computadora puede interpretar y ejecutar. El proceso de creación de software es materia de la ingeniería del software, una de las ramas propias de la Ingeniería Informática. Según Niklaus Wirth un programa está formado por algoritmos y estructura de datos.

Lenguaje de programación es el idioma utilizado para controlar el comportamiento de una máquina, particularmente una computadora. Consiste en un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Hay muchos lenguajes de programación, pero para programar no es necesario conocer todos los lenguajes, es igual que cuando hablamos, podemos comunicarnos en español aunque no sepamos alemán. En la actualidad los lenguajes de programación están escritos para ser comprensibles por el ser humano, a este código se le llama código fuente, pero no es comprendido por la máquina ya que esta solo maneja el lenguaje binario. La compilación es el proceso de traducir un programa en código fuente a programa en código objeto (que usa el lenguaje binario), el programa encargado de compilar se llama compilador. La mayoría de los lenguajes de programación traen su propio compilador.

Entorno de Desarrollo Integrado (en inglés Integrated Development Environment 'IDE'): Es un programa compuesto por un conjunto de herramientas para un programador. Estos IDE son programas que sirven para programar, ya sea en un lenguaje de programación o en varios lenguajes. Para esta unidad y el resto de las unidades utilizaremos como lenguaje de programación el lenguaje C y como entorno de desarrollo el Dev-C++.

3.2.- ESTRUCTURA BÁSICA DE UN PROGRAMA Un programa fuente C es una colección de cualquier número de directrices para el compilador, declaraciones, definiciones, expresiones, sentencias y funciones. Todo programa C debe contener una función nombrada main( ), donde el programa comienza a ejecutarse. Las llaves ({ }) que incluyen el cuerpo de esta función principal, definen el principio y el final del programa. El ejemplo siguiente muestra un programa completo en C, que imprime un texto en pantalla:

Comentarios: Los comentarios en C comienzan con la secuencia '/*' y termina con la secuencia '*/'. Todo lo que se encuentre entre estas dos secuencias es omitido por el compilador. 2. Directivas al preprocesador: La etapa de compilación se realiza en dos fases, una en la que un preprocesador atiende todas las directivas que contiene el código fuente y otra etapa de traducción a código objeto. Todas las directivas al preprocesador comienzan con el caracter '#', en particular la directiva #include instruye al preprocesador para que inserte el contenido del archivo que se pasa como argumento a la directiva para su posterior compilación. 3. Definición de funciones: Se pueden definir cualquier cantidad de funciones, pero al menos debe existir la función main( ). 4. Sentencias: Todas las sentencias terminan en el caracter ';'. El cuerpo de la función main en nuestro caso, consta únicamente de la invocación de la función printf con un "string" constante como argumento. La acción de la función printf es la de imprimir en el dispositivo estándar de salida (en general el monitor)

1.

3.3.- TIPOS DE DATOS Hay varios tipos fundamentales de datos y se pueden clasificar en: - Tipos enteros: short, int, long - Tipos carácter: char - Tipos reales: float, double y long double Cada tipo entero y el tipo char puede ser calificado por las palabras clave signed o unsigned, lo que da lugar a tener disponibles los siguientes datos extras: - signed char, unsigned char - signed short, unsigned short - signed int, unsigned int - signed long, unsigned long Un entero calificado signed es un entero con signo, esto es, un número entero positivo o negativo. Un número entero calificado unsigned es un número entero sin signo, el cual es manipulado como un número entero positivo. Tipo char short int long float double long double

Ancho en bytes 1 2 2 ¿? 4 4 8 10

Rango -128 a 127 -32768 a 32767 -32768 a 32767 ¿? -2147483648 a 2147483647 3.4E-38 a 3.4E+38 1.7E-308 a 1.7E+308 1.1E-4932 a 1.1E+4932

3.4.- IDENTIFICADORES Un identificador se utiliza para reconocer o darle nombre a una variable, a una función, etc. Debe comenzar con una letra minúscula y no deben contener espacios en blanco. - Letras, dígitos y caracteres como el guión bajo ( _ ) están permitidos después del primer carácter. No puedes usar una palabra reservada como identificador. He aquí la relación de palabras reservadas del lenguaje C: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile y while.

-

El identificador se debe construir pensando en el dato al que representará o identificará. Por ejemplo, si queremos almacenar la edad de una persona, el identificador edad nos dirá más que usar una x para representar le edad de una persona.

-

3.5.-

ALMACENAMIENTO, DIRECCIONAMIENTO Y REPRESENTACIÓN EN MEMORIA

La memoria es una sucesión de celdas numeradas y una dirección de memoria no es más que un número entero. La declaración de una variable supone la reserva de una zona de memoria lo suficientemente grande para albergar su contenido. Cuando declaramos una variable de tipo int, por ejemplo, se reservan 4 bytes de memoria en los que se almacenará (codificado en complemento a 2) el valor de dicha variable. Modificar el valor de la variable mediante una asignación supone modificar el patrón de 32 bits (4 bytes) que hay en esa zona de memoria. Este programa, por ejemplo,

reserva 8 bytes para albergar dos valores enteros. Imagina que a ocupa los bytes 1000– 1003 y b ocupa los bytes 1004–1007. Podemos representar la memoria así:

Observa que, inicialmente, cuando se reserva la memoria, ésta contiene un patrón de bits arbitrario. La sentencia a = 0 se interpreta como “almacena el valor 0 en la dirección de memoria de a”, es decir, “almacena el valor 0 en la dirección de memoria 1000”. Este es el resultado de ejecutar esa sentencia:

La asignación b = a + 8 se interpreta como “calcula el valor que resulta de sumar 8 al contenido de la dirección de memoria 1000 y deja el resultado en la dirección de memoria 1004”:

Hemos supuesto que a está en la dirección 1000 y b en la 1004, pero ¿podemos saber en qué direcciones de memoria se almacenan realmente a y b? Sí: el operador & permite conocer la dirección de memoria en la que se almacena una variable:

Al ejecutar el programa tenemos en pantalla el siguiente texto (puede que si ejecutas tú mismo el programa obtengas un resultado diferente):

Normalmente no necesitamos saber en qué dirección de memoria se almacena una variable, así que no recurriremos a representaciones gráficas tan detalladas como las que hemos presentado. Usualmente nos conformaremos con representar las variables mediante cajas y representaremos su valor de una forma más cómodamente legible que como una secuencia de bits. La representación anterior se simplificará, pues, así:

Las direcciones de memoria de las variables se representarán con flechas que apuntan a sus correspondientes cajas:

Declaración de variables Cada variable de un programa debe declararse antes de ser utilizada. La declaración consiste en enunciar el nombre de la variable y asociarle un tipo. El tipo determina los valores que puede tomar la variable así como las operaciones que con ella pueden realizarse. Ejemplo: int suma, incremento; char caracter;

Una variable puede ser inicializada cuando se declara. Ejemplo: char caracter = ‘a’; int c = 1;

Declaración de constantes Una constante se declara anteponiendo al identificador la palabra const. Ejemplo: const int K = 12; const char LETRA = ‘Z’;

A una constante no se le puede asignar otro valor, es por ello que al declararla debe ser inicializada. Por conveniencia, se recomienda que los nombres de constantes estén integrados por letras mayúsculas. 3.6.- PROPOSICIÓN DE ASIGNACIÓN La operación de asignación está representada por el signo =. En una operación de asignación, el valor de la derecha, es asignado a la variable de la izquierda. Ejemplo: int n, z; n = 8; z = n + 5; 3.7.- OPERADORES, OPERANDOS Y EXPRESIONES Los operadores son símbolos que indican como son manipulados los datos. Se pueden clasificar en los siguientes grupos: aritméticos, lógicos, relacionales, de asignación y otros.

Operadores aritméticos: Operador + * / %

Operación Suma Resta Multiplicación División Módulo

Ejemplo: int a = 10, b = 3, c; float x = 2.0, y; y = x + a; /* el resultado es 12.0 de tipo float */ c = a / b; /* el resultado es 3 de tipo int */ c = a % b; /* el resultado es 1 de tipo int */ y = a / b; /* el resultado es 3 de tipo int. Se convierte a float para asignarlo a y */

Operadores lógicos: Operador &&

||

!

Operación AND. Da como resultado el valor lógico 1 si ambos operandos son distintos de cero. Si uno de ellos es cero el resultado es el valor lógico 0. Si el primer operando es igual a cero, el segundo operando no es evaluado. OR. El resultado es 0 si ambos operandos son 0. Si uno de los operandos tiene un valor distinto de 0, el resultado es 1. Si el primer operando es distinto de cero, el segundo operando no es evaluado. NOT. El resultado es 0 si el operando tiene un valor distinto de cero, y 1 en caso contrario.

Ejemplo: int p = 10, q = 0; p && q da como resultado 0 p || q da como resultado 1 !p da como resultado 0

Operadores de relación: Operador < > = == !=

Operación Primer operando menor que el segundo. Primer operando mayor que el segundo. Primer operando menor o igual que el segundo. Primer operando mayor o igual que el segundo. Primer operando igual que el segundo. Primer operando diferente que el segundo.

Ejemplo: int p, q; float x = 15, y = 18, z = 20; p = x == y; /* resultado p = 0 */ q = (x < y) && (y