introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · editorial...

56
Módulo 3 Universidad Nacional de Luján 11401 - Introducción a la Informática Universidad Nacional de Luján Departamento de Ciencias Básicas División Estadística y Sistemas Asignatura: Introducción a la informática Módulo 3: Introducción a la Programación Docentes: Jorge Peri Carlos Rodriguez Jorge Scucimarri - Marzo 2007 – Versión 1.8 1

Upload: others

Post on 26-Aug-2020

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Universidad Nacional de LujánDepartamento de Ciencias Básicas

División Estadística y Sistemas

Asignatura:

Introducción a la informática

Módulo 3:

Introducción a la Programación

Docentes:

Jorge PeriCarlos RodriguezJorge Scucimarri

­ Marzo 2007 –

Versión 1.8

1

Page 2: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Acerca de este documento

Este cuaderno de estudio está dirigido a estudiantes de la Universidad Nacional de Luján, que cursen una asignatura inicial relacionada con la programación de computadoras.

El objetivo de este módulo es dotar al alumno de conocimientos básicos, brindando una aproximación introductoria al campo de la especialidad, aportando elementos iniciales mínimos e indispensables como base para una posterior profundización en la temática.

Atención: Estos apuntes deben ser usados como referencia de los temas vistos en clase. No son, ni intentan ser un texto de estudio. El contenido de estos apuntes no alcanza para la aprobación de la materia, ya que sólo enumeran los temas vistos.Para estudiar la materia, por favor referirse a la bibliografía del curso.

2

Page 3: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Bibliografía

Fundamentos de informática, lógica, resolución de problemas, programas y computadoras Autores Allen B. Tucker, W. James Bradley, Robert D. Cupper, David K. Garnick Editorial McGraw-Hill Año 1994

Curso de programación Autores Jorge Castro, Felipe Cucker, Xavier Messeger, Albert Rubio, Luis Solano, Borja Valles Editorial McGraw-Hill Año 1993

Fundamentos de programación. Algoritmos y Estructuras de DatosAutores Luis Joyanes Aguilar Editorial McGraw-Hill, 2da edición, Año 1998

Algoritmos. Problemas resueltos y comentados Autores Joaquín Fernández, Francisco J. Oliver, José L. Sánchez Editorial Paraninfo Año 1992

AlgorithmsAutores Ian Craw y John Pulham.Universidad de Aberdeen.http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/notes.html

El Lenguaje de programación C.

Autores B. Kernighan, B y D.Ritchie.Editorial Prenctice Hall , 2da edición

Introducción a la programación. Un enfoque prácticoAutores J.M. González, J. Cordero, , R. Martínez, R. RomeroEditorial Algaida Informática, año 1996

3

Page 4: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Contenidos

Primera Parte: Conceptos Básicos

DatosNombreTipoValor

Tipos de Datos PrimitivosEnteroRealCaracterLógico

VariablesDeclaración de constantes y variables

Expresiones y OperadoresOperadores AritméticosOperadores RelacionalesOperadores sobre CadenasOperadores Lógicos

Tabla de Verdad del Operador NOTTabla de Verdad del Operador ANDTabla de Verdad del Operador ORTabla de Verdad del Operador XOR

Orden de Evaluación de los OperadoresFunciones del LenguajeTrabajo Práctico I - Introducción a la Programación.

Tercera Parte: Programación Estructurada: Estructuras de Control

Estructogramas o Diagramas ChapínEscritura de ProgramasEntrada y Salida de InformaciónEstructura SecuencialTrabajo Práctico II - Estructura SecuencialEstructura de Selección

DecisionesEstructura Condicional SimpleEstructura Condicional CompuestaSelecciones AnidadasMenú de OpcionesEstructura de Selección Múltiple

Trabajo Práctico III - Estructura CondicionalEstructura Repetitiva o Iterativa

Estructura MientrasEstructura RepetirEstructura Repetir-HastaEstructura Para

Búsqueda del ExtremoValidación de DatosTrabajo Práctico IV - Estructura Repetitiva

4

Page 5: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Conceptos BásicosDefinicionesInformática: Disciplina que estudia el análisis y resolución de problemas con la finalidad de procesar información automáticamente.

Computadora: Maquina electrónica con capacidad de realizar cálculos numéricos y lógicos, cuya finalidad es ejecutar programas almacenados que resuelven problemas.

Dato: Es una representación de un hecho.

Información: Son datos recolectados y procesados de alguna forma, que poseen una relevancia para un observador particular. De forma más estricta, información es cualquier hecho que reduzca la incertidumbre.

Hardware: Conjunto de elementos físicos relacionados que componen una computadora.

Software: Son los datos y programas que hacen funcionar a una computadora. Es de caracter intangible. Buscar una definición más formal

Algoritmo: Conjunto finito y no ambiguo de etapas expresadas en un cierto orden, que a partir de condiciones iniciales pueda resolver un problema en un tiempo finito.

Programa: Algoritmo codificado en algún lenguaje de programación, que una computadora es capaz de interpretar y ejecutar , a los efectos de resolver un determinado problema.

Usuario: Persona que utiliza los servicios que le brinda la computadora.

5

Page 6: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Paradigmas de Programación

Un paradigma de programación es un modelo básico de diseño y desarrollo de programas. Los llamados paradigmas de programación son conceptualizaciones genéricas, que agrupan bajo un nombre a distintos lenguajes de programación.

• Paradigma Imperativo

Esta basado en el modelo Von Neumann, en donde un conjunto de operaciones primitivas realizan una ejecución secuencial. Se utiliza esencialmente la instrucción de asignación como constructor básico, sobre el cual se construyen las instrucciones de control secuencial, alternativo e iterativo.

Los lenguajes imperativos son orientados a instrucciones y por ello se consideran conducidos por comandos. Los programas escritos en ellos se basan en la idea de secuencia de instrucciones que se tienen que llevar a cabo como una receta, son la transcripción de un algoritmo. La unidad de trabajo es la instrucción. Un programa consta de una secuencia de sentencias, y la ejecución de cada sentencia obliga al intérprete o compilador a cambiar el valor de una o más localizaciones en su memoria.

PROGRAM intercambio; VAR x,y, tmp; BEGIN

tmp := x; x := y; y := tmp;

END.

Algunos de los lenguajes de este tipo son Pascal, Ada y C.

6

Page 7: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Metodología de la Programación

Las siguientes son etapas que deben cumplirse a los efectos de resolver un problema mediante un programa informático:

Definición del problema

Se debe partir de un enunciado de problema claro y completo.

Análisis del problema

A partir de comprender claramente cual es el problema, se procede a analizar alternativas de solución, como ser:

• Resultados que se esperan. • Datos de entrada se brindan. • Posibles métodos a utilizar para obtener la salida

deseada.

Construcción de un algoritmo

Por medio de un lenguaje de especificación (puede ser gráfico o un seudo lenguaje) se procede a construir un algoritmo que resuelva el problema en estudio. En esta etapa, una vez construido el algoritmo, se sugiere que el diseñador realice una prueba de escritorio -someter el algoritmo a diversas ejecuciones, variando los datos de entrada y verificar su funcionamiento- a los efectos de determinar si el método elegido funciona correctamente.

Codificación

Utilizando un lenguaje de computadora se traduce el algoritmo a un programa fuente que una máquina sea capaz de entender y ejecutar. Se recomienda que el técnico que realice esta tarea -el programador- inserte comentarios junto a las líneas de código a los efectos de facilitar la lectura del programa (documentación interna) en instancias superiores de validación o mantenimiento.

Compilación

Si el lenguaje utilizado en el proceso de codificación requiere de una traducción a lenguaje de máquina se utiliza un

7

Page 8: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

programa compilador a los efectos de generar un programa objeto. Es importante destacar que una de las funciones de todo compilador es el análisis sintáctico del programa fuente a los efectos de detectar errores de sintaxis ocasionados por errores de codificación. El compilador no analiza semántica, es decir que las fallas de lógica que pueda existir en el programa fuente no son detectadas por el compilador.

Prueba

Se ejecutar el programa con distintos juegos de datos de entrada y se corrigen los errores que se puedan presentar. Al final se obtiene un programa depurado.

Documentación

Etapa final en la cual se realiza la documentación externa en la cual se explica lo que el programa hace y cuales son los datos de entrada y salida. parte de esta documentación es requerida por usuarios y por programadores encargados del mantenimiento del software.

8

Page 9: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Segunda ParteIntroducción a la Programación

Datos

Todo algoritmo utiliza datos. Los datos representan una abstracción de la realidad. Por ejemplo, para calcular el sueldo de un empleado se necesita realizar una abstracción de la información relativa al problema en estudio, tal como: función o cargo, antigüedad, cantidad de hijos, estudios cursados, días trabajados, etc.

Los datos son unidades atómicas de información, almacenadas en memoria, a partir de las cuales se realizan las operaciones determinadas por los programas. Todo dato presenta una serie de atributos que lo caracterizan. Por ejemplo, un dato que sea el sueldo percibido el último mes por una persona X tendrá los siguientes atributos:

• Nombre. Es un identificador, y es un nombre simbólico que se refiere a un dato determinado, es decir, un nombre para referirse a variables, funciones y cualquier otro objeto definido por el usuario en un programa. El dato del ejemplo podría tener por nombre "sueldomes" a los efectos de identificar a ese objeto concreto.

• Tipo. El tipo de una variable se refiere a la naturaleza de la

información que contiene. Determina la característica del contenido del objeto, es decir, la información que va a poder contener. En el ejemplo, el tipo del dato llamado "sueldomes" es numérico, porque así se expresa un número real.

Un tipo de dato se caracteriza por:

• Un dominio de posibles valores

• Un modo común de representación de sus valores

• Un conjunto de operadores asociados

• Valor. Es el contenido en sí del objeto, y está acorde al tipo definido. En el ejemplo del sueldo será un valor concreto, tal como 345.78.

9

Page 10: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

345.78 22

Ana Gomez

Sueldo_ultimo_mestipo numérico

porcentaje_aumentotipo numérico

nombre-empleadotipo caracter

Extracto de una memoria de trabajo

Tipos de Datos Primitivos

Entero

Cualquier valor que pertenezca al conjunto de los números enteros Z { ...,-3, -2, -1, 0,1, 2, 3,...} y que este en un rango que el lenguaje pueda aceptar.

Ejemplo

temperatura 2humedad 78

Real

Cualquier valor perteneciente al conjunto de los números reales R {..., -7, ..., -2.2, ..., 0, ..., 14.4,..., 33, ...} y que este en un rango que el lenguaje pueda aceptar.

Ejemplo

salario 178.23saldo 55.98

10

Page 11: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

La siguiente tabla muestra las características de los tipos de datos más comunes:

Tipo Tamaño Rango de valoresbooleano

1 bit falso, verdadero

Byte 8 bits -128...127 / 0..255Short 16 bits -32768 ... 32767Char 16 bits \u0000 ... \uffff

Int 32 bits -2147483648 ... 2147483647

Long 64 bits -9,22E18 ... 9,22E18 Float 32 bits reales de 32 bits Double 64 bits reales de 64 bits

Caracter

Un caracter es un símbolo válido proveniente de un alfabeto. La concatenación de caracteres da por resultado una cadena o string.

Ejemplo

apellido "Diaz Martinez"animal_peligroso "león de Kenia"

Lógico

Posibilitan la representación de dos estados posibles: F = falso y V = verdadero.

Ejemplo

vacio V ordenado F

Variables

Una variable es una identificación, asignada por el programador, a una dirección de memoria, donde se aloja un dato.

Ejemplo

11

Page 12: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Pi 3.14IVA 21Institucion "Universidad Nacional de Luján"

Una constante es un dato almacenado en una variable cuyo contenido no puede ser modificado durante la ejecución de un programa.

Declaración de Constantes y Variables

La declaración de una constante o una variable implica la asignación de un espacio de memoria de trabajo que estará asociado a ella. El tamaño dependerá del tipo de dato y lenguaje de programación con el que se trabaje. Al declarar una variable o una constante se liga al dato con un nombre o identificador, por el cual se accederá a tal posición de memoria de allí en más. El tipo de dato y el identificador de una variable son dos atributos asociados a ella.

Ciertos lenguajes de programación, junto con la buena práctica del oficio, exigen que todas las variables y constantes de un programa sean previamente declaradas antes de ser utilizadas. Cuando se desea inicializar o modificar el valor de una variable se realiza una operación de asignación. Se la simboliza con el símbolo "". Asignar significa asociar un valor determinado a un identificador.

Ejemplo

vacio Vsaldo saldo_anterior + 500frase "Hola" + " " + "Mundo !!!"resultado ((producción - fallados) ^2) - 678

Existe otro objeto denominado literal y es la forma como se escriben los valores de cada tipo. Ejemplo 26, 789, -9 son literales numéricos, y "hola mundo", "o" y "zeta" son literales de caracteres.

La asignación es una instrucción donde se asocia un valor a una variable. Del lado izquierdo siempre habrá una variable, mientras

12

Page 13: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

que del lado derecho de la asignación podrá haber un literal, otra variable ó una expresión.

Ejemplos

cantidad_de_vehículos (6+8) / 2

Donde se evalúa 6 +8 y a lo obtenido se lo divide por 2. Finalmente al resultado se lo almacena en la variable cuyo identificador es cantidad_de_vehículos.

Las variables A, B, y C son de tipo lógico.

A 12 < 5 En A se almacena el valor de verdad falso

B (7 <= 12) En B se almacena el valor de verdad verdadero

C 7 >= 7 En C se almacena el valor de verdad verdadero

Con variables de tipo caracter

empleado "Carlos Gomez"cantidad_empleados "veinte"

Expresiones y Operadores

Una expresión es una combinación de elementos del lenguaje que al ser evaluados dan por resultado un valor. Este valor puede ser un número, un carácter, una cadena o cualquier otro tipo de dato. El tipo de una expresión está determinado por los tipos de las partes que la componen y la semántica de sus operadores.

A los efectos de realizar cálculos y operaciones sobre los datos es necesario contar con alguna forma de combinación que indique la acción a realizar. Se utiliza una simbología de operadores para formalizar tales cálculos y operaciones.

Un operador es un símbolo que transforma el contenido de una variable o la combina de alguna otra manera con el contenido de otra variable o literal. Por ejemplo, la siguiente expresión tiene dos operadores, '*' producto y '/' división:

13

Page 14: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

X (costo * 1.22)/desvio_mes;

Operadores Aritméticos

Son operadores que se aplican sobre datos numéricos y devuelven igualmente un dato numérico.

Operador

Significado

** Potenciación+ Signo más (unario)- Cambio de signo (unario)* Multiplicación

/ ó div División real y entera% ó modresto de división (reales y

enteros) + Suma- Resta

Un operador es unario cuando solo tiene un operando, como por ejemplo los signos de los números (-7, +7, etc.) Un operador es binario cuando necesita dos operandos, como por ejemplo la suma (8 + 2). Todos los operandos son binarios excepto los correspondientes a la notación de signos, que son unarios.

Ejemplos

Expresión Comentario7 / 5 = 3.5 División real

7 div 2 = 3 División entera7 mod 2 = 1 Resto de división

entera

Operadores Relacionales

Permiten realizar comparaciones de valores de tipo numérico o carácter. Estos operadores sirven para expresar las condiciones en los algoritmos. Proporcionan resultados lógicos.

Operador Significado< Menor que

14

Page 15: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

> Mayor que= Igual que

<= Menor o igual que>= Mayor o igual que<> Distinto de

La sintaxis de las operaciones de comparación es:

expresión1 operador de relación expresión2

Una vez evaluada la expresión, se obtendrá un resultado que será Verdadero o Falso.

Dado X 12 y Y 5

Expresión ResultadoX > Y Es Verdadero

(X-3) < (Y-2) Es Falso(X-4) >= (Y+3) Es verdadero

"A" > "B" Es verdadero"z" > "Z" Es verdadero

"uno" = "unos" Es falso"uno" < "unos" Es verdadero

Operadores sobre Cadenas

Los operadores tradicionales sobre cadenas son:

• Concatenación (+), operador que une dos cadenas para formar una nueva. Por ejemplo "hola" + " mundo" devolverá una nueva cadena que contenga "hola mundo".

Operadores Lógicos

Son aquellos que permiten la combinación de valores de verdad en una expresión, que al ser evaluada devuelve un valor de verdad.

El resultado de las operaciones lógicas se determina a través de tablas de verdad correspondientes a cada operador.

15

Page 16: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Tabla de Verdad del Operador NOT

A NOT AV FF V

Donde A es una expresión booleana

Tabla de Verdad del Operador de Conjunción AND

A B A AND BF F FF V FV F FV V V

Donde A y B son expresiones booleanas

Tabla de Verdad del Operador de Disyunción OR

A B A OR BF F FF V VV F VV V V

Donde A y B son expresiones booleanas

Tabla de Verdad del Operador de Disyunción Exclusiva XOR

A B A XOR BF F FF V VV F VV V F

Donde A y B son expresiones booleanas

Ejemplos

Expresión Resultado(3 = 4) AND ( 6 <

7)Falso

16

Page 17: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

NOT (4 < 6) Falso

Orden de Prioridad de las operaciones

Todas las subexpresiones entre paréntesis se evalúan primero. Las subexpresiones con paréntesis anidados se evalúan desde el centro hacia los extremos.

Dentro de una expresión, los operadores se evalúan de la siguiente manera:

° Se analiza la expresión de izquierda a derecha.

° Si en la expresión existen paréntesis, lo que se encuentra dentro de estos se evalúan de izquierda a derecha según orden de prioridad de los mismos.

° Si en la expresión se encuentran más de un par de paréntesis, la evaluación se realiza comenzando con el paréntesis que se encuentra más a la izquierda en la expresión hasta llegar al par de paréntesis que se encuentra más a la derecha de la expresión.

Orden de Evaluación de los Operadores

Los operadores de una expresión se evalúan según el siguiente orden:

Tipo de Operador

Significado Prioridad

Exponenciación 1Negación 2

Aritméticos Multiplicación/División 3División entera 4Módulo 5Suma/Resta 6Mayor 7Mayor igual 7Menor 7

17

Page 18: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

De relación Menor igual 7Igual 7Distinto 7

Complemento (NO- NOT) 8Conjunción (Y -AND) 9

Lógicos Disyunción (O - OR) 10Disyunción exclusiva (XOR) 11

18

Page 19: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Funciones del Lenguaje

Una función es un conjunto de declaraciones, definiciones, expresiones y sentencias que realizan una tarea específica. Cada función tiene la misión de realizar un algoritmo determinado a partir de datos de entrada, llamados parámetros o argumentos, obteniendo un resultado o valor de retorno.

En los lenguajes de programación, sus diseñadores incorporan varias funciones predefinidas. Los programadores pueden hacer uso de tales funciones del lenguaje e incorporarlas a sus programas. Existen distintas categorías de funciones: matemáticas, de cadenas de caracteres, de fecha, de entrada y salida, etc.

La sintaxis general de una función es:

nombre_función(argumento1,..., argumenton).

Ejemplos de funciones del lenguaje sobre tipos numéricos:

Nombre Significado Ejemplos

abs Calcula el valor absolutoabs(-5)abs(x)

Int Devuelve la parte entera de un número real

int(-2.8) int(12.1)

rndGenera un número aleatorio (mayor a 0 y menor a 1)

roundRedondea un dato a un número determinado de cifras

round(2.1)round(7.125, 2)

cos Calcula el coseno del ángulo n (en radianes)

cos(n)

SinCalcula el seno del ángulo n (en radianes) sin(n)

sqrt Calcula la raíz cuadrada de n

sqrt(n)

19

Page 20: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Ejemplos de funciones del lenguaje que operan sobre cadenas:

Nombre Significado Ejemplos

Concat Concatena una secuencia de cadenas.

Concat(cadena1, cadena2)

LengthCalcula el largo de una cadena. length("Hola mundo")

copy Extrae una subcadena de una cadena de caracteres.

copy(cadena, posición,número)

str

Retorna el carácter ASCII equivalente al número decimal brindado como argumento.

Str(65)

upcaseDevuelve en mayúsculas todas las letras de una cadena

Upcase(cadena)

Nota: Las funciones detalladas anteriormente son a título informativo. El nombre exacto y la sintaxis de cada función dependerá del lenguaje de programación a utilizar. Se aconseja verificar en el manual del lenguaje las características de una función predefinida a utilizar.

20

Page 21: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Ejercicios Propuesto para el capitulo

1. Sean I y J dos variables numéricas enteras, cuyos valores son 6 y 12 respectivamente. Indicar cuáles de los siguientes predicados son verdaderos.

a) 2 * I < Jb) 2 * I < 1c) I > 0 AND I < 10d) I > 25 OR (I < 50 AND J < 50)e) I < 4 OR J > 5f) NOT I > 6

2. Sean X, Y, Z y T variables numéricas. Escribir los predicados correspondientes a:

a) Los valores de X e Y son superiores a 3b) Los valores de X, Y y Z son idénticosc) Los valores de X, Y y Z son iguales pero difieren del de Td) El valor de X está comprendido entre los valores de Y y de

T, y el valor de Y es inferior al de T

3. Dados los siguientes valores de I, J, K y L, añadir los paréntesis que sean necesarios a las expresiones para que se evalúen todas dando resultado "verdadero".

I=10, J=19, K=3, L=0

a) I = J or Kb) I >= J or I <= J and K = 3c) not K > J or K < Jd) not L >= 0 and L <= 0

6. Modificar los paréntesis, de los problemas del ejercicio anterior, para que el resultado fuera falso.

21

Page 22: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Tercera Parte:Programación Estructurada

Estructuras de ControlLos programas para computadoras deben estar escritos con un alto grado de estructuración, esto contribuye a que sean más comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos. Mediante la programación estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leerlos desde su inicio hasta su final en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador.

Los lenguajes de programación tienen un conjunto mínimo de instrucciones que permiten especificar el control del algoritmo a implementar. Estas se agrupan como:

1. Secuencia : Sucesión de dos o más operaciones cuya ejecución coincide con el orden de aparición de las instrucciones.

Inicio Leer(num1, num2) Suma num1 + num2 Dif num1 – num2 Escribir(“Suma”, suma) Escribir(“Diferencia”, dif)Fin

2. Decisión : Bifurcación entre dos alternativas condicionada por los datos del problema. La instrucción evalúa una condición y ejecuta el conjunto de instrucciones que corresponda al valor de verdad retornado.

22

Page 23: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

V FCondición

Instrucción 1

....

Instrucción n

Instrucción 1

....

Instrucción n

3. Iteración : Repetición de un conjunto de instrucciones mientras se cumpla una condición.

Mientras <condición> hacer

Instrucciones

Estos tres tipos de estructuras lógicas de control pueden ser combinadas para producir programas que manejen cualquier tarea de procesamiento de información.

La programación Estructurada esta basada en el Teorema de la Estructura (1966, Böhm - Jiacopini), el cual establece que cualquier programa propio es equivalente a un programa que contiene solamente las estructuras lógicas mencionadas anteriormente.

Un programa se define como propio si cumple con los requerimientos siguientes:

° Tiene exactamente una entrada y una salida para control del programa.

° Existen caminos seguibles desde la entrada hasta la salida que conducen por cada parte del programa, es decir, no existen lazos infinitos ni instrucciones que no se ejecutan.

23

Page 24: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

° No contiene ciclos infinitos.

Un programa estructurado está compuesto de segmentos o bloques , los cuales pueden estar constituidos por unas pocas instrucciones o por una página o más de codificación. Cuando varios programas propios se combinan, utilizando las tres estructuras básicas de control, el resultado es también un programa propio.

Ventajas del uso de la programación estructurada:

° Un programa escrito de acuerdo a las reglas de la programación estructurada no solamente tendrá una estructura, sino también una excelente presentación.

° Un programa escrito de esta forma tiende a ser mucho más fácil de comprender que programas escritos en otros estilos. La facilidad de comprensión del contenido de un programa puede facilitar la verificación de la codificación y reducir el tiempo de prueba y depuración de programas. Esto último es cierto parcialmente, debido a que la programación estructurada concentra los errores en uno de los factores más generador de fallas en programación: la lógica.

° Un programa que es fácil para leer y el cual está compuesto de segmentos bien definidos tiende a ser simple, rápido y menos expuesto a mantenimiento. Estos beneficios derivan en parte del hecho que, aunque el programa tenga una extensión significativa, en documentación tiende siempre a estar al día, esto no suele suceder con los métodos convencionales de programación.

Estructogramas o Diagramas Chapín

Los diagramas de Chapin (también conocidas como diagramas de Nassi-Schneiderman) describen los procedimientos usados para recibir, procesar, y transmitir información. Los diagramas proporcionan toda la lógica necesaria para que programadores puedan escribir programas estructurados en cualquier lenguaje de

24

Page 25: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

programación o a los efectos de documentar procedimientos específicos.

El modelo de diagramas fue desarrollado por Isaac Nassi y Ben Shneiderman, publicándose en el año 1973. Corresponden a las normas DIN 66261 e ISO/IEC 8631:1989. Dado que muestran las estructuras de un programa, también se denominan "estructogramas".

El concepto es simple: cada bloque (o secuencia de acciones) se representa dentro de un rectángulo; cada estructura utiliza una forma de representación particular, pudiendo a su vez encerrar otros bloques.

En los diagramas NS existen seis estructuras: Secuencial, Decisión (si condicional), Selección, Para, Mientras y Repetir.

25

Page 26: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

seccion = 1

V F

Escribir("Elnúmero es impar")

antiguedad <-sueldo*10/100

años < 5

V F

sueldo <- basico + 250antiguedad = 0

antiguedad <-sueldo*20/100

Leer seccion, años

basico <- 800

sueldo <- basico + 120

total <- sueldo + antiguedad

escribir("El monto a abonar es ", total)

Inicio

Fin

Ejemplo de diagrama de Chapín

26

Page 27: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Escritura de Programas

La utilización de la identación es importante debido a que, cuando su es utilización es consistente, facilita la lectura de los programas al mostrar en una forma ordenada las relaciones existentes entre las distintas instrucciones.A continuación pueden observarse dos programas, los cuales realizan la misma función, pero el de la derecha es más fácil de comprender.

Sin identación Con identaciónProgram Sueldos;

varseccion, anios :integer;total, antiguedad, sueldo :real;

constbasico = 800;

beginWriteln('Ingrese seccion del empleado: ');Read(seccion);Writeln('Ingrese anios de antiguedad: ');Read(anios);if (seccion = 1) thenbeginsueldo := basico + 120;if(anios < 5) thenantiguedad := sueldo * 10/100elseantiguedad := sueldo * 20/100endelsebeginsueldo := basico + 250;antiguedad := 0end;total := sueldo + antiguedad;Writeln('El monto a abonar es:', total:4:2);end.

Program Sueldos;

var seccion, anios :integer; total, antiguedad, sueldo :real;

const basico = 800;

begin Writeln('Ingrese seccion del empleado: '); Read(seccion); Writeln('Ingrese anios de antiguedad: '); Read(anios); if (seccion = 1) then begin sueldo := basico + 120; if(anios < 5) then antiguedad := sueldo * 10/100 else antiguedad := sueldo * 20/100 end else begin sueldo := basico + 250; antiguedad := 0 end;

total := sueldo + antiguedad; Writeln('El monto a abonar es:',total:4:2);

end.

Adicionalmente se recomienda la inserción de comentarios en los programas. Tales citas ayudan a los programadores a identificar fácilmente la misión de las partes con la finalidad de facilitar su mantenimiento.

Normas de Identación

Las siguientes son sugerencias para el desarrollo de una política de identación en un programa:

27

Page 28: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

a) Se obtiene consistencia si todas las instrucciones de un mismo nivel comienzan en una misma columna.

b) En los lenguajes en que se hagan declaraciones sobre las variables a utilizar, la información quedará mas claramente representada si los atributos declarados se alinean en forma vertical.

c) El uso de líneas vacías ayuda a mostrar con mas claridad las relaciones existentes entre distintos ítem agrupados en las declaraciones

d) Las instrucciones son mucho mas fáciles de localizar y de cambiar si no se escribe mas de una instrucción por línea.

e) La visión de control de las estructuras lógicas o de los bloques se clarifica si las instrucciones controladas son identadas por alguna cantidad constante. Se sugiere una identación de tres espacios.

Entrada y Salida de Información

Toda operación que realice una computadora va a estar incluida en una de las siguientes categorías:

° Recibir entradas. Aceptar información proveniente del mundo exterior.

° Generar salidas . brindar información al mundo exterior.° Procesar información. Realizar operaciones sobre los datos. ° Almacenar información. En cualquier dispositivo con que

opere.

En base a las cuatro operaciones básicas enunciadas, las computadoras realizan todas sus funciones.

Las operaciones de entrada permiten leer determinados datos -generalmente ingresados por teclado- y asignarlos a determinadas variables definidas por el programador. La operación de entrada se conoce como operación de Lectura o Read.

La salida de información es soportada por dispositivos de salida (monitor, impresora, etc). La operación de salida se denomina escritura o Write.

28

Page 29: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Generalmente, en la escritura de algoritmos las acciones de lectura y escritura se representan de la siguiente manera:

° Leer (nom_variable)

° Escribir (lista de variables de salida)

Ejemplo de ingreso y salida de datos en una especificación de cálculo de liquidación de horas extras, detallada pseudocódigo:

InicioLeer(horas trabajadas)Leer(valor_de_la_hora_extra)liquidacion horas_trabajadas * valor_de_la_hora_extraEscribir(liquidacion)

Fin

Opcionalmente, en el ingreso de datos por teclado puede definirse una lista de variables como parámetro de la orden leer.

Leer (dato1, dato2, dato3)

Ejemplo:

Ingresando dos números, mostrar por pantalla su suma y su diferencia.

Pseudocódigo

InicioLeer(num1, num2)suma num1 + num2dif num1 - num2Escribir("SUMA: ", suma)Escribir("DIFERENCIA: ", dif)

Fin

Diagrama NS

Inicio Leer(num1, num2)

29

Page 30: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Suma num1 + num2 Dif num1 – num2 Escribir(“Suma”, suma) Escribir(“Diferencia”, dif)Fin

Ejemplo en Lenguaje Pascal

Se utiliza la instrucción write o writeln cuando se quiere enviar un mensaje a la salida estandar (generalmente el monitor).

writeln (‘Esto es un mensaje’);

En el ejemplo, se muestra la cadena "Esto es un mensaje" por pantalla, y al final se insertará un salto de línea (producido por la instrucción writeln), lo cual posicionará al cursor en un nuevo renglón.

alfa := 345.2;beta := 8;resultado := alfa * beta;

writeln (‘El resultado de multiplicar alfa por beta es’, resultado);

Aquí el mensaje contiene términos y variables de memoria (alfa, beta y resultado).

En el siguiente ejemplo se solicitará al operador que ingrese un dato. El ingreso se solicita con la instrucción read, y se almacena el dato en la variable d.

write (‘Ingrese una distancia en centimetros’);readln (d);r := d / 2.54;writeln(d, ‘centímetros equivalen a ‘, r ‘pulgadas’);

30

Page 31: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Ejercicios resueltos:

1) Construir un algoritmo para pasar una temperatura dada en grados centígrados a grados Fahrenheit. La fórmula para hacer la conversión es: F = ( 9 * C ) / 5 + 32; donde C es el valor en grados centígrados y F en grados Fahrenheit.

InicioEscribir(‘Ingresar temperatura en grados centígrados’)Leer( TC ) TF ( 9 * TC ) / 5 + 32Escribir(‘La temperatura equivalente en grados Fahrenheit es:

‘,TF)Fin

Representación del problema en un diagrama NS

Inicio

Leer temperatura en grados centígrados y almacenarlo en TC

TF <- ( 9 * TC ) / 5 + 32;

Escribir("La temperatura equivalente en grados Fahrenheit es:",TF)

Fin

Ejemplo en Lenguaje PascalProgram Fahrenheit

var tc, tf : real;begin Write(‘Ingresar una temperatura en grados centígrados’); Readln(tc); tf := (9 * tc) / 5 + 32; Writeln(‘La equivalente en grados Fahrenheit es: ‘, tf);End.

31

Page 32: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

2) Introducir dos números a y b, con partes decimales, luego obtener la suma de las partes decimales. Por ejemplo : a=16.12 y b=7.33 entonces deberá obtener s = 0.12 + 0.33 = 0.45

Diagrama NS

Inicio

Fin

Leer pn, sn

r = (pn - int(pn)) + (sn - int(sn))

Escribir("El resultado es", r)

Ejemplo en Lenguaje PascalProgram Decimal

var    pn, sn    : real;    r         : integer;

begin  Write(‘Ingresar dos números con decimales’);  Readln(pn, sn);  r := (pn – int(pn)) + (sn – int(sn))  Writeln(‘El resultado es: ‘, r);end.

32

Page 33: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Estructura de Decisión

Hasta ahora se han visto algoritmos en los cuales se ingresan ciertos datos, luego se hacen algunas operaciones aritméticas y finalmente se muestran los resultados. En realidad, esta es una utilización muy pobre de la computadora, como si solamente se tratara de una calculadora una poco más sofisticada, con la única ventaja de permitirnos construir un programa una vez y posteriormente, utilizarlo todas las veces que sea necesario con distintos grupos de datos.

Como se vio anteriormente, una característica importante que distingue a una computadora de otras máquinas es la posibilidad de ejecutar operaciones lógicas, es decir que puede evaluar expresiones del tipo:

1) total > 502) alfa < mo3) be4 <= jota + 64) pepe - 4 = alfa + beta

De la evaluación de este tipo de operaciones se pueden obtener dos resultados posibles: verdadero (V) o falso (F).

En el primer ejemplo, el procesador busca el valor almacenado en la variable total y verifica si es mayor que 50, en cuyo caso el resultado de la expresión será verdadero; de otra manera, si el valor es igual a 50 ó menor, el resultado de la expresión será falso. En el segundo ejemplo consultará los contenidos de las variables alfa y mo, y verificará si se cumple o no que el número almacenado en alfa es menor que el almacenado en mo.

Los ejemplos tres y cuatro involucran operaciones aritméticas, en estos casos la computadora consultará los contenidos de las variables en juego, efectuará las operaciones aritméticas que correspondan y luego comparará los resultados, verificando si cumplen o no la condición indicada.

Es posible también hacer que la computadora evalúe expresiones más complejas, por ejemplo, podemos desear verificar si el contenido de la variable samo es mayor que 45 pero menor que 70, lo que podemos expresar matemáticamente como 45 < samo

33

Page 34: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

< 70, pero en realidad esta forma de expresarlo está encubriendo un operador lógico. En informática escribiremos esta expresión como:

samo > 45 AND samo < 70

en la que el símbolo AND representa al operador lógico "y" (conjunción). ¿Cómo se evaluará esta expresión?. Primero la computadora evaluará las expresiones a ambos lados del AND; luego operará con esos dos valores para obtener el valor de verdad de AND. De forma similar se puede trabajar con el operador lógico OR (disyunción). Por lo general se dispone también de las operaciones de negación, disyunción exclusiva, implicación y equivalencia. Esta capacidad de evaluar expresiones lógicas se utiliza para hacer que la computadora tome decisiones de las instrucciones a ejecutar en base al resultado obtenido.

Estructura Condicional Simple

En el caso más sencillo, se le indica a la computadora que ejecute un cierto grupo de instrucciones si se cumple una cierta condición:

Si (condición) entonces hacer

...(instrucciones)..

Fin Si

Llamaremos "estructura de decisión" o "estructura condicional simple" a este bloque de instrucciones, la computadora verificará si se cumple la condición indicada, en cuyo caso pasará a ejecutar las instrucciones que se detallaron, en cambio si la condición no se cumple no las ejecutará y pasará a las instrucciones que siguen en el algoritmo. A este caso podemos describirlo con la frase "hacer si se cumple".

El diagrama Chapin para representar a una estructura condicional simple es el siguiente:

34

Page 35: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

V FCondición

Instrucción 1

....

Instrucción n

Ejemplo en pseudocódigo

Si (gama > 22) entonces hacer

gama <- gama /3;

....

Fin Si

V Fgama > 22

gama <- gama / 3

....

.....

EjemploSuponga que se vende un artículo cuyo precio unitario es de $1235.-, se desea un algoritmo al cual se le dé la cantidad vendida e imprima el monto de la venta, teniendo en cuenta que si se venden más de 12 unidades se efectúa un descuento de $1700.-; la estructura de decisión debe resolver una situación que puede describirse como sigue: "comprobar si se vendieron mas de 12 unidades, en ese caso, descontarle al monto $1700.-", :

Si (cantidad > 12) entonces hacermonto <- monto – 1700

Fin Si

Agregando las instrucciones de entrada, salida y cálculo, obtenemos el algoritmo completo que resuelve el problema:

35

Page 36: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

InicioLeer(cantidad)monto <- cantidad * 1235Si cantidad > 12 entonces hacer

monto monto - 1700Fin SiEscribir(monto)

Fin

Ejemplo en Lenguaje Pascal

La instrucción de decisión se expresa con el término if, seguido de una condición y el término then , luego una instrucción delimitada por punto y coma, o un bloque de instrucciones delimitado por los términos begin y end. Las instrucciones se ejecutarán en caso de que la evaluación de la condición resulte verdadera. El bloque puede contener n instrucciones, separadas por punto y coma excepto la anterior al end.

Ejemplo a...

Writeln(‘Ingrese cantidad a adquirir: ‘);Read (c);monto = c * 1235;

if (c > 12) then monto := monto - 1700;

writeln(‘El monto es: ‘, monto);...

Ejemplo b...

Writeln(‘Ingrese cantidad a adquirir: ‘);Read (c);monto := c * 1235;

if (c > 12) then begin monto := monto - 1700; comision := monto * 0.10 end;writeln(‘El monto es: ‘, monto);

36

Page 37: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

writeln(‘La comisión es: ‘, comision);...

Estructura de Decisión Compuesta

En el caso más general, se le indicará a la computadora que ejecute un determinado grupo de instrucciones si el resultado de una evaluación es V, u otro grupo si el resultado es F.

Si (condición) entonces hacer...

(instrucciones)...sino...

(instrucciones)...Fin Si

En diagrama Chapin la estructura condicional compuesta se representa:

V FCondición

Instrucción 1

....

Instrucción n

Instrucción 1

....

Instrucción n

Si (gama > 22) entonces hacer

gama <- gama /3;

....

sino

escribir("gama no es mayor a 22")

...

Fin Si

Ejemplo

37

Page 38: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Supongamos que una empresa vende un cierto producto a un precio de $215.- la unidad, pero si el cliente compra mas de 100 unidades, el precio se rebaja a $197.- la unidad:

Si (C > 100) entonces hacer P 197

SinoP 215

Fin Si

Si se desea un programa completo al cual se le ingrese la cantidad vendida e imprima el monto de la misma, falta agregar las instrucciones correspondientes a la entrada, salida y cálculos:

InicioLeer(cantidad)Si (cantidad > 100) entonces hacer

precio 197sino

precio 215Fin Simonto cantidad * precioEscribir (monto)

Fin

En diagrama NS

V Fcantidad > 100

precio <- 197

....

.....

Leer cantidad

precio <- 215

monto <- cantidad * precio

escribir monto

inicio

Fin

Ejemplo en Lenguaje Pascal

38

Page 39: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

En el presente ejemplo se utiliza una estructura condicional compuesta. La alternativa "de lo contrario" se expresa utilizando el término else seguido de un bloque de instrucciones a ejecutar.Si los bloques constan de una sola instrucción, el punto y coma sólo se coloca al final indicando la finalización de la estructura.,

...Writeln(‘Ingrese cantidad : ‘);Readln (c);if (c > 100) then precio = 197else precio = 215;monto := c * precio;Write(‘El monto es: ‘, monto);...

Otro ejemplo:

Supongamos que se nos presenta el siguiente problema: "Ingresar un número entero N y mostrar por pantalla un cartel indicando si es par o impar". Para saber si un número N es par es suficiente comprobar si es divisible por dos, o lo que es lo mismo, que el cociente N / 2 produzca como resultado un número entero. Para ello podemos usar la función "parte entera" que está disponible en la mayoría de los lenguajes de computación, esta función, la indicaremos:

variable1 int(variable2)

permite almacenar en variable1 la parte entera del número guardado en variable2, o sea que si en variable2 hay un 23.456 en variable1 quedará almacenado un 23.

Por otra parte, se observa que si se almacena en una variable cociente el resultado de la división entre número y 2, y en otra llamada entero la parte entera de cociente, tendremos que si número es divisible por 2, el contenido de entero será igual al de

39

Page 40: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

cociente. Teniendo en cuenta ello, proponemos la siguiente solución para el problema planteado:

Inicio

Fin

Leer numero

cociente = numero / 2

entero = int(cociente)

entero = cociente

V F

Escribir("Elnúmero es par")

Escribir("Elnúmero es impar")

también puede hacerse:

Inicio

Fin

Leer numero

cociente = numero / 2

entero = int(cociente)

fraccion = 0

V F

Escribir("Elnúmero es par")

Escribir("Elnúmero es impar")

fraccion = cociente - entero

ó también :

40

Page 41: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Inicio

Fin

Leer numero

numero/2 = int(numero/2)

V F

Escribir("Elnúmero es par")

Escribir("Elnúmero es impar")

Decisiones Anidadas

Frecuentemente es necesario efectuar un proceso de decisión dentro de otro, es decir, según la salida que tenga la primera condición, se debe efectuar una segunda instrucción de decisión, en forma general, esto puede presentarse como sigue:

Si (condición 1) entonces hacer (I)(instrucciones)

sino(instrucciones)

Si (condición 2) entonces hacer (II)(instrucciones)

sino(instrucciones)

Fin SiFin Si

Llamamos "selecciones anidadas", a esta estructura. Esta disposición de instrucciones puede ser mucho mas compleja, dado que las instrucciones Si marcadas con (I) y (II) pueden contener a su vez otras estructuras de decisión dentro de sus respectivas salidas por verdadero y falso.

Decisiones anidadas graficadas en un diagrama NS

41

Page 42: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Condicion 1

V F

Escribir("Elnúmero es impar")

Instrucciones

Condición 2

V FInstrucciones

Instrucciones

Ejemplo

Si se nos presenta el siguiente problema: "Una empresa de USA paga a sus empleados un sueldo básico de U$S 800.-, más un adicional que se calcula de la siguiente manera:

-Los que trabajan en la sección 1 cobran U$S 120.- más, y sobre el total un adicional por antigüedad del 10 % si tienen menos de 5 años, y del 20 % si tienen 5 años o más.

-Los que trabajan en la sección 2 cobran U$S 250.- más, pero no cobran adicional por antigüedad.

Preparar un algoritmo para ingresarle el número de sección y la antigüedad, y que muestre por pantalla cuanto cobra el empleado.

En este caso la pregunta por la antigüedad depende de la sección en que trabaje, una posible solución podría ser:

42

Page 43: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

seccion = 1

V F

Escribir("Elnúmero es impar")

antiguedad <-sueldo*10/100

años < 5

V F

sueldo <- basico + 250antiguedad = 0

antiguedad <-sueldo*20/100

Leer seccion, años

basico <- 800

sueldo <- basico + 120

total <- sueldo + antiguedad

escribir("El monto a abonar es ", total)

Inicio

Fin

Ejemplo en Lenguaje Pascal

Program Sueldos;var seccion, anios :integer; total, antiguedad, sueldo :real;

const basico = 800;

begin

43

Page 44: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Writeln('Ingrese seccion del empleado: '); Read(seccion); Writeln('Ingrese anios de antiguedad: '); Read(anios); if (seccion = 1) then begin sueldo := basico + 120; if(anios < 5) then antiguedad := sueldo * 10/100 else antiguedad := sueldo * 20/100 end else begin sueldo := basico + 250; antiguedad := 0 end;

total := sueldo + antiguedad; Writeln('El monto a abonar es:',total:4:2);

end.

44

Page 45: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Estructura Repetitiva o Iterativa

La estructura repetitiva es utilizada cuando se necesita que un conjunto de instrucciones (bloque) se ejecuten un cierto número finito de veces. Un bucle, lazo o ciclo, forma básica de una estructura iterativa, se compone de dos partes: a) una condición, y b) un cuerpo o bloque.

Mientras x sea distinto de 3 hacer <- condición{

instrucción 1instrucción 2 <- bloque.......................instrucción n

}Fin Mientras

Estructurade control

Básicamente existen dos tipos de estructuras repetitivas o iterativas: a) donde el número de ciclos a ejecutar el bloque está perfectamente establecido, y b) donde el número de ciclos que se ejecutará el bloque se determina por la evaluación de una cierta condición.

Ejemplo de número de ciclos preestablecidosPara n igual 0 hasta n igual 10 -incremento 1- hacer

Mostrar n^nn n + 1

Fin Para

Ejemplo de número de ciclos dependientes de una condiciónsuma 0contador 0n 1Mientras n sea mayor que 0 hacer

Ingrese un número ( 0 finaliza):, número_ingresado Si número_ingresado es menor o igual a 0 hacer

promedio <- suma / contadormostrar promedio

Sino hacersuma <- suma + número_ingresadocontador <- contador + 1

Fin SiFin Mientras

45

Page 46: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Las estructuras iterativas más populares son

° Mientras

° Repetir° Repetir - Hasta ° Para

Estructura Mientras La estructura repetitiva Mientras es aquella en la que el número de iteraciones no se conoce por anticipado y el cuerpo del ciclo o bloque se ejecuta repetidamente mientras que una condición sea verdadera .

Su sintaxis es :

Mientras <condición> hacerinstrucción 1instrucción 2.......................instrucción n

Fin Mientras

El diagrama Chapin o NS (Nassi-Schneiderman) de la estructura Mientras es:

Mientras <condición> hacer

Instrucciones

46

Page 47: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Explicación del modo de funcionamiento :

° La expresión que conforma la condición se evalúa antes y después de cada ejecución de las instrucciones comprendidas por el bloque. Si la condición da por resultado verdadero, se ejecuta el bloque, y si es falsa, el control pasa a la instrucción siguiente al bloque

° Si al evaluar la condición por primera vez, se determina que el resultado es falso, entonces no se ingresa al bloque y el control pasa a la instrucción siguiente al bloque. Es decir que el bloque no se ejecutará nunca.

° Si alguno de los elementos que componen la expresión de evaluación no se modificase, y la expresión hubiese arrojado -previamente- verdadero en su evaluación. Se ha ingresado en un ciclo infinito, del cual nunca se saldrá. Tales ciclos deben evitarse.

Ejemplo:

Construir un algoritmo para calcular e imprimir la suma de los números enteros comprendidos entre -27 y 34, ambos inclusive.

Mientras numero <= 34 hacer

suma <- suma + número

numero <- numero + 1

Escribir(suma)

Fin

suma <- 0

numero <- -27

Inicio

47

Page 48: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Ejemplo en Lenguaje Pascal

Nótese que la orden mientras se codifica con el término while, seguida de la condición y el término do. Al bloque se lo delimita con begin y end.

Program suma_ números;

const numerohasta = 34;

var suma, numerodesde : integer;

begin

suma := 0; numerodesde := -27;

while (numerodesde <= numerohasta) do begin suma := suma + numerodesde; numerodesde := numerodesde + 1; end;

Writeln(‘La suma es: ‘, suma); End.

Estructura Repetir Hasta La instrucción Repetir permite que se ejecute un bloque de instrucciones y luego se evalúe una condición a los efectos de ejecutar nuevamente el bloque -en caso de resultar falsa- o continuar con la próxima instrucción siguiente al bloque

Su sintaxis es : Repetir

instrucción 1instrucción 2.......................instrucción n

Hasta <condición>

48

Page 49: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

El diagrama Chapin de la estructura Repetir es:

Explicación del modo de funcionamiento :

° La condición se evalúa al final del bloque, después de ejecutarse todas las instrucciones contenidas.

° Si o si siempre se ejecuta al menos una vez el bloque.

° Si la evaluación de la condición resulta falso, se continua iterando, de lo contrario se continua con la próxima instrucción de programa.

°

Ejemplo en Lenguaje Pascal

Segmento de programa que suma números

...

Writeln (‘Indicar cuántos números desea sumar’); Realn(Totalnumeros); Contador := 0; Suma := 0;

Repeat Read(numero); Suma := Suma + numero; Contador := Contador + 1; Until Contador = Totalnumeros;

...

Estructura Para

49

Repetir hasta <condición>

Page 50: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Estructura que se utiliza para iterar en aquellos casos que de antemano se conoce la cantidad de ciclos a realizar. Por ejemplo: ingresar 10 notas de un alumno y calcular su promedio y desvío estandar.

Al ejecutarse la orden Para, por primera vez, a la variable de control se le asigna un valor inicial (expresion1). Inmediatamente se ejecutan las instrucciones del bloque asociado y luego se verifica si el valor final (expresión2) es mayor que el valor inicial (expresión); en caso de no ser así se incrementa o decrementa automáticamente el contenido de la variable de control en uno y se vuelve a ejecutar el bloque de instrucciones, hasta que la variable de control sea mayor/menor que el valor final referido en la expresión2, situación en la que se finaliza la estructura Para y se continua con la próxima instrucción que continua al bloque antedicho.

Su sintaxis es :

Para <variable_de_control> <- <expresión1> hasta <expresion2> hacer

instrucción 1instrucción 2.......................instrucción n

Fin Para

El diagrama de la estructura Para es:

Para <variable_ control> <- <expresión1> .hasta <expresion2> hacer .

Instrucciones

Explicación del modo de funcionamiento :

50

Page 51: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

° La variable de control se inicializa una sola vez, al inicio de la primera iteración.

° La condición se evalúa en cada iteración.

° El incremento o decremento se realiza antes de cada evaluación.

° Hay lenguajes en los cuales la condición de finalización está implícita en la misma estructura. Tal como el caso del lenguaje Pascal donde la forma de la instrucción Para es: FOR variable: valor_inicial TO valor_final.

° Al finalizar la ejecución de una estructura de control Para,

la variable de control está instanciada con el valor de expresión2 más un incremento o decremento, según corresponda.

Ejemplo en Lenguaje Pascal

Se utiliza el término for para indicar el comienzo de una estructura Para, a continuación se inserta el bloque de instrucciones, comenzando con begin y finalizando con end, utilizando, como es habitual, el punto y coma como delimitador.

Segmento de programa que muestra por pantalla las iteraciones:

...

for n :=1 to 9 do Writeln(‘iteración número: ‘,n);Writeln(‘n contiene ‘, n, ‘al salir del la estructura Para’);

Salida

iteración número:1iteración número:2iteración número:3iteración número:4iteración número:5iteración número:6iteración número:7iteración número:8

51

Page 52: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

iteración número:9n contiene 10 al salir del la estructura Para

Ejemplos de Uso de Estructuras Repetitivas

Se ingresan por teclado las notas de los alumnos en una determinada asignatura, o un 99 si el alumno estuvo ausente. Preparar un algoritmo para calcular e imprimir la nota promedio, recordando que el alumno ausente no se promedia. Luego de la última nota se ingresa un valor negativo.

Principiosuma 0cantidad 0Leer(nota)Mientras nota >= 0 hacer

Si nota <> 99 entonces hacer:suma suma + notacantidad cantidad + 1

Fin SiLeer(nota)

Fin mientrasSi cantidad > 0 entonces hacer

promedio suma / cantidadEscribir("Promedio: "; promedio)

Fin Si Fin

Se ingresan por teclado 100 números enteros. Preparar un algoritmo que cuente y muestre por pantalla la cantidad de negativos, positivos y ceros que se ingresaron.

Principiosumaneg 0sumapos 0sumacer 0Para contador = 1 hasta 100 hacer:

Leer(número)Si número < 0 entonces

sumaneg <-- sumaneg + 1Sino

Si número > 0 entonces hacer:

52

Page 53: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

sumapos <-- sumapos + 1Sino

sumacer <-- sumacer + 1Fin Si

Fin Si Fin Para

Escribir("Negativos: "; sumaneg)Escribir("Positivos: "; sumapos)Escribir("Ceros : "; sumacer)

Fin

Búsqueda del Extremo

Un problema típico es el de encontrar el valor extremo entre una serie de valores, es decir el máximo o el mínimo.

Tomemos el caso más trivial: encontrar y mostrar el mayor de un grupo de números ingresados por el teclado. La forma simple de pensar el problema es comparar cada nuevo número que ingresa con el mayor de los que ingresaron hasta el momento, si el nuevo es mayor lo tomaremos como tal de aquí en más, sino lo descartamos y comparamos el que sigue:

Leer(numero)Si numero > mayor entonces

mayor númeroFin Si

De esta manera, en la variable mayor, siempre estará almacenado el mayor de los números ingresados, ya que cada vez que ingresa uno mayor se reemplaza el valor anterior por el nuevo. Para ello, cuando ingreso el primero, obviamente es el mayor por ser el único. El algoritmo completo queda como sigue:

PrincipioLeer(n)Leer(numero)mayor númeroPara C = 2 hasta N hacer:

Leer(numero)Si numero > mayor entonces

mayor <-- número

53

Page 54: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Fin SiFin Para Escribir(mayor)

Fin

Obsérvese que C comienza valiendo 2, porque cuando se ingresa en el ciclo ya se ingresó el primer número.

Validación de Datos

Un refrán utilizado entre los programadores dice: "si ingresa basura, sale basura", lo que quiere decir que, independientemente de la excelencia del algoritmo, si se le ingresan datos erróneos producirá resultados también erróneos. La casi totalidad de los errores se produce en el ingreso de los datos por parte del operador. Si bien es imposible prever todos los errores que se pueden cometer, un buen programa debe estar preparado para evitar todos los que sea posible. Llamamos "validación" a este control de los datos que ingresan.

La técnica básica parte de la premisa de que hay valores imposibles para ciertos datos: en una fecha, el día no puede ser mayor que 31 o el mes mayor de 12, la altura de una persona no puede ser 8 metros, el cónyuge no puede ser más que 1(?), etc.

La mayoría de los datos posee un rango de valores posibles, y cada valor que ingresa debe estar necesariamente dentro de ese rango. La validación consiste en verificar que cada dato que ingresa se encuentre dentro del rango, si no es así, se le indica al operador que ingrese el dato nuevamente:

Leer(variable)Mientras (variable fuera de rango) hacer:

Escribir(mensaje al operador)Leer(variable)

Fin mientras

Ejemplo de validación

Supongamos que en una fecha se ingresa el día, entonces comprobamos que no sea menor que 1 ni mayor que 31:

54

Page 55: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Leer(dia)Mientras dia <1 ó dia > 31 hacer

Escribir("dato erróneo, ingrese nuevamente")Leer(dia)

Fin mientras

Obsérvese que no es posible asegurar que este algoritmo va a evitar todos los errores, por ejemplo no detectará si el operador ingresa un 16 en lugar de un 15, en cambio sí funcionará en la mayoría de las inversiones, es decir si el operador ingresa un 72 en lugar de un 27, el cual es un error muy común cuando se digitan números rápidamente.

55

Page 56: Introducción a la informáticaazamorav81.freeoda.com/modulo_intro_programacion.pdf · Editorial Algaida Informática, año 1996 3. Módulo 3 Universidad Nacional de Luján 11401

Módulo 3Universidad Nacional de Luján 11401 - Introducción a la Informática

Bibliografía

Fundamentos de informática, lógica, resolución de problemas, programas y computadoras Autores Allen B. Tucker, W. James Bradley, Robert D. Cupper, David K. Garnick Editorial McGraw-Hill Año 1994

Curso de programación Autores Jorge Castro, Felipe Cucker, Xavier Messeger, Albert Rubio, Luis Solano, Borja Valles Editorial McGraw-Hill Año 1993

Fundamentos de programación. Algoritmos y Estructuras de DatosAutores Luis Joyanes Aguilar Editorial McGraw-Hill, 2da edición, Año 1998

Algoritmos. Problemas resueltos y comentados Autores Joaquín Fernández, Francisco J. Oliver, José L. Sánchez Editorial Paraninfo Año 1992

AlgorithmsAutores Ian Craw y John Pulham.Universidad de Aberdeen.http://www.maths.abdn.ac.uk/~igc/tch/mx4002/notes/notes.html

El Lenguaje de programación C.

Autores B. Kernighan, B y D.Ritchie.Editorial Prenctice Hall , 2da edición

Introducción a la programación. Un enfoque prácticoAutores J.M. González, J. Cordero, , R. Martínez, R. RomeroEditorial Algaida Informática, año 1996

56