0% encontró este documento útil (0 votos)
381 vistas129 páginas

Lenguaje C ++ PDF

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
381 vistas129 páginas

Lenguaje C ++ PDF

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Prof.

Felipe Hernández Mora

MANUAL
DE
FUNDAMENTOS DE PROGRAMACION
y
LENGUAJE C + +

AÑO LECTIVO
2007- 2008
Prof. Felipe Hernández Mora

CAPITULO 1.-La Computadora

¿Qué es una computadora?


Una computadora es un dispositivo electrónico programable que permite el tratamiento
automático de la información. La información se introduce en la computadora (Input) y
luego es procesada por esta hasta producir una salida (Output).

Computadora
Datos
Resultados
Programa

HARDWARE

Una computadora esta constituida por componentes físicos que junto con los
dispositivos que realizan las tareas de entrada y salida de información se conoce con el
término de hardware (o soporte técnico).

SOFTWARE

La computadora obedece instrucciones, a este conjunto de instrucciones se denomina


programa; el profesional que escribe programas se llama programador y el conjunto de
programas escritos para una computadora se llama software (o soporte lógico).

COMPONENTES BASICOS DEL COMPUTADOR (HARDWARE)

Una computadora consta de los siguientes componentes principales:

. Dispositivos de entrada
. Dispositivos de salida
. Unidad central de proceso (CPU) o procesador
. Memoria interna
. Memoria externa
Prof. Felipe Hernández Mora

CPU
Dispositivos
Memoria central de salida

Dispositivos de
entrada
Unidad de control

Memoria
Unidad lógica y externa
aritmética

Dispositivos de Entrada/Salida (E/S)


Los dispositivos de Entrada/salida (Input/Output) hacen posible la comunicación entre
la computadora y el usuario. Los dispositivos de entrada sirven para ingresar datos a la
computadora. Los datos son leídos de los dispositivos de entrada y luego son
almacenados en la memoria central o interna. Los dispositivos usuales son el teclado,
los lápices ópticos, las palancas de mano (joystick), lectores de código de barra, etc. En
la actualidad es frecuente el uso del Mouse (ratón) y se utiliza como alternativa el
teclado. Este dispositivo esta diseñado para ser utilizado con la mano y, al ser
desplazado sobre una superficie plana, mueve un puntero electrónico sobre la pantalla
facilitando así, la interacción entre el usuario y la máquina.

Los dispositivos de salida permiten visualizar los resultados del proceso de los datos. El
monitor o pantalla es un dispositivo que visualiza la información que se ingresa desde el
teclado, así como los resultados que el computador envía. La impresora es otro
dispositivo que nos permite obtener copias impresas de los resultados enviados por la
computadora.

La Memoria Central (Interna)

La memoria central se utiliza para almacenar información y generalmente esta dividido


en dos partes: RAM y ROM.
La RAM, siglas de Random Acces Memory (Memoria de Acceso Aleatorio) se utiliza
para almacenar información que puede ser de dos tipos: las instrucciones de un
programa y los datos con los que operan las instrucciones. Por ejemplo, para que un
programa se pueda ejecutar debe ser cargado en la memoria. Después, cuando se ejecuta
el programa, cualquier dato a procesar se debe llevar a la memoria mediante las
instrucciones del programa. La RAM es una memoria volátil ya que su contenido se
destruye al apagarse el computador lo cual hace que sea necesario almacenar la
información en una memoria auxiliar.
Prof. Felipe Hernández Mora

La ROM, siglas de Read Only Memory (Memoria de Solo Lectura), es parte de la


memoria que contiene procedimientos y funciones de control que no pueden ser
modificados por programa alguno. Solo se puede acceder a ella para lectura de
información y nunca para escribir. Es una memoria no volátil, es decir, su contenido no
se destruye al apagarse el computador.

LA UNIDAD CENTRAL DE PROCESO (CPU)

La Unidad Central de Proceso, denominado también CPU (del inglés Central Processor
Unit) en la jerga de la informática, es el verdadero “cerebro” del computador, es el que
dirige y controla el proceso y manipulación de la información realizada por la
computadora. La CPU realiza la lectura de la información de un dispositivo de entrada,
procesa la información y almacena los resultados del proceso en la memoria auxiliar
para su posterior uso. La CPU consta de dos componentes: la Unidad de Control y la
Unidad Aritmética Lógica.

LA UNIDAD DE CONTROL (CONTROL UNIT, CU)

Esta unidad es la que se ocupa de supervisar el funcionamiento interno de la


computadora y determina que operaciones se deben realizar y en que orden. Contiene
las instrucciones incorporadas a la computadora, que son independientes de las
instrucciones que del usuario para la realización de una tarea en particular. La unidad de
control esta conectada a la mayoría de las partes de la computadora y “sabe” el estado
en que se encuentran las partes importantes del sistema. Por ejemplo, controla si la
impresora esta disponible para imprimir o si esta siendo utilizada; “sabe” si los
programas han sido almacenados en la memoria; “lee” las instrucciones; envía
información a los lugares en donde será almacenada o procesada, etc.

LA UNIDAD ARITMÉTICA LÓGICA (ARITHMETIC- LOGIC UNIR, ALU)

Es la sección en donde tiene lugar la adición y comparación de la información. Desde la


memoria y bajo la supervisión de la unidad de control, los números son enviados hasta
esta sección para ser sumados, restados, multiplicados, divididos o comparados. Todas
las operaciones matemáticas o lógicas que se realizan con la información se llevan es
esta sección del computados.

Unidad Central de Proceso


Unidad Central
De Proceso
Unidad Lógica y Memoria Central
Aritmética
Programa
Unidad de
Control
Prof. Felipe Hernández Mora

Datos de entrada Datos de Salida


MEMORIA AUXILIAR (EXTERNA)

Cuando un programa se ejecuta, se debe situar primero en la memoria central de igual


modo que los datos. Sin embargo, la información almacenada en la memoria se pierde
cuando se apaga la computadora, y por otra parte, la memoria central es limitada su
capacidad. Por esta razón, para poder disponer de almacenamiento permanente, tanto
para programas como para datos, se necesitan dispositivos de almacenamiento
secundarios o memoria auxiliar. Los dispositivos mas comúnmente utilizados por todas
las computadoras personales son los discos y disquetes magnéticos. Los discos suelen
ser duros o rígidos (tecnología Winchester) de gran capacidad de almacenamiento (10 a
centenares de Mb). Los disquetes son manejables y prácticos. El tamaño físico de los
disquetes es de 3 ½ pulgadas y tiene una capacidad de 1.44 Mb. La información
almacenada en la memoria central es volátil, es decir, desaparece cuando se apaga la
computadora y la información almacenada en la memoria auxiliar es permanente.

FLASH MEMORY

Es un dispositivo que nos permite guardar información usando el puente USB. Es muy
pequeño y podemos grabar 64, 128, 256, 512 Mb y 1.2 hasta 4Gb de información. Basta
conectar en el puerto USB para que Windows XP lo reconozca.

EL SISTEMA OPERATIVO (SOFTWARE)

Un elemento imprescindible en el funcionamiento de un sistema informático es el


software. Existen diversos tipos sin el cual ninguno de los otros tiene sentido. Este tipo
de software es el sistema operativo. Los sistemas operativos son, sin lugar a dudas, los
programas más complejos que jamás se hayan construido. Por definición, son los
encargados de supervisar el funcionamiento básico de una computadora. Controlan los
periféricos y permiten la ejecución de otros tipos de software. Los sistemas operativos
mas conocidos son el DOS, UNIX, Windows, etc.

FUNCIONES BASICAS DEL SISTEMA OPERATIVO

El sistema operativo realiza las siguientes operaciones básicas:

Control de dispositivos. El control de los dispositivos que conforman un ordenador


personal consiste en hacer que cada uno de los dispositivos y circuitos funcionen
adecuadamente. Con este fin los fabricantes de hardware incluyen en la memoria ROM
de los computadores una serie de subrutinas encargadas de esta función. El sistema
operativo debe trabajar íntimamente con la ROMBIOS y ampliarla en todo aquello que
resulte necesario.
Prof. Felipe Hernández Mora

Control de programas. El segundo programa importante que debe realizar un sistema


operativo consiste en permitir la ejecución de programas y su control durante el proceso.
Debe proporcionar a estos un entorno de trabajo y acceder a sus solicitudes de servicio.

Procesamiento de comandos. Finalmente, la tercera labor encomendada al sistema


operativo consiste en proporcionar al usuario un entorno interactivo que permita la
ejecución de subprogramas de servicio y de comandos propios del sistema. Debe
admitir la introducción de órdenes desde el teclado o desde archivos específicos, así
como proporcionar al programador un lenguaje específico suyo para la confección de
dichos archivos.
Taller #1

Evaluacion

Escriba que entiende por :

¿Qué es una computadora?


¿Qué es Hardware?
¿Qué es Software?
¿Cuáles son los Componentes Basicos del Computador?
¿Qué son los Dispositivos de Entrada/Salida (E/S)?
¿Que es la Unidad Central de Proceso?
¿Que es la Unidad de Control?
¿Qué es la Memoria Ram?
¿Qué es la Memoria Rom?
¿Qué es la Memoria Auxiliar (EXTERNA)?
¿Qué es Flash Memory?
Prof. Felipe Hernández Mora

CAPITULO 2.-LENGUAJE DE PROGRAMACION


Es un conjunto de símbolos, caracteres y reglas (programas) que les permiten a las
personas comunicarse con la computadora.
Los lenguajes de programación tienen un conjunto de instrucciones que nos permiten
realizar operaciones de entrada/salida, calculo, manipulación de textos,
lógica/comparación y almacenamiento/recuperación.
Un lenguaje de programación permite a un programador especificar de manera precisa
sobre que datos una computadora debe operar, como deben ser estos almacenados y
transmitidos y que acciones debe tomar bajo una variedad gama de circunstancias. Todo
esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje
humano o natural, tal como sucede en el lenguaje léxico.

OBJETIVOS DE LA PROGRAMACION
La programación de ordenadores debe perseguir tres objetivos fundamentales:
 CORRECCION: Un programa es correcto si hace lo que debe hacer. Para
determinar si un programa cumple con sus funciones es muy importante
especificar claramente que debe de hacerle programa antes de desarrollarlo y
una vez acabado compararlo con lo que realmente hace.
 CLARIDAD: Es muy importante que el programa sea lo mas claro y
legible posible para mejorar el mantenimiento del software. Cuando se acaba
de describir el código del programa, se deben buscar errores y corregirlos.
Mas concretamente, cuando el programa esta concluido, es necesario hacerle
ampliaciones o modificaciones, según la demanda de los usuarios, esta labor
puede ser llevada a cabo por el mismo programador que implementó el,
programa o por otros.

 EFICIENCIA: Debe consumir la menor cantidad de recursos posibles.


Normalmente al hablar de eficiencia se suele hacer referencia al consumo de
tiempo y/o memoria.

La eficiencia y claridad de un programa pueden ser objetivos contrapuestos: se


puede conseguir mayor claridad sacrificando parte de la eficiencia o viceversa.
Pero hay que tener en cuenta que el tiempo del programador es caro, y que hoy
en día el precio de los ordenadores es razonable y cada vez son más baratos.
Los lenguajes de programación se clasifican en:

LENGUAJE MAQUINA: Es aquel cuyas instrucciones son directamente


entendibles por la computadora y no necesitan traducción posterior para que el
CPU pueda comprender y ejecutar el programa. Las instrucciones en lenguaje
maquina s expresan en términos de la unidad de memoria mas pequeña el BIT
(digito binario 0 o 1).
Prof. Felipe Hernández Mora

Lenguaje de maquina se caracteriza:

1) ser considerado el primer lenguaje de programación.


2) ser el único lenguaje inteligible directamente por un ordenador.
3) Basarse en la combinación de dos únicos símbolos, el 0 y el 1, denominados
bits.
4) Ser propio de un determinado procesador, es decir, que cada procesador
tiene su propio y particular lenguaje maquina, que no podrá ser entendido
por cualquier otro.

LENGUAJE DE BAJO NIVEL (ENSAMBLADOR): En este lenguaje las


instrucciones se escriben en códigos alfabéticos conocidos como nemotécnicos
para las operaciones y direcciones simbólicas. Son los encargados de traducir
los programas escritos en lenguaje ensamblador a lenguaje maquina. Los
programas desarrollados en ensamblador se caracterizan por:
1) Ejecutarse mas rápidamente que si se hubiesen sido desarrollados en un
lenguaje de alto nivel.
2) Ocupar menos espacio en la memoria.
3) Facilitar el trabajo a la hora de desarrollar programas que controlan
periféricos, simulen movimientos, generen sonidos, etc.
4) Generar programas más largos que los desarrollados en lenguaje de alto
nivel.
5) Ser el lenguaje de programación más difícil de escribir y depurar, lo que
dificulta la verificación, corrección y modificación de los programas.
6) Los programas escritos en ensamblador no son transportables, es decir, un
programa escrito para un microprocesador concreto no funcionara para un
microprocesador diferente.

Lenguaje Ensamblador Código máquina


ensamblador o binario

LENGUAJE DE ALTO NIVEL: Los lenguajes de programación de alto nivel


(BASIC, pascal, cobol, frotran, Visual Basic, Visual Fox Pro, etc.) son escritos con
palabras similares a los lenguajes humanos (en general en ingles), lo que facilita la
escritura y comprensión del programa. Estos programas te muestran los errores
existentes en el código fuente.
El programador no necesita poseer amplios conocimientos sobre el funcionamiento
interno del ordenador que esta programado. Por otro lado cabe destacar una mayor
facilidad en el desarrollo, depuración y mantenimiento de los programas.

Código fuente Compilador Lenguaje


objetivo

Mensaje de
error
Prof. Felipe Hernández Mora

Otro sistema para la ejecución de nuestro código fuente es mediante el uso de


interpretes (estos no se encontraran dentro de los traductores).

Interpretes
Los intérpretes realizan la traducción y ejecución de forma simultanea, es decir, un
intérprete lee el código fuente y lo va ejecutando al mismo tiempo.

Las diferencias entre un compilador y un intérprete básicamente son:


 Un programa compilado puede funcionar por si solo mientras que un
código traducido por un intérprete no puede funcionar sin este.
 Un programa traducido por un intérprete puede ser ejecutado en
cualquier máquina ya que, cada vez que se ejecuta el intérprete, tiene que
compilarlo.
 Un archivo compilado es mucho más rápido que uno interpretado.

CONCEPTOS BASICOS DE PROGRAMACION

Es un proceso para convertir especificaciones generales de un sistema en instrucciones


utilizables por la maquina, que produzcan los resultados deseados. Se le conoce también
como desarrollo de software.

PROGRAMA

Es una lista de instrucciones que la computadora debe seguir para procesar datos y
convertirlos en información. Las instrucciones se componen de enunciados usados en
lenguaje de programación como Basic, Pascal o C.
Características de un programa:
. Debe ser confiable y funcional
. Advertir errores de entrada obvios y comunes
. Documentado adecuadamente
. Ser comprensible
. Codificado en el lenguaje apropiado

DATOS

Son las características propias de cualquier entidad. Por ejemplo, los datos de una
persona como su nombre, edad, fecha de nacimiento, domicilio, número de teléfono,
etc.

INFORMACIÓN
Es el conocimiento relevante producido como resultado del procesamiento de datos y
adquirido por la gente para realzar el entendimiento y cumplir ciertos propósitos.
Prof. Felipe Hernández Mora

PROCESAMIENTO DE DATOS

Consiste en la recolección de datos de entrada que son evaluados y ordenados para ser
colocados de manera que produzcan información útil.

Actividades del procesamiento de datos:

1.- Captura de datos de entrada


2.- Manejo de los datos (incluye clasificación, ordenación, cálculo y sumarizacion
de estos).
3.- Administración de la salida resultante.

PASOS PARA EL DESARROLLO DE UN PROGRAMA

Los siguientes son los pasos que se deben cumplir para resolver con éxito un problema
de programación:

1.- Definición del problema


Esta dado por el enunciado del problema, el cual debe ser claro y completo. Es
importante conocer que se desea obtener del computador; mientras esto no se
comprenda, no tiene caso dar el siguiente paso.

2.- Análisis del problema


El objetivo de esta fase es entender cabalmente el problema, para resolverlo es preciso:
. Determinar los datos de salida o resultados que se esperan.
. Analizar los datos de entrada que nos suministran
. Definir las tareas de procesamiento que convertirán a los datos de entrada en datos de
salida.

3.- Diseño del algoritmo


Una vez comprendido el problema, debemos determinar las acciones o secuencia lógica
de pasos que debe realizar la computadora para producir el resultado esperado. Si el
problema es muy complicado lo mejor es dividirlo en partes más pequeñas e intentar
resolverlas por separado. A esta metodología de dividir un problema en partes pequeñas
se le denomina “Divide y vencerás”.

4.- Diagramación
Luego de obtener el algoritmo apropiado pasamos a dibujar gráficamente los pasos de
este algoritmo. Esto es precisamente un diagrama de flujo, la representación grafica de
un algoritmo.

5.- Prueba de escritorio


Para cerciorarnos de que el diagrama esta bien, y para garantizar que el programa que
codifiquemos luego también funcione correctamente, es conveniente someterlo a una
prueba de escritorio. Esta prueba consiste en dar diferentes datos de entrada al programa
y seguir la secuencia indicada en el diagrama, hasta obtener los resultados. El análisis de
estos nos indicara si el diagrama esta correcto o si hay necesidad de hacer ajustes
(volver a paso 3).
Prof. Felipe Hernández Mora

6.- Codificación del programa


En esta etapa se debe traducir cada paso del diagrama en una instrucción o sentencia
utilizando un lenguaje de programación que la computadora reconoce. Este programa es
el que se conoce como programa fuente.

7.- Prueba y depuración del programa


Depurar es correr el programa en una computadora y corregir las partes que no
funcionan. En esta fase se comprueba el funcionamiento del programa y esto se hace
con datos reales o ficticios. Al depurar un programa, se pueden encontrar los siguientes
errores:
Errores de sintaxis. Aparecen cuando el programador viola las reglas del lenguaje de
programación (posible error de escritura). Son detectados por el compilador, el cual
analiza todo el programa fuente e informa sobre el lugar donde esta mediante un
mensaje de error. Es necesario volver al paso 6 y realizar la corrección sobre el mismo
programa fuente.
Errores de ejecución. Se producen cuando se realizan operaciones no permitidas como
dividir por cero, leer un dato no numérico en una variable numérica, exceder un rango
de valores permitidos, etc. Se detectan porque se producen una parada anormal del
programa durante su ejecución. Para corregir un error de este tipo es necesario volver al
paso 6.
Errores de lógica. Se detectan cuando el programa no arroja los resultados esperados.
Estos errores no son detectables por el compilador por lo que es necesario volver a los
pasos 4 y 5.
Cuando no hay errores en la compilación, el compilador traduce cada instrucción del
programa fuente a las instrucciones propias de la máquina (lenguaje de maquina),
creando el programa objeto.

8.- Documentación del programa


Se debe documentar el programa para que sea más entendible. Una buena
documentación incluye:
. Enunciado del problema
. Diagrama de pasada
. Listado de última compilación
. Resultados de la ejecución del programa
Prof. Felipe Hernández Mora

La figura siguiente resume las etapas principales en la solución de problemas mediante


programas:

Inicio A

1.- Definición del 7.- Prueba y depuración


problema del programa

2.- Análisis del


problema Errores

3.- Diseño del 8.- Pruebas


algoritmo

4.- Diagramación
Errores

5.- Prueba de 9.- Documentación del


escritorio programa

6.- Codificación
del programa
Fin

A
Prof. Felipe Hernández Mora

CONCEPTOS DE LENGUAJE DE PROGRAMACION

Es un conjunto de símbolos junto a un conjunto de reglas para combinar dichos


símbolos que se usan para expresar programas. Constan de un léxico, una sintaxis y una
semántica.
Léxico. Conjunto de símbolos permitidos o vocabulario.
Sintaxis. Reglas que indican como realizar las instrucciones del lenguaje
Semántica. Reglas que permiten determinar el significado de cualquier construcción del
lenguaje.

TIPOS DE LENGUAJE
Atendiendo al número de instrucciones necesarias para realizar una tarea específica
podemos clasificar a los lenguajes informáticos en dos grandes bloques: de bajo nivel y
de alto nivel.

Los de bajo nivel son de cualquier computadora puede leer y seguir, están escritos en
forma de ceros y unos. Los de alto nivel son lenguajes de programación que se asemejan
a las lenguas humanas usando palabras y frases fáciles de entender. En un lenguaje de
bajo nivel cada instrucción corresponde a una acción ejecutable por el ordenador,
mientras que en los lenguajes de alto nivel una instrucción suele corresponder a varias
acciones.

GENERACIONES DE LOS LENGUAJES

LENGUAJES DE MAQUINA (PRIMERA GENERACION)


Son lenguajes de bajo nivel cuyas instrucciones están codificadas en binario (ceros y
unos). Son capaces de relacionarse directamente con los registros y circuiteria del
microprocesador de la computadora y que resulta directamente ejecutable por este, sin
necesidad de otros programas intermediarios. Los datos se referencian por medio de las
direcciones de memoria donde se encuentran y las instrucciones realizan operaciones
simples. Estos lenguajes están íntimamente ligados a la CPU y por eso no son
transferibles (baja portabilidad). Un programador puede escribir programas
directamente en un lenguaje de maquina, pero las instrucciones son mas difíciles de
recordar y los programas resultan largos y laboriosos de escribir y también de corregir y
depurar.

Lenguaje ensamblador (Segunda Generación)


Es otro lenguaje de programación de bajo nivel, pero simbólico porque las instrucciones
se construyen usando códigos de tipo nemotécnico, lo cual facilita la escritura y
depuración de los programas pero no los acorta puesto que para cada acción se necesita
una instrucción. El programa ensamblador va traduciendo línea a línea a la vez que
comprueba la existencia de errores. Si localiza alguno da un mensaje de error. Algunas
características que lo diferencia del lenguaje de máquina son que en lugar de
direcciones binarias usa identificadores como total, x, y, etc. Y los códigos de operación
se representan por nemotécnica siempre tiene la desventaja de repertorio reducido de
instrucciones, rígido formato para las instrucciones, baja portabilidad y fuerte
Prof. Felipe Hernández Mora

dependencia del hardware. Tiene la desventaja del uso óptimo de los recursos del
hardware, permitiendo la obtención de un código muy eficiente. Ejemplo de algunos
códigos nemotécnicos son: STO para guardar un dato, LOA para cargar algo en el
acumulador, ADD para adicionar un dato, INP para leer un dato MOV para mover un
dato y ponerlo en un registro, END para terminar el programa, etc.

Lenguaje de procedimientos (Tercera generación)


Son lenguajes de alto nivel similares al habla humana. Tienes las siguientes ventajas:

a.- Independencia de la arquitectura física de la computadora (portabilidad), esto


significa que un mismo lenguaje puede funcionar en distintos computadores, por lo que
tanto el lenguaje como los programas escritos con él serán transportables de un
computador a otro.

b.- Una sentencia en un lenguaje de alto nivel da lugar, al ser traducida, a varias
instrucciones en lenguaje máquina. Se llaman de procedimientos porque están diseñados
para expresar la lógica capaz de resolver problemas generales. Entre estos tenemos:
Basic, Pascal, Cobol, C, Fortran.

Lenguajes orientados a problemas (4GL)


Resultan más eficaces para la resolución de un tipo de problemas a costa de una menor
eficiencia para otros. Requieren poca capacitación especial de parte del usuario. Son
consideradas de muy alto nivel, diseñados para resolver problemas específicos. Incluye
lenguajes de consulta y generador de aplicaciones.

- Lenguajes de consulta: Permite usar a los no programadores ciertos comandos


de fácil comprensión para la búsqueda y generación de reportes a partir de una
base de datos.
- Generador de Aplicaciones: Cuando se diseña uno de estos lenguajes, se tiene en
cuenta que su finalidad es la resolución de problemas, prescindiendo de la
arquitectura del computador. Contiene varios módulos que han sido
preprogramados para cumplir varias tareas.

Lenguajes naturales
Lenguajes orientados a aplicaciones en inteligencia artificial, como Lisp y Prolog.
Dentro de este campo destacan las aplicaciones en sistemas expertos, juegos, visión
artificial (Jurasic Park) y robótica. Lisp es un lenguaje para procesamiento de listas y
manipulación de símbolos. Prolog es un lenguaje basado en la lógica, para aplicaciones
de base de datos e inteligencia artificial.
Podemos decir entonces, que los lenguajes de alto nivel, tienen las ventajas de mayor
legibilidad de los programas, portabilidad, facilidad de aprendizaje y facilidad de
modificación.

Clasificación de los lenguajes de alto nivel


Lenguajes de propósito general:
PL/1 PASCAL LOGO
BASIC MODULA II FORTH
C COBOL ADA
Prof. Felipe Hernández Mora

Lenguajes de cálculo científico:


FORTRAN ADA ALGOL
APL PASCAL

Lenguajes orientados a la gestión:


COBOL RPG

Lenguajes de simulación en general:


GPSS SIMULA MIMIC

En el sistema educativo:
ASSET C MODULA II
LOGO BASIC PILOT
PASCAL

Lenguajes orientados a objetos:


PROLOG
DBASE

Lenguajes para inteligencia artificial:


LISP
PROLOG

INTÉRPRETES Y COMPILADORES
Los compiladores, los intérpretes y los ensambladores se encargan de traducir lo que
haya escrito en el lenguaje de alto nivel (código fuente) y lo convierten a código objeto
(casi ejecutable)
Código Fuente Código Objeto
Código Ensamblador

TRADUCCION
(Ensamblador, interprete, compilador)

COMPILADOR

Es un programa que traduce un programa escrito en un lenguaje de alto nivel (C++,


Pascal, etc.) en un programa en lenguaje de máquina que la computadora es capaz de
entender y ejecutar directamente. Un compilador es un tipo esencial de programa, en
cuanto a que sus entradas o datos son algún programa. Para evitar confusiones, solemos
llamar programa fuente o código fuente al programa de entrada, y programa objeto o
código objeto a la versión traducida que el compilador produce.
Prof. Felipe Hernández Mora

El compilador informa al usuario de la presencia de errores en el programa fuente,


pasándose a crear el programa objeto cuando esta libre de errores. Involucra dos pasos
en su operación:
1.- Convertir código fuente a objeto
2.- Ejecutar el código objeto

Al tener el código objeto, el programa se ejecutara más rápido.

Programa Fuente

Compilador

Errores
Programa Listado del
Objeto programa

Datos de Entrada

Pruebas

Resultados

INTERPRETE

Es el que permite que un programa fuente escrito en un lenguaje vaya traduciéndose y


ejecutándose directamente, sentencia a sentencia por la computadora. Convierte uno por
uno los enunciados del código fuente a código objeto antes de ser ejecutados. Convierte
y ejecuta el programa en línea al mismo tiempo. Ejemplo: Basic estándar.
Las ventajas de los intérpretes son:
. Resulta más fácil localizar y corregir errores (depuración de programa)
. Son más pedagógicos para aprender a programar
. Traducen programa de alto nivel

Para cada una de las líneas se ejecuta el siguiente proceso:


Prof. Felipe Hernández Mora

1.- Análisis de la instrucción de esa línea


2.- Traducción de esa línea (si ya esta correcta) a código objeto
3.- Ejecución de esa línea

Con el intérprete, cada vez que necesitamos ejecutar el programa tenemos que volver a
analizarlo porque no hay código objeto. Con el compilador, aunque más lenta la
traducción, solo se realiza una vez.

Taller # 2

Evaluacion

Escriba que entiende por :

¿Que es un Lenguaje de Programaciòn?


¿Qué es Lenguaje de Alto Nivel?
¿Qué es Lenguaje de Bajo Nivel?

Escriba sobre los diferentes tipos de Lenguajes


Escriba en breves palabras el proceso de la Compilacion
Elabore el respectivo grafico.
Prof. Felipe Hernández Mora

Capitulo 3.- Tipos de Datos

Datos
Un dato es una representación simbólica (numérica, alfabética, etc.…), de un atributo o
característica de una entidad. El dato no tiene valor semantico (sentido) en si mismo,
pero convenientemente tratado (procesado) se puede utilizar en la realización de
cálculos o toma de decisiones. Es de ejemplo muy común en el ámbito informático.
En programación un dato es la expresión general que describe las características de las
entidades sobre las cuales opera un algoritmo.

Datos Procesamiento Información

Tipos de datos

Todos los datos tienen un tipo de asociación con ellos. Un dato puede ser un simple
carácter, tal como ‘b’, un valor entero tal como 35. El tipo de dato determina la
naturaleza del conjunto de valores que puede tomar una variable.

Numéricos

Simples Lógicos

Alfanuméricos (string)

Tipos de
Datos Arreglos (Vectores, Matrices)

Estructurados Registros
(Des. Por el
Usuario) Archivos

Apuntadores

Tipos de datos simples

 Numéricos: Permiten representar valores escalares de forma numérica, esto


incluye a los numeros enteros y los reales. Este tipo de daros permiten realizar
operaciones aritméticas comunes.
Prof. Felipe Hernández Mora

 Lógicos: Son aquellos que solo pueden tener dos valores (cierto o falso) ya que
representa el resultado de una comparación entre datos (numéricos o
alfanuméricos).
 Alfanuméricos (String): Es una secuencia de caracteres alfanuméricos que
permiten representar valores identificables de forma descriptiva, esto incluye
nombres de personas, direcciones, etc. Es posible representar numeros como
alfanuméricos, pero estos pierden su propiedad matemática, es decir no es
posible hacer operaciones con ellos. Este tipo de datos se representan encerrados
entre comillas.

Ejemplo:
“PROGRAMA”
“2006”

Identificadores

Los identificadores representan los datos de un programa (constante, variables, tipos de


datos). Un identificador es una secuencia de caracteres que sirve para identificar una
posición en la memoria de la computadora, que permita acceder a su contenido.

Ejemplo:
» Nombre
» Num_hrs
» Calif2

Reglas para formar un identificador

a) Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben


contener espacios en blanco.
b) Letras, dígitos y caracteres como la subraya (_) están permitidos después del
primer carácter.
c) La longitud de identificadores puede ser de varios caracteres. Pero es
recomendable una longitud promedio de 8 caracteres.
d) El nombre del identificador debe dar una idea del valor que contiene.

Constantes y variables

 Constantes: Una constante es un dato numérico o alfanumérico que no cambia


durante la ejecución del programa.
Ejemplo:
Pi=3.1416
 Variable: Es un espacio en la memoria de la computadora que permite almacenar
temporalmente un dato durante la ejecución de un proceso, su contenido puede cambiar
durante la ejecución del programa. Para poder reconocer una variable en la memoria de la
Prof. Felipe Hernández Mora

computadora, es necesario darle un nombre con el cual podamos identificarla dentro de un


algoritmo.
Ejemplo:
Área=pi*radio^2
Las variables son: el radio, el área y la constante es pi.

Diferencias entre ambas

Después de haber visto cada una por separado, pasemos a explicar las diferencias que
existen entre constantes y variables. A primera vista pudieran parecer conceptos
similares, pero realmente son cosas muy distintas. Y esta distinción viene dada por la
posibilidad que tienen las variables para cambiar de valor.

Principales diferencias:

● Las constantes ya reciben un valor inicial en su declaración.


● Las variables primero se declaran, luego se inician, y luego se usan.
● Las constantes, una vez declaradas mantienen su valor durante toda la
ejecución del programa.
● Las variables pueden cambiar su valor tantas veces como deseen.
● Las variables también pueden cambiar de tamaño en tiempo de ejecución
(punteros).

Expresiones

Las expresiones son combinaciones de constantes, variables, símbolos de operación,


paréntesis y nombres de funciones especiales.

Por ejemplo:
A+ (b+3)/c

Cada expresión toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecución de las operaciones indicadas.
Una expresión consta de operadores y operandos. Según sea el tipo de datos que
manipulan, se clasifican las expresiones en:

 Aritméticas
 Relacionales
 Lógicas

Operadores y operandos

 Operadores: Son elementos que relacionan de forma diferente, los valores de


una o más variables y/o constantes. Es decir, los operadores nos permiten
manipular valores.
Prof. Felipe Hernández Mora

Aritméticos
Tipos de Relacionales
Operadores Lógicos

 Los operadores aritméticos permiten la realización de operaciones


matemáticas con los valores (variables y constantes).

Los operadores aritméticos pueden ser utilizados con tipos de datos enteros o
reales. Si ambos son enteros; si alguno de ellos es real, el resultado es real.

Operador (Operando) Operando

Valor

(constante o variable)

Operadores Aritméticos
+ Suma
- Resta
* multiplicación
/ División
Mod. Modulo (residuo de la división entera)
Div Cociente de una división entera

Ejemplos:

Expresión Resultado
8/2 4
12 mod. 8 4
2+6*2 14

Prioridad de los operadores aritméticos


 Todas las expresiones entre paréntesis se evalúan primero. Las expresiones
con paréntesis anidados se evalúan de adentro hacia fuera, el paréntesis mas
interno se evalúa primero.
Prof. Felipe Hernández Mora

 Dentro de una misma expresión los operadores se evalúan en el siguiente


orden:

1.-^ Exponenciación
2.-*, /, mod. Multiplicación , división , modulo .
3.-+,-Suma y resta

 Los operadores en una misma expresión con igual nivel de prioridad se


evalúan de izquierda a derecha.

Ejemplos: 4+22*5=24 46/52=1.84

23*2/5=9.2 3+5*(10-6)=5.09
32 +5*(10-(2+4)3=-1021
3.5+5.9-14.0/40=8.24
2.1*(1.5+3.0*4.1)=28.98

OPERADORES RELACIONALES:

 Se utiliza para establecer una relación entre dos valores.


 Compara estos valores entre si y esta comparación produce un resultado de
certeza o falsedad (verdadero o falso)
 Los operadores relacionales comparan valores del mismo tipo (numéricos o
cadenas)
 Tienen el mismo nivel de prioridad en su evaluación.
 Los operadores relacionales tienen menor prioridad que los aritméticos.

> Mayor que


< Menor que
>= Mayor o igual que
<= Menor o igual que
<> Diferente
= Igual

Ejemplos:
Si a=20 b=40 c=60

a+b>c Falso
a-b<c verdadero
a-b=c falso
a*b<>c verdadero

Ejemplos no lógicos:

A<b<c
Prof. Felipe Hernández Mora

10<20<30 (no es lógico tiene diferentes operandos)


T<30

OPERADORES LOGICOS:
 Estos operadores se utilizan para establecer relaciones entre valores lógicos.
Estos valores pueden ser resultado de una expresión relacional.

OPERADORES LOGICOS

And Y
Or O
Not Negación

OPERADOR AND

Operando Operador Operando 2 Operando 3


T AND T T
T F F
F T F
F F F

OPERADOR OR

Operando Operador Operando 2 Operando 3


T OR T T
T F T
F T T
F F F

OPERADOR NOT

Operando Resultado
T F
F T

Ejemplos:
A=10 b=12 c=13 d=10

1) ((a>b)or(a<c))and((a=c)or(a>=b))
F T F F
Prof. Felipe Hernández Mora

F
T

2) ((a>=b)or(a<d))and((a>=d)and(c>d))
F F T T

F T
F

3) Not(a=c)and(c>b)
F T

FUNCIONES INTERNAS
Las operaciones que se requieren en los programas exigen en numerosas ocasiones,
además de las operaciones aritméticas básicas, ya tratadas, un número determinado de
operaciones especiales que se denominan funciones internas, incorporadas o estándar.
Por ejemplo la función In se puede utilizar para determinar logaritmo de un número y
la función sqrt calcula la raíz cuadrada de un número positivo. Existen otras funciones
que se utilizan para determinar las funciones trigonometricas.
La siguiente tabla muestra las funciones internas más usuales, siendo x el argumento de
la función.

Función Descripción Tipo_ Argumento Resultado

abs.(x) Valor absoluto de x Entero o real Igual al argumento


Arctan(x) Arco tangente de x Entero o real real
Cos (x) Coseno de x Entero o real real
exp.(x) Exponencial de x Entero o real real
In(x) Logaritmo de x Entero o real real
Log10(x) Logaritmo decimal de x Entero o real real
Round(x) Redondeo de x real Entero
Sin(x) Seno de x Entero o real Real
Sqr(x) Cuadrado de x Entero o real Igual al argumento
Sqrt(x) Raíz cuadrada de x Entero o real Real
Prof. Felipe Hernández Mora

Trunc(x) Truncamiento de x real entero

OPERACIÓN DE ASIGNACION

La operación de asignación es el modo de darle valores a una variable. La operación de


asignación se representa por el símbolo u operador. La operación de asignación cuando
se refiere a un lenguaje de programación.
A fin de manejar datos por medio de variables, estos pueden recibir valores
determinados. El tipo de los valores que pueden recibir dependen de la declaración
previa de tales variables.
En una asignación se resuelve, la expresión (al lado derecho del símbolo de asignación)
y se asigna el resultado en la variable.
El formato general de asignación es:
Nom_variable Expresión

Donde Expresión puede ser una variable, constante, operación, funcion.


Ejemplo:
A 9

Significa que la variable A se le ha asignado el valor 9. La acción de asignar es


destructiva ya que el valor que tuviera la variable antes de la asignación se pierde y se
reemplaza por el nuevo valor.
Así en la secuencia de operaciones:
A 30
A 189
A 9
Cuando se ejecutan, el último valor que toma A será 9, ya que los valores anteriores a
este han desaparecido.
Las acciones de asignación se clasifican según sea el tipo de expresiones: aritméticas,
lógicas y de caracteres.

ASIGNACION ARITMETICA

Las expresiones en las operaciones de asignación son aritméticas:


Suma 5+10+2 Se evalúa la expresión 5+10+2 y se asigna a la variable Suma,
es decir ,17 será el valor que toma Suma.

ASIGNACION LOGICA

La expresión que se evalúa en la operación de asignación es lógica, supóngase que M, N


y P son variables de tipo lógico.
M 8<5
N M or (7<=12=)
P 7>6

Tras ejecutar las operaciones anteriores, las variables M, N, P toman los valores, falso,
verdadero respectivamente.
Prof. Felipe Hernández Mora

ASIGNACION DE CARACTERES

La operación que se evalúa es de tipo carácter.


X “3 de Mayo de1999”
La acción de asignación anterior asigna la cadena de caracteres ‘3 de Mayo 1999’ a la
variable de tipo carácter x.

ENTRADA Y SALIDA DE INFORMACION

Los cálculos que realizan las computadoras requieren para ser útiles la Entrada de los
datos necesarios para ejecutar las operaciones que posteriormente se convertirán en
resultados, es decir, Salida.
Las operaciones de entrada permiten leer determinados valores y asignarlos a
determinadas variables. Esta entrada se conoce como operación de Lectura (read).
Los datos de entrada se introducen al procesador mediante dispositivos de salida
(pantalla, impresora, etc.) la operación de salida se denomina escritura (write).
En la escritura de algoritmos las acciones de lectura y escritura se representan por los
formatos siguientes

Leer (Nom_variable)
Escribir (lista de variables de salida)

Ejemplo:

Obtener área de un triangulo.

● Formula (A=B*h/2) donde A=AREA, B=BASE, h=altura


ENTRADA
● Datos (B,h)
PROCESO
● Multiplicar base y altura.
● Dividir resultado de la multiplicación anterior entre dos.
SALIDA
● Área del triangulo

CONCEPTUALIZACION DE LOS TIPOS DE DATOS

DATOS
Es la expresión general que describe los objetos con los cuales opera el programa. Por
ejemplo, la edad y el domicilio de una persona, forman parte de sus datos. Los datos se
sitúan en objetos llamados variables.

VARIABLES
Las variables son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información. Son objetos cuyo valor puede ser modificado a lo largo
de la ejecución de un programa. Al definir una variable lo que hacemos es asignar una
dirección o serie de direcciones de la memoria al nombre de la variable. Las variables
Prof. Felipe Hernández Mora

llevan un nombre llamado identificador. Este puede ser una cadena de letras y dígitos,
empezando siempre con una letra. Por ejemplo: Pi, curso99, nom_alum, etc.

Ventas Gastos Alquiler Nombre de la


variable
Valor de la
115.90 95.75 45.70
variable

Edad I Fact.

25 0 24

IDENTIFICADORES

Los identificadores son palabras creadas por los programadores para dar nombre a los
objetos y demás elementos que necesitamos declarar en un programa: variables,
constantes, tipos, estructuras de datos, archivos, funciones, etc. Puede estar formado por
una secuencia de letras y dígitos (del 0 al 9), aunque también acepta el caracter de
subrayado “_”. Un identificador debe cumplir las siguientes condiciones:

1.- EL primer carácter debe ser una letra (a, b, c,..., z).
2.- La longitud de un identificador es igual a 7 en la mayoría de los lenguajes de
programación.
3.- Un identificador no acepta los acentos ni la ñ

Algunos ejemplos de identificadores válidos y no válidos:

Válidos No válidos
_desc 1num
var1 número3
lugar_nac año_nac

CONSTANTES

Las constantes son objetos cuyo valor permanece invariable a lo largo de la ejecución de
un programa. Una constante es la denominación de un valor concreto, de tal forma que
se utiliza su nombre cada vez que se necesita reverenciarlo. Por ejemplo, si se desea
obtener un reporte para cada uno de los empleados de una empresa, con sus datos
generales, la fecha y cantidad de dinero que recibieron la ultima semana, el dato fecha
puede ser una constante ya que es el mismo para todos.

EL OPERADOR DE ASIGNACION
Prof. Felipe Hernández Mora

Una operación importante en los algoritmos y que se utiliza frecuentemente en los


bloques de procesos de los diagramas de flujo es la operación asignación, Esta
operación consiste en asignar un valor o expresión a una variable por medio del símbolo
del operador de asignación . Así A 15 significa “asignar el valor 15 a la
variable A”. Análogamente, A x ^ 2 + x + 5 significa asignar a A el valor de la
expresión x ^ 2 + x + 5.
En la siguiente secuencia de operaciones de asignación:

A 10 Memoria de la PC
B 15
C A+B A B C 25
10 15

Resulta en que C tiene le valor de 25. En esta secuencia:

A 10
B 15
A 20 A B C 35
20 15
C A+B

Resulta que C tiene le valor de 35. Observe que primero a A se le asigna el valor 10 y
después el valor 20. La asignación es una operación destructiva. Esto significa que si a
una variable le es asignado un valor y posteriormente se le asigna otro valor, este se
destruye, conservando ahora el nuevo valor.
El operador de asignación se emplea frecuentemente en sentencias tales como N N+
1.
Esto nos dice dar a N un nuevo valor que sea igual al anterior valor más 1. Por ejemplo:

N 10
B 15 N 11 B 15
N N+1

Da a B el valor 15 y a N el valor 11. De modo similar.

N 9 11 15
N B
B 5
N N+1
B N *(B+5)

N 10 B 100
Prof. Felipe Hernández Mora

Da a N el valor 10 y a B el valor 100.


Si inicialmente A 15 y B 20, la secuencia siguiente intercambia los valores de A
y B:

C A
A B A 15 B 20 C 15
B C

Para el intercambio de valores se utiliza una variable auxiliar, en este caso C. Primero
guardamos el valor de A en la variable auxiliar C, después asignamos el valor de B a la
variable A (el valor original de A se destruye pero queda almacenado en C), finalmente
asignamos el valor de C a B.

Cuando se realiza la operación de asignación, las variables de la derecha del signo


permanecen con su valor original, a menos que una de ellas también aparezca en el lado
izquierdo del operador de asignación. Solo puede existir una variable a la izquierda del
operador de asignación. Solo puede existir una variable a la izquierda del operador de
asignación y sentencias tales como A +B DoB+5 D no son validas.

EXPRESIONES

Son representaciones de un cálculo necesario para la obtención de un resultado. Están


pueden ser valores constantes, funciones o combinaciones de valores, variables,
funciones y operadores que cumplen determinadas reglas de construcción de una
expresión. Son un conjunto de operadores y operandos que producen un valor. Por
ejemplo:
Sin (pi * x) + 12.56 * Sqrt (100)

TIPOS DE DATOS

Es el conjunto de valores que puede tomar una variable. Se tiene dos tipos de datos:
Simples como numéricos y alfanuméricos y estructuras de datos que pueden ser internas
o externas.

DATOS NUMÉRICOS

Son aquellos cuyo contenido es una serie de dígitos (0-9) que en conjunto nos
proporcionan un valor numérico ya sea entero (Integer) o real (Float) y pueden ser
Prof. Felipe Hernández Mora

precedidos de un signo + ó -. Los números enteros no tienen parte decimal. El rango de


valores que admite es -32767 a 32767. Veamos algunos ejemplos:

55 -55 18525 -32767 -30000 32760 800 -32000

Los números reales tienen parte decimal. El rango de posibles valores es del 3,4E-38 al
3,4E38. Ejemplos:
49 -35 185.25 -346.67 -30450 32760.5 800 -32000.99

DATOS ALFANUMÉRICOS

Dentro de este tipo de datos encontramos los de tipo carácter (Char) que puede ser una
letra del abecedario (a, b, c,…, z, A, B, C,…, Z), dígitos (0, 1, 2, 3,…, 9) o símbolos
especiales (#, $, ^, *, %, *, /, ¡, +, -, …etc.). Una variable de tipo Char solo puede
contener un solo carácter, es decir, no puede almacenar ni frases ni palabras. Ejemplos:
‘b’ ‘B’ ‘$’ ‘3’ ‘%’ ‘+’ ‘/’ ‘F’ ‘v’

También hay un tipo cadena de caracteres que pueden contener un conjunto de


caracteres. La longitud de una cadena depende del lenguaje de programación utilizado
en la codificación en el programa, aunque normalmente se acepta una longitud de 255
caracteres. Veamos algunos ejemplos:
‘abcd’ ‘3FA’ ‘Diana Salazar’ ‘5836575’ ‘Soltero’

LOS OPERADORES

Un operador es un símbolo o palabra que significa que se ha de realizar cierta acción


entre uno o dos valores que son llamados operandos. Los hay de varios tipos:
. Aritméticos (su resultado es un número)
. Relacionales (su resultado es un valor de verdad)
. Lógicos o Booleanos (su resultado es un valor de verdad)
. Alfanuméricos: + (concatenación)
. Asociativos. El único operador asociativo es el paréntesis ( ), el cual permite indicar en
que orden deben realizarse las operaciones. Cuando una expresión se encuentra entre
paréntesis, indica que las operaciones que están dentro de ellos deben realizarse
primero. Si en una expresión se utiliza más de un paréntesis se deberá proceder primero
con los que encuentren más hacia el centro de la expresión.

OPERADORES ARITMETICOS

Los operadores aritméticos sirven para realizar operaciones tales como suma, resta,
división y multiplicación. Existen varios tipos de operadores aritméticos:

Operador Operación Ejemplo Resultado


+ Suma 6+4 10
- Resta 6-4 2
* Multiplicación 6*4 24
Prof. Felipe Hernández Mora

/ División 6/4 1.5


Mod Resta de una 6 mod 4 2
división entera
Div División entera 6 div 4 1
^ Potencia 2^4 16

JERARQUIA DE LOS OPERADORES ARITMÉTICOS

Tenga cuidado cuando utilice los operadores pues a veces puede obtener resultados no
esperados si no tiene en cuenta su orden de evaluación. Veamos la lista de precedencias,
cuanto más arriba se evalúa antes:

Operador

() Mayor precedencia
^
*, /, Mod, Div
+, - Menor precedencia

Para resolver una expresión aritmética siga estas reglas:


- Primero se resuelven las expresiones que se encuentran entre paréntesis.
- Se procede aplicando la jerarquía de operadores.
- Al evaluar una expresión, si hay dos operadores con la misma jerarquía, se
procede a evaluar de izquierda a derecha.
- Si hay expresiones relacionales, se resuelven primero paréntesis, luego se
encuentran los valores de verdad de las expresiones relacionales y por último se
aplica jerarquía de operadores lógicos. En caso de haber iguales proceder de
izquierda a derecha.
En la operación siguiente, si vamos a la tabla de precedencias, vemos que el operador *
tiene mayor precedencia que el operador +, por lo tanto se realiza primero el producto
8*4=32, a continuación se realiza suma 32+8=40.
8*4+8
Si en una operación encontramos signos del mismo nivel de precedencia dicha
operación se realiza de izquierda a derecha. Imaginemos que tenemos la siguiente
operación:
10*4+3*5
Dado que el operador * tiene mayor precedencia, primero se realizan los productos
10*4=40 y 3*5=15, a continuación se realiza la suma 40+15=55.

Veamos otro caso:


10*(4+3*5)
Ahora con el paréntesis cambia el orden de evaluación. El que tiene mayor precedencia
ahora es el paréntesis. Dentro del paréntesis tenemos producto y suma. El producto es
de mayor precedencia de modo de que lo evaluamos primero: 3*5=15. Seguimos en el
paréntesis, nos queda la suma 4+15=19. Luego de evaluar todo el paréntesis nos queda
la expresión 10*19, que evaluándolo nos queda: 190.

Veamos varios casos más y algunos ejercicios para resolver:


Prof. Felipe Hernández Mora

a) 4*8 – 2^3 + 10

4*8 - 8+10
2 3
32-18
4
14

c) 7 Div 3 +2^ (10-7)


1
7 Div 3 + 2^3
3 2
2+8
4

10

e) 8 Div 3 – (2^3 + 10 Mod 3)


1 2
8 Div 3 – (8+1)
3
8 Div 3 -9
4

2-9
5
-7
OPERADORES DE RELACION

Los operadores de relación se utilizan para comparar el contenido de dos variables. Al


comparar un dato con otro, devuelven True, si es verdadero, o False, si es falso. Existen
seis operadores relacionales básicos:

Operador Significado

> Mayor que


< Menor que
>= Mayor o igual que
<= Menor o igual que
= Igual que
<> Distinto a
Prof. Felipe Hernández Mora

Si hay más de un operador se evalúan de izquierda a derecha. Además los


operadores = y <> están por debajo del resto en cuanto al orden de precedencia.
Veamos algunas expresiones de relación y sus respectivos valores:

5^2 < 6^2


1 2
25<36
3
Falso

Veamos algunos ejemplos y ejercicios para resolver:

a) X=4, A=3

X^2 Div A > 5*X+3


1

16 Div A > 5*X+3


2

5 >5*X+3
3

5 > 20+3
4

5 > 23
5
Falso

c) (7 Div 3>5) > (2^ (10-7)=8)


1

(2>5) > (2^ (10-7)=8)


2

Falso > (2^ (10-7)=8)


3

Falso

Falso > (2^3=8)


4

Falso > (8=8)


5

Falso > Verdadero


6
Prof. Felipe Hernández Mora

Falso

Falso es menor que verdadero.

OPERADORES LOGICOS

Estos operadores permiten unir varias expresiones de relación para formar


expresiones más complejas. Básicamente son tres:

Operador Significado

AND Y lógico
OR O lógico
NOT No lógico

El operador AND

Este operador combina dos condiciones simples y devuelve verdadero solo si los
dos operandos son verdaderos, en los demás casos devuelve falso.

Tabla de verdad del operador AND:

A B A AND B
VERDADERO VERDADERO VERDADERO
VERDADERO FALSO FALSO
FALSO VERDADERO FALSO
FALSO FALSO FALSO

Ejemplos y ejercicios con el operador AND:

a) Si a =2 y b= 15
(a < 5) AND (b> 25)
1
VERDADERO AND (b >25)
2

VERDADERO AND FALSO


3

FALSO

b) Si a=30,b=20 y c=15
Prof. Felipe Hernández Mora

(a>b)AND (b>c)
1
VERDADERO AND (b >c)
2
VERDADERO AND VERDADERO
3
VERDADERO

e) Si a=30,b=20,c=20, y d=5
((a<b) AND (b=c)) AND (c<d)
1
(FALSO AND (b=c)) AND (c<d)
2

(FALSO AND VERDADERO) AND (c<d)


3

FALSO AND (c<d)


4

FALSO AND FALSO


5

FALSO

El operador OR

Este operador devuelve verdadero si ambos o uno de los dos operandos es


verdadero. Devuelve falso solo si ambos operandos son falsos.

Tabla de verdad del operador OR:

A B A OR B
VERDADERO VERDADERO VERDADERO
VERDADERO FALSO VERDADERO
FALSO VERDADERO VERDADERO
FALSO FALSO FALSO

Ejemplos y ejercicios con el operador OR:

a) Si a =2 y b= 15
(a < 5) OR (b> 25)
1
VERDADERO OR (b >25)
2
Prof. Felipe Hernández Mora

VERDADERO OR FALSO
3

VERDADERO

c) Si a=30,b=20 y c=15
(a>b)OR (b>c)
1
VERDADERO OR (b >c)
2
VERDADERO OR VERDADERO
3
VERDADERO

e) Si a=20,b=a,c=15, y d=10
((a=b) OR (b<c)) OR (c<d)
1 2

(VERDADERO OR FALSO) OR (c<d)


3

VERDADERO OR (c<d)
4
VERDADERO OR FALSO
5
VERDADERO
El Operador NOT

Este operador actúa sobre una sola condición simple u operando y


simplemente niega (o invierte) su valor.

Tabla de verdad del operador NOT:

A NOT A
VERDADERO FALSO
FALSO VERDADERO

Ejemplos y ejercicios con el operador NOT:

a) Si b=15
NOT (b+10>25)
1

NOT (25>25)
2

NOT FALSO
3
Prof. Felipe Hernández Mora

VERDADERO

b) Si N=10 y b=2
NOT ((N^b)>150)
1

NOT (100>150)
2
NOT FALSO
3
VERDADERO

e) Si x=30, y=20
NOT (x-y>0)
1

NOT (10>0)
2

NOT VERDADERO
3
FALSO

Algebra de Boole
Veamos algunas propiedades del algebra de Boole con respecto a los operadores
AND, OR, NOT.
Siendo A, B, y C tres variables booleanas a los que se les ha asignado cualquier
valor lógico:

Propiedad Conmutativa
A AND B<= => B AND A
A OR B <= => B OR A

Propiedad Asociativa
(A AND B) AND C<= => A AND B AND C <= => A AND (B AND C)
(A OR B) OR C<= => A OR B OR C <= => A OR (B OR C)

Propiedad Distributiva
(A AND B) OR (A AND C) <= => A AND (B OR C)
(A OR B) AND (A OR C) <= => A OR (B AND C)

Propiedad de la Negación
NOT (NOT A) <= =>A

Existen unas leyes de conversión muy importantes, denominadas LEYES DE


MORGAN, que anuncian lo siguiente:
Prof. Felipe Hernández Mora

NOT (A AND B) <= => (NOT A) OR (NOT B)


NOT (A OR B) <= => (NOT A) AND (NOT B)

Estas operaciones serán útiles para convertir una operación lógica, de un operador a
otro.

Jerarquía de los operadores Lógicos


Veamos la lista de precedencias de los operadores lógicos, cuanto mas arriba se evalúa
antes:
Operador
NOT Mayor precedencia
AND
OR Menor precedencia

Ejemplos y ejercicios con los operadores lógicos:


a) Si A es FALSO y B es FALSO: b) Si A es FALSO y B es FALSO, hallar el
valor de verdad de la siguiente expresión:
NOT A AND NOT B
NOT (A OR B) AND NOT FALSO
NOT FALSO AND NOT FALSO

VERDADERO AND VERDADERO

VERDADERO

c) Si a=15 y b=10, resolver la siguiente d) Si A y B son valores verdaderos y


expresión: NOT (A OR B) AND NOT (P AND Q)

e) Si a= 10 y SW= FALSO, resolver: f) Si a= 10 y b= 2*a+5, resolver:


((a>10) AND (a<20)) AND SW NOT (( a>10) OR (b<20)) AND FALSO

(FALSO AND VERDADERO) OR SW

FALSO OR SW

FALSO OR FALSO

FALSO

g) Si a=10, resolver: h) Si a=10, resolver:


NOT ((a>10) AND (a<20)) NOT (a>10) OR NOT (b<20)

NOT (FALSO AND VERDADERO)

NOT FALSO
Prof. Felipe Hernández Mora

VERDADERO

i) Si a=10, b=22 ¿Que valor toma la j) Si a=10, b=22 y c=44 ¿Qué valor
variable booleana P en esta expresión? toma la variable booleana P en esta
expresión?
P= (a=b) OR (a<>b)
P= (a=b) AND (c<>a)
P= FALSO (a<>b)

P= FALSO OR VERDADERO

P= VERDADERO

JERARQUIA DE TODOS LOS OPERADORES


La tabla siguiente muestra la jerarquia de todos los operadores (aritméticos, relacionales
y lógicos):

OPERADOR

() Mayor precedencia
^
*, /, mod, div
+, -
=, <>, <, >, <=, >=
NOT
AND
OR Menor precedencia

Veamos algunos ejemplos mas y los pasos para resolverlos:

a) NOT (15 div 2 < 5) OR (1 < 6Mod 2)


NOT ( 7 < 5 ) OR (1 < 6 Mod 2)
NOT FALSO OR ( 1 <6 Mod 2)
NOT FALSO OR ( 1<0)
NOT FALSO OR FALSO
TRUE OR FALSO
TRUE

b) NOT ( 25 Div 7 <5 ) AND NOT ( 6 Div 5 < 6 Mod 2 OR 20 > 25)
Prof. Felipe Hernández Mora

NOT ( 3 < 5 ) AND NOT ( 6 Div 5 < 6 Mod 2 Or 20 > 25)


NOT FALSO AND NOT ( 6 Div 5 < 6 Mod 2 Or 20 > 25)
NOT FALSO AND NOT ( 1<0 OR 20 > 25 )
NOT FALSO AND NOT ( FALSO OR FALSO )
NOT FALSO AND NOT FALSO
VERDADERO AND NOT VERDADERO
VERDADERO

c) A=5, B=10
NOT ( 25>= A ^ 2 ) OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT ( 25>= 25 )OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT VERDADERO OR NOT ( 35 – B Div 5 <> A*2 Div 5)
NOT VERDADERO OR NOT ( 35-2 <> 10 Div 5 )
NOT VERDADERO OR NOT ( 35-2 <> 2 )
NOT VERDADERO OR NOT ( 33 <> 2 )
NOT VERDADERO OR NOT VERDADERO
FALSO OR FALSO
FALSO

d) A=5, B=15
NOT ( B> (2 >= A Div 2 = 15 ))
NOT ( 15 > ( 2>=5 Div 2 = 15 ))
NOT ( 15 > (2 >= 2 = 15))
NOT ( 15 > ( VERDADERO = 15 )) Error. No se puede realizar la comparación
Entre un valor lógico y un valor
numérico utilizando un operador
relacional.

e) A=10, B=15
NOT ( B= ( 2>= A Div 2 > VERDADERO ))
NOT (15= ( 2>= 10 Div 2 > VERDAERO))
NOT (15= ( 2>= 5 > VERDADERO))
NOT (15= ( FALSO > VERDADERO ))
NOT (15= FALSO)

ESCRITURAS DE FORMULAS MATEMATICAS


En los lenguajes de programación las formulas matematicas se deben escribir en
formato lineal.
Esto obliga al uso frecuente de paréntesis que indiquen el orden de evaluacion correcta
de los operadores.

Formulas Matematicas Formato Lineal


Area = base x altura area=(base *altura)/2
2

F= 9 C +32 F= (9/5)*C +32


5
Prof. Felipe Hernández Mora

Suma= N (N+1) Suma=N*(N+1)/2


2

M= C(1+i/N)NxT M= C*(1+i/N) ^ (N*T)

Suma= N (N+1)(2N+1) Suma=N*(N+1)*(2N+1)/6


6

Area= p(p-a)(p-b)(p-c) Area= p*(p-a)*(p-b)*(p-c) ^(1/2)

M= x+y m=(x+y)/(x-y)
x-y

Taller de Operadores Aritmeticos, Relaciòn, Logicos

EVALUACION
1.- Resuelva las siguientes expresiones:

a) A=5 y B=10 b) 4*(8-6) ^ 3 + (10^ 2) Div 25


A*8 -2^A.+ B^2 + B Div 3

c) A=10 d) A=10, B=5


A^ 2 > 10*A A^2 Div B > 10

2.- Resuelva las proposiciones

C=100 C=100
C>70 AND C> 150 C>70 OR C>150

B=80 A=80 y B=50


NOT (B<50) NOT(A>70 AND B > 50)

A=50 y B=40 A=50


NOT (A>60 OR NOT (B>30)) NOT(NOT(A>60)) OR FALSO

A=50 A=70
Prof. Felipe Hernández Mora

NOT(A>60) > NOT (A<60) NOT(NOT(A<60))

Taller # 3
EVALUACION

¿Qué es un dato?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los tipos de datos?

-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------

¿escriba las reglas para formar un identificador


-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿A que se llama variable y constante?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los operadores relacionales?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los operadores lógicos?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
escriba 5 funciones internas
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cómo se clasifican las acciones de asignación?
-----------------------------------------------------------------------------------------------------
-----------------------------

Fecha:
Calificación
Prof. Felipe Hernández Mora

Taller # 4

EJERCICIOS

Resolver las siguientes expresiones y subraye la alternativa de respuesta correcta.

1. - (3>=3or 5<>5) and not (15/5+2<<5) respuesta


a) V
b) F
c) Not V
d) Ninguna

2. - ((2*7>4-1) or (1>3-2)) and (8<5) respuesta


a) V
b) F
c) 44
d) ninguna

3. - 7+5*(20-(3+5)) respuesta
a) Not F
b) Not V
c) 67
d) Ninguna

4. - (4+1)*5*21 respuesta
a) 45
b) 50-4
c) 23
d) ninguna

5.- (3+ (8+3)) div 2 mod. 6 respuestas


a) 0
b) 20
c) 12
d) ninguna
Prof. Felipe Hernández Mora

Capitulo 4.- Algoritmo

Reseña histórica
El termino algoritmo tiene su origen en la palabra algoritmo, el mismo que viene del
nombre del famoso e inolvidable matemático, astrónomo y filosofo musulmán:
Buchafar Mohamed Abenmusa Aldharismi. El cambio de la palabra “algorismo” a
“algoritmo”, no es difícil de entender tomando en cuenta que la gente había olvidado la
derivación original de la palabra. Uno de los primeros diccionarios matemáticos en
alema el Vollstandiges Mathematishes
Lexicon (Leipzing, 1747), de la siguiente descripción de la palabra Algorithmus.
“Bajo este concepto se combinan las naciones de los 4 tipos de de cálculos aritméticos,
suma, multiplicación, resta y división”
En el año 1950, la palabra algoritmo era frecuentemente asociada con el “Algoritmo de
Euclides”, el mismo en que consiste en un conjunto de pasos ordenados para hallar el
máximo común divisor de 2 números dados.
Algoritmo de Euclides.- dados dos números enteros positivos m y n, encontrar su
máximo común divisor, es decir el mayor entero positivo que divide exactamente a la
vez a n y m.
PASO 1.- Leer m y n ( m>n)
PASO 2.- Dividir m por n, y calcular el resto r, (0 < r < n)
PASO 3.- Si r = 0, el algoritmo termina; n es la respuesta, caso contrario ir al paso 4.
PASO 4.- Asignar n en m (m n) y r en n (n r) y volver al paso 2.

Ejemplo
cociente
Para: m=20 __m______n______(entero)___________r___

N=12
20 12 1 8 R=0? No
12 8 1 4 R=0? No
8 4 2 0 R=0? Si

Entonces 4 es la respuesta

La escritura de un programa, en cualquier lenguaje de programación, no constituya


nada más que la elaboración de un algoritmo adecuado para la resolución de un
problema.
1.2 Definición del algoritmo
Algoritmo es un conjunto concreto de pasos o acciones que se deben realizar
ordenadamente para llegar a un fin determinado (solución de un problema, obtención de
una respuesta intermedia o realización de una tarea) de cualquier problema de un mismo
tipo, Los algoritmos deben cumplir con las propiedades de ser: finitos, deterministicos y
generales.
Prof. Felipe Hernández Mora

En el diseño de un algoritmo se deben tomar en cuenta 3 partes fundamentales, entrada,


proceso y salida.
Se puede considerar dos clases de algoritmo a saber: algoritmos cualitativos y
algoritmos cuantitativos.

Algoritmos cualitativos
Son aquellos pasos o instrucciones de escrito por medio de palabras comunes del idioma
español que sirven para llegar a la obtención de la respuesta o solución de un problema.
Ejemplo.
Se dispone de una cantidad ilimitada de agua, de un recipiente de 5 litros y otra de 4
litros, escribir un algoritmo para colocar exactamente dos litros de agua en el recipiente
de 5 litros.

Solución
1. llenar con agua el recipiente de 5 litros
2. llenar el recipiente de 4 litros con agua de la de 5 litros, de esta manera el
recipiente d 5 litros contendrá un litro
3. Vaciar el recipiente de 4 litros.
4. Poner el contenido de l recipiente de 5 litros en el recipiente de 4 litros.
5. llenar de nuevo el recipiente de 5 litros.
6. llenar el recipiente de 4 litros con agua de la de 5. Estro supone que pasen a la
primera 3 litros, quedando 2 litros en el recipiente de 5.

Algoritmos cuantitativos
Son todos aquellos pasos o instrucciones que involucran cálculos numéricos para
obtener un resultado adecuado.

Ejemplo
Elaborar un algoritmo para calcular las raíces de una ecuación de segundo grado,
conocidos los coeficientes a, b, c.
1. Inicio
2. Poner la ecuación en forma general ax2  bx  c  0
3. Calcular el valor de b 2  4ac y ponerse en d
4. Si d>4, continuar con el paso 5, caso contrario ir a 10
5. Calcula la raíz cuadrada de d y poner en w
6. Calcular la primera raíz: x1 = (-b+w)/(2*a)
7. Calcular la segunda raíz x2 = (-b-w)/(2*a)
8. Escribir x1, x2
9. Ir al paso 11
10. escribir las raíces son imaginarias.
11. Fin
Prof. Felipe Hernández Mora

Representación de algoritmos
hay 4 maneras de representar un algoritmo
A.- Representación narrativa
B.- Diagrama de flujo
C.- Diagrama N-S
D.- Seudocòdigo

A.- Representación narrativa


Un algoritmo se puede escribir utilizando nuestro idioma español, en forma narrativa,
pero muchas veces esta descripción puede resultar prolija y llena de ambigüedades, en
vista de que no se utiliza ninguna técnica previamente definida.
Ejemplo:
Narrar los pasos para calcular la superficie de un triangulo:
1. Inicio
2. Leer los datos de base y altura
3. Multiplicar la base por la Altura, el resultado dividir para 2
4. Almacenar el resultado anterior en Superficie.
5. Escribir el valor de la Superficie
6. Fin

Evaluaciòn # 7
Taller # 7

¿Qué es un algoritmo?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
¿Cuáles son los tipos de algoritmos?
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
escriba el concepto de lenguaje de programación
-----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
escriba la clasificación de lenguaje de programación.
-----------------------------------------------------------------------------------------------------
--------------------------------------------------------

PROBLEMAS DE ALGORITMOS
Taller # 8
1. Un estudiante se encuentra durmiendo en su casa y tiene que ir a la universidad a
tomar la clase de programación, ¿Qué debe hacer el estudiante?

2. Realizar un algoritmo para cambiar la rueda pinchada de un automóvil teniendo un


gato en buen estado, una rueda de reemplazo y una llave inglesa.

3. Realizar la suma de los numeros 2448 y 5746


Prof. Felipe Hernández Mora

4. Elabore el algoritmo que permita cruzar los 3 misioneros y 3 caníbales. Pero en la


canoa solo pueden ir dos personas.

5. Un campesino necesita pasar un rió, lleva un lobo, una oveja y un saco de lechuga,
pero su canoa es tan chica que en ella cabe el campesino y con el solamente la oveja, el
lobo o el saco de lechuga.

6. Indique los pasos para ayudar a una familia a cruzar al otro lado del puente

7. Para regresar a su destacamento tres soldados debían cruzar un rió, el puente estaba
destruido y el rió es correntoso y profundo. Uno de ellos descubre a dos niños
navegando en una canoa pequeña a remo, la misma que podía resistir a los niños o a un
soldado al mismo tiempo. Indique como hicieron los soldados para poder cruzar el rió.

8. Tres alpinistas desean cruzar un abismo de 100m, dos de ellos pesan 60kg y el otro
80kg. Para poder cruzar existe una cuerda y una polea que resiste 120kg. Indicar los
pasos a seguir para que los tres alpinistas puedan cruzar el abismo.

Seudocòdigo
Es la descripción de un algoritmo para la solución de un problema determinado
utilizando palabras normales de un idioma, en nuestro caso el español. En otras palabras
es la descripción de la solución de un problema utilizando las características de un
lenguaje de programación estructurado como pascal, c++, Visual Basic.
Ejemplo:
Diseñar un algoritmo utilizando seudocodigos para calcular la superficie de un triangulo
Conocidos como datos la base, y la altura.
Algoritmo superfice_triangulo
var.
Base, Altura: entero
Súper : real

Inicio
Escribir (“Ingrese Base:”)
Leer (base)
Escribir (“Ingrese Altura:”)
Leer (altura)
Super (Base*Altura)/2
Escribir (Súper)

Fin

Ejercicios
Describir los algoritmos respectivos, utilizando la descripción narrativa, la técnica de
flujogramas y el seudocodigos de los sgtes. Problemas:
Prof. Felipe Hernández Mora

1.- conocidos los catetos de un triángulo rectángulo, calcular la hipotenusa aplicando el


teorema de Pitágoras.
Algoritmo Hipotenusa

Var
B,C: Entero
A: Real
Inicio
Escribir (“Ingrese B: ”)
Leer (B)
Escribir (“Ingrese C: ”)
Leer ©
A SQRT(B**2+C**2)
Escribir (A)
Fin

Taller # 6 de seudocòdigo

9. Realizar el pseudocódigo de un programa que permita calcular el área de un


rectángulo. Se deberá introducir la base y la altura para poder realizar el cálculo.

10. Realizar el pseudocódigo que representa un algoritmo que reciba como dato de
entrada el valor de una temperatura expresada en grados centígrados y nos calcule y
escriba sus equivalentes en grados kelvin.

11. Realizar el pseudocódigo que permita al usuario introducir por el teclado dos notas,
calculando la suma y el producto de las notas, para posteriormente calcular datos
estadísticos.

12. Realizar el pseudocódigo que calcule el área de un triangulo recibiendo como


entrada el valor de base y altura.

13. Realizar el pseudocódigo que calcule la hipotenusa de un triángulo rectángulo,


recibiendo como entrada el valor de los catetos.

14. Realizar el pseudocódigo para poder ingresar el valor de la suma de los activos y
pasivos de un balance inicial y obtener el capital.
15. Realizar el pseudocódigo para obtener el valor de los activos de un balance inicial,
se debe ingresar el capital y la suma de los pasivos.

16. Realice un pseudocódigo para obtener el valor del total de pasivos de un balance
inicial, determine usted los datos de entrada
Prof. Felipe Hernández Mora

Capitulo 5.- Diagramas de flujo


Desde 1940, cuando se hizo evidente que escribir un programa involucraba miles de
instrucciones individuales y por lo tanto podía ser muy complejo, se empezó a buscar
una metodología para el diseño de programas para el computador. Von Neumann fue
uno de los pioneros en utilizar diagramas de flujo. Esta técnica permite utilizar símbolos
gráficos para representar los procesos lógicos. El diagrama de flujo de un programa es
una representación gráfica del algoritmo del programa.
Mucho años después del trabajo de Von Neumann, elaborar diagramas de flujo de la
lógica del programa antes de codificarlo era un proceso básico en el diseño de
programas. Su importancia fue tal que ANSI (American National Standard Institute)
Instituto Nacional Americano de Estándares, definió unos elementos estándares para
diagramas de flujo donde cada símbolo tiene una significación específica.
Los diagramas de flujo del programa siguen siendo una valiosa herramienta de diseño
de algoritmos. Sin embargo algunos agregan que es más útil como herramienta de
análisis para comunicar la lógica del programa a otros programadores.
Definición
Diagrama de flujo es un conjunto de figuras geométricas (Rectángulos, rombos,
cuadrados, círculos, etc.) Unidas o relacionadas por medio de segmentos de rectas, con
flechas que determinan el orden lógico de un algoritmo, en donde la forma de una figura
geométrica indica la acción a seguir.
Dentro del diagrama de flujo toda figura geométrica se llamara bloque y toda acción a
ejecutar que se encuentra dentro de un bloque se llamara instrucción.

Bloque
I I+1
Instrucción

Diagramas de flujo
Es la solución de un problema utilizando un conjunto de figuras geométricas (rombos,
rectángulos, cuadrados, círculos, etc...) unidas y relacionadas por medio de segmentos
de recta, con flechas que determinan el orden lógico de un algoritmo, en donde la forma
de una figura geométrica indica la acción a seguir
Ejemplo:
Elaborar un diagrama de flujo para calcular la superficie de un triangulo, conociendo la
base y la altura.
Prof. Felipe Hernández Mora

INICIO

“INGRESE
BASE”

“INGRESE
ALTURA”

S (B*H)/2

FIN

TIPOS DE DIAGRAMAS
En procesamiento de datos se consideran los siguientes diagramas:
Diagrama de flujo del sistema
Por medio de la cual se describe la ruta que siguen los datos, en forma detallada, dentro
de un sistema de tratamiento automático de información.
Diagrama de flujo de programa
En este diagrama se representan las instrucciones que defieren las operaciones y
decisiones lógicas orientadas al computador.
Diagrama de bloques
En este diagrama se representa el bloque general del proceso y los varios programas
constitutivos.
Diagramas de pasada
Es un diagrama que nos muestra que archivos entran y que archivos salen una vez
realizado el procesamiento automático de la información
Prof. Felipe Hernández Mora

VENTAJAS DE LOS DIAGRAMAS DE FLUJ0


1. Es una herramienta para los programadores y analistas que permite representar en
forma gráfica la solución de un problema.
2. Permite establecer una visión más amplia y objetiva de los sistemas actuales,
igualmente verificar si se han tomado en cuenta en la solución de los problemas
tolas posibilidades o si existen algunas acciones duplicadas.
3. El diagrama de flujo es una ayuda para el programador, a la hora de realizar
modificaciones en un programa, elaborado por una misma persona o distinta.
4. La solución de un problema a través de un diagrama de flujo estructurado, permite
la codificación en un lenguaje de programación como: Pascal, C++, Visual Basic,
etc...
5. El diagrama de flujo permite documentar un sistema de información

SIMBOLOGIA UTILIZADA
Los símbolos o bloques para diagramar existen en gran cantidad y de diversas formas. A
que expondremos aquellos que se encuentran estandarizados por la ANSI (American
National Estándar Institute), que corresponde al instituto Nacional Americano de
Estándares.
1. Inicio y fin del algoritmo

2. Entrada y salida de datos


por pantalla

3. Entrada de datos por teclado

4. Proceso o calculo

5. bloque de decisión

6. PROCESO ESTABLECIDO
Bloque que intrínsecamente ejecuta
3 instrucciones

7. Impresión de resultados

Conector. - Indica un sigue a,


Prof. Felipe Hernández Mora

 un viene de, sirve p ara hacer


Conexiones o continuaciones de un
Mismo algoritmo en una misma
Pagina

Conector de pagina.- Sirve para


Indicar la continuación de un algoritmo
Cuando este ocupa varias páginas

8. Segmento de flujo.- indica la dirección


y el sentido lógico

11.- Transmisión de datos.- transmisión


De datos a distancia via teléfono,
Radio frecuencia o microondas

12.- Entrada / Salida de datos.- De un


Almacenamiento magnético en línea

13.- Lectura / escritura de datos en un


Disco duro

14.- Lectura / escritura de datos en un


Diskette

15.- Lectura / escritura de datos en un


CD / ROM

16.- Lectura de datos desde un escáner

17.- Salida de gráficos en un plotter


Prof. Felipe Hernández Mora

PLANTILLA DE DIAGRAMACION
Para elaborar los diagramas de flujo se utiliza la plantilla de diagramación, que consiste
en una regla rectangular de material plástico en donde viene representados los símbolos
estandarizados.

USO DE PROGRAMAS PARA ELABORAR DIAGRAMAS DE FLUJO


En la actualidad el uso de la plantilla de diagramación ha quedado en segundo plano,
con la aparición de programas que permite elaborar diagramas de flujo a través del
computador. Los programas más conocidos son el FLOW en sus diferentes versiones, el
Cflow, y el utilitario Flow que viene en los Word de Msoffice.

REGLAS GENERALES PARA LA ELABORACIÓN DE DIAGRAMAS DE


FLUJO
Para el diseño adecuado de un algoritmo utilizando los diagramas de flujo se deben
observar las siguientes reglas:
1. Dibujar los diagramas de arriba hacia abajo y de derecha a izquierda.
2. Las líneas de flujo deben estar representadas por líneas rectas, horizontales o
verticales, el sentido viene dado por una flecha en un de sus extremos.
3. Utilizar adecuadamente los conectores dentro de una página o fuera de ella, cuando
el diagrama lo requiera.
4. Las líneas de flujo deben ir a conectarse siempre a un símbolo o a otra línea, no
deben existir líneas desconectadas.
Prof. Felipe Hernández Mora

5. Dos líneas de flujo no deben cruzarse, para evitar esto se recomienda utilizar
conectores o líneas arqueadas.

Diagramas de flujo
Es la solución de un problema utilizando un conjunto de figuras geométricas (rombos,
rectángulos, cuadrados, círculos, etc...) unidas y relacionadas por medio de segmentos
de recta, con flechas que determinan el orden lógico de un algoritmo, en donde la forma
de una figura geométrica indica la acción a seguir
Ejemplo:
Elaborar un diagrama de flujo para calcular la superficie de un triangulo, conociendo la
base y la altura.

INICIO

“INGRESE
BASE”

“INGRESE
ALTURA”

S (B*H)/2

FIN

EVALUACION # 8
1. Qué significa ANSI

2. Definición de diagrama de flujo


Prof. Felipe Hernández Mora

3. Grafique los siguientes símbolos: pantalla, teclado, proceso, decisión, proceso


establecido, transmisión de datos.

4. Qué son los diagramas de pasada

5. Escriba tres reglas para la elaboración de los diagramas de flujo

DISEÑO DE ALGORITMOS CON DIAGRAMAS DE FLUJO


El diagrama de flujo es uno de los métodos para diseñar algoritmos, independiente de
los lenguajes de programación, pero que brinda facilidades para su codificación.
De acuerdo al Teorema de Böhn y Jacopini para que la programación sea
estructurada, los programas deben cumplir las siguientes características:
1. Deben tener un solo punto de entrada y uno de salida.
2. Toda acción de algoritmo debe ser accesible, es decir al menos existe un camino
que va desde el inicio hasta el final del algoritmo que pasa por dicha acción.
3. No debe tener bucles o lazos infinitos.

Para cumplir con este objetivo los diagramas de flujo se diseñarán utilizando las
siguientes estructuras:
— Secuencial
— Selectiva simple
— Selectiva doble
— Selección múltiple
— Repetitivas
— Anidadas

ESTRUCTURA SECUENCIAL
Secuencia es la realización de un acto inmediatamente después de otro. Las
instrucciones dentro de un diagrama de flujo son ejecutadas en el orden en el cual se
encuentran escritos; los bloques se representarán mediante símbolos estandarizados y su
flujo se indica mediante una flecha.
Ejemplo
Cuáles son las acciones que realiza un estudiante para asistir al colegio.
Los pasos a seguir en su forma macro son:
1.- Iniciar las actividades.
2.- Se levanta.
3.- Se dirige al baño.
4.- Se asea.
5.- Se viste.
6.- Desayuna.
Prof. Felipe Hernández Mora

7.- sale de la casa.


8.- Se dirige al colegio.
9.- Fin de las actividades.

Gráficamente se representa de la siguiente manera

INICIO

LEVANTARSE

IR AL BAÑO

ASEARSE

VESTIRSE

DESAYUNAR

SALIR DE LA CASA

DIRIGIRSE AL COLEGIO

FIN

ENUNCIADOS DE ASIGNACIÓN
Los enunciados de asignación se utilizan para indicar una acción o proceso,
generalmente la asignación de un valor o un resultado de una operación a una variable.
El enunciado de asignación va siempre dentro de un bloque rectángulo de la siguiente
manera.

MONTO CAPITAL + INTERES

Las diferentes maneras como puede presentarse un enunciado de asignación son:


Prof. Felipe Hernández Mora

a) Asignar una constante a una variable: variable constante

b) Asignar una variable a una variable: variable variable

c) Asignar una expresión a una variable: variable expresión

En la parte izquierda de un enunciado de asignación, siempre va, y debe ir una


variable. El significado de la flecha hacia la izquierda (=, es el de asignación y opera de
la siguiente manera: el valor de la parte derecha que esta compuesto por una constante,
una variable o una expresión, se le asigna a la parte izquierda que debe ser una variable.
Ejemplo
Se trata de calcular el sueldo final de una persona conociendo que gana 100 dólares,
que la deuda es 25 y la retención es del 7%.

INICIAR

PAGO 100

DEUDA 25

PAGO NETO (PAGO-DEUDA)*0.07

SUELDO PAGO NETO

FIN

En un enunciado de asignación la parte de la izquierda nunca puede ser una constante


o una expresión, necesariamente tiene que ser una variable.
Por otro lado en una asignación, solamente la parte de la izquierda, es decir la
variable, cambia de valor; las variables de la parte derecha conservan sus valores,
después de ejecutarse el enunciado y se pueden utilizar más tarde en el diseño del
algoritmo.
Cuando la variable de la izquierda se encuentra también en la derecha formando parte
de una expresión, esta variable cambia de valor tanto en la izquierda como en la derecha
después de ejecutarse la asignación.
Ejemplo
Prof. Felipe Hernández Mora

INICIAR

PAGO 300

SUELDO 800

PAGO PAGO + SUELDO

FIN

PAGO tiene un valor inicial, antes de ejecutarse el enunciado de 300, al sumarle 800,
queda con un valor de 1100, después de ejecutarse en el enunciado. El valor de PAGO
tanto en la izquierda como en la derecha cambia de valor. En el transcurso del diseño
del algoritmo mientras no se vuelva a cambiar su valor mediante otro enunciado de
asignación el valor de PAGO sigue siendo 1100.

BLOQUE DE COMENTARIOS
Para escribir los comentarios en un diagrama de flujo, que consisten generalmente en
describir el objetivo del algoritmo y otras explicaciones adicionales se utiliza el
siguiente bloque.

TALLER # 9
EJERCICIOS
1.- Conocidos los valores de A igual a 5 y B a 8. Calcular la suma de A+B, almacenar
el resultado en SUMA. Diseñar el algoritmo y la codificación en Lenguaje Pascal.
Prof. Felipe Hernández Mora

INICIO

Prog. 001
Algoritmo Suma

A 5

B 8

SUMA A +B

FIN

2.- Conocidos los valores de PI igual a 3.141516 y el RADIO igual a 6. Calcular el área
del círculo con la fórmula ÁREA= PI*RADIO**2. Diseñar el algoritmo y la
codificación en Pascal.

INICIO

Prog. 002
Algoritmo Área

PI 3.141516

RADIO 6

AREA PI*RADIO**2

FIN

3.- Conocidos la BASE igual a 5 y la ALTURA igual a 12 de un triángulo. Calcular la


superficie mediante la fórmula S=BASE*ALTURA/2. Diseñar el algoritmo y la
codificación Pascal.
Prof. Felipe Hernández Mora

INICIO

Prog. 003
Algoritmo Superficie

BASE 5

ALTURA 12

S (BASE*ALTURA)//2

FIN

ENTRADA DE DATOS
Para introducir los datos al computador se utilizan los siguientes bloques, que
representan la pantalla y el teclado respectivamente.

El conjunto de estos dos bloques se conoce también como Terminal de computador.


El comentario con relación a los datos a introducirse se escribe en el bloque pantalla.
Las variables que se van a leer se colocan dentro del bloque del teclado.
Ejemplo
Introducir por teclado un valor a la variable PAGO

“DEME PAGO”

PAGO
Prof. Felipe Hernández Mora

Si en determinados casos se tiene que leer más de una variable, se separan las variables
por comas.
Ejemplos:
Introducir por teclado las variables X, Y y Z

“DEME X,Y,Z”

X,Y,Z

SALIDA DE DATOS
Para la salida de información procesada del computador, se utiliza el bloque de
impresión, cuyo símbolo se encuentra a continuación. El dispositivo utilizado
generalmente es la impresora.

Ejemplo
Imprimir el valor de la variable SUELDO.

SUELDO

En la mayoría de los casos se imprimen variables independientes, si son más de uno, se


separan por medio de comas.
Ejemplo
Imprimir las variables A, B y C.

A, B, C

Existen otros medios de salida de información tales como discos duros, plotters,
scanners e incluso la misma pantalla, en donde se puede desplegar el contenido de las
variables en un momento determinado.
Ejemplo
Prof. Felipe Hernández Mora

Desplegar en pantalla el valor de la variable SUMA.

SUMA

EJERCICIOS
1.- Introducir a través del teclado los lados de un rectángulo. Diseñar un algoritmo para
calcular el perímetro y el área.

Plan de solución
Datos de salida: Perímetro, Área
Datos de entrada: lado1, lado2
Datos adicionales: ninguno
Solución: Aplicar las siguientes fórmulas
Perímetro = lado1 x 2 + lado2 x 2
Área = lado1 x lado2
Una vez introducidos los datos correspondientes a los lados, aplicamos las fórmulas y se
imprimen los resultados.

INICIO

Prog. 004
Calculo Perimetro_area

“Ingrese datos”

Lado1, Lado2

Perímetro lado1*2 + lado2*2

Area lado1 * lado2

Perímetro, Area

FIN
Prof. Felipe Hernández Mora

2.- Se introduce a través del teclado las edades del padre, la madre y el hijo. Diseñar un
algoritmo para calcular el promedio de las edades y desplegar en pantalla.

Plan de solución
Datos de Salida: Promedio
Datos de Entrada: edad1, edad2, edad3
Datos Adicionales: Ninguno

Solución: Aplicar la fórmula


Promedio = (edad1 + edad2 + edad3)/3
Variables a utilizarse:
edad1: edad del padre
edad2: edad de la madre
edad3: edad del hijo
Prome: Promedio de las edades

INICIO

Prog. 005
Algoritmo Promedio

“Ingrese datos”

edad1, edad2,
edad3

Promedio (edad1+edad2+edad3)/3

Promedio

FIN

3.- Se introduce a través del teclado el sueldo básico y las 3 ventas realizadas en el mes
por un vendedor. Diseñar un algoritmo para calcular el sueldo total al fin del mes, si
la empresa reconoce un 10% de comisión sobre el total de ventas realizadas.

Plan de solución
Prof. Felipe Hernández Mora

Datos de Salida: sueldo total


Datos de Entrada: sueldo básico, venta1, venta2, venta3
Datos adicionales: 10%
Solución: aplicar las siguientes fórmulas

total ventas = (venta1 + venta2 + venta3)


comisión = total ventas * 0.1
sueldo total = sueldo básico + comisión
Variables a utilizar:
sb: sueldo básico
v1: venta 1
v2: venta 2
v3: venta 3
tv: total ventas
co: comisión
st: sueldo total

INICIO

Prog. 006
Algoritmo Sueldo-Total

“Ingrese datos”

sb, v1, v2, v3

tv v1 + v2 + v3

co tv * 0.1

st sb + co

st

FIN
Prof. Felipe Hernández Mora

4.- Un estudiante desea calcular su calificación final en la materia de Diseño de


Algoritmos. Las calificaciones se compone de los siguientes porcentajes:
50% del promedio de sus tres aportes
30% de la calificación del examen final
20% de la calificación de un trabajo final

PLAN DE SOLUCIÓN
Datos de Salida: calificación final
Datos de Entrada: 3 aportes, examen final, trabajo final
Datos adicionales: 50%, 30% y 20%

Solución: Fórmulas a aplicarse


Promedio = (Aporte1 + Aporte2 + Aporte3)/3
Calificación Final = Promedio * 0.5 + Examen final * 0.3 + Trabajo final * 0.2
Variables a utilizarse
ap1: Aporte 1 pro: Promedio
ap2: Aporte 2 ef: Examen Final
ap3: Aporte 3 tf: Trabajo Final
cf: Calificación Final
Prof. Felipe Hernández Mora

INICIO

Prog. 007
Algoritmo Calificación _ final

“Ingrese datos”

Ap1, ap2, ap3,


ef, tf

pro (ap1+ ap2 + ap3) / 3

cf pro*0.5 + ef*0.3 + tf*0.2

cf

FIN

5.- Se introduce a través del teclado dos números en las variables A y B, imprimir los
valores originales. diseñar un algoritmo para intercambiar los valores de A y B e
imprimir el contenido final de las variables.
Prof. Felipe Hernández Mora

INICIO

Prog. 008
Algoritmo Intercambio

“Ingrese A”

“Ingrese B”

AUX A

A B

B AUX

A, B

FIN

ESTRUCTURAS SELECTIVAS
En el desarrollo de un algoritmo la mayoría de las veces nos vemos abocados a
situaciones de excepción, agrupación o comparación.
Para que el algoritmo sea flexible y general, se debe tener en cuenta todas las
posibilidades o alternativas que se puedan presentar en un momento dado en la solución
de un problema. De esta manera nace la necesidad de hacer comparaciones y tomar
decisiones.
Prof. Felipe Hernández Mora

El bloque selectivo utilizado en los diagramas de flujo es el rombo.

ESTRUCTURA SELECTIVA SIMPLE

Si
condición

acción

En esta estructura se evalúa primero la condición, si el resultado es verdadero se ejecuta


la acción.
Ejemplos
En un supermercado se hace un descuento del 10% cuando el total de compras es
mayor a 200. Diseñar un algoritmo para calcular el valor a pagar.
Prof. Felipe Hernández Mora

INICIO

Prog. 009
Calculo total a pagar

“Ingrese
datos”

COMPRAS

VALOR COMPRAS

F
COMPRAS
>200.000

V
VALOR VALOR – (COMPRAS*0.1)

VALOR

FIN
Prof. Felipe Hernández Mora

ESTRUCTURA SELECTIVA DOBLE

F
SI
CONDICION
V

ACCION1

ACCION2

ACCION3

De acuerdo al gráfico anterior la estructura selectiva doble funciona de la siguiente


manera:
1.- Se evalúa la condición
2.- Si la condición es verdadera se ejecutará la ACCION1 y el control pasará
inmediatamente a la ACCION3.
3.- Si la condición es falsa se ejecutará la ACCION2 y el control pasará
inmediatamente a la ACCION3.

Ejemplo
Se introduce a través del teclado un número entero en la variable N. Diseñar un
algoritmo para averiguar si el número es positivo o negativo e imprimir el mensaje
respectivo.
Prof. Felipe Hernández Mora

INICIO

Prog. 010
Numero positivo_negativo

“Ingrese N”

F
N>0
V
“Numero es
positivo”

“Numero es
negativo”

FIN

1.- Se introduce por teclado un número entero en la variable N. Averiguar si el número


es par o impar e imprimir el mensaje. Diseñar el algoritmo respectivo.
Prof. Felipe Hernández Mora

INICIO

Prog. 011
Algoritmo Par _ impar

“DEME
N”

C N/2

R N-C*2

F
R=0
V
“Numero es
PAR”

“Numero es
IMPAR”

FIN

2.- Se introduce por el teclado tres valores enteros en la variable A B.C. Calcular el
mayor valor, almacenar en la variable MAYOR e imprimir. Diseñar el algoritmo y
codificar en Pascal.
Prof. Felipe Hernández Mora

INICIO

Prog. 012
Algoritmo mayor 3 números

“DEME
A, B, C”

A, B, C

F
A>B
V
MAYOR A

MAYOR B

C >MAYOR

MAYOR C

MAYOR

FIN

3.- Se introduce a través del teclado 3 números entero en las variables A, B, C


comprendidos entre 0 y 9. Se trata de conformar un número en la variable X
compuestos por los dígitos almacenados en A, B y C. Por ejemplo si en las
variables A, B y C están los dígitos 8,5,3, en la variable X debe quedar el número
entero 853. Diseñar el algoritmo.
Prof. Felipe Hernández Mora

INICIO

Prog. 013
Algoritmo 3 dígitos

“DEME
A, B, C”

A, B, C

SUMA A+B+C

F
SUMA
<=27

X A * 100 + B * 10 + C * 1

“Datos
incorrectos”

FIN

4.- Se introduce a través del teclado la fecha actual y la fecha de nacimiento de una
persona dados en día, mes y años. Calcular la edad actual de la persona en años,
meses y días e imprimir. Diseñar el algoritmo.
Prof. Felipe Hernández Mora

INICIO 1

Prog. 014 M1 M1+12


Algoritmo Intercambio

M M1-M2
“Fecha actual”
2

D1, M1, A1 A A1-A2

D, M, A
“Fecha de
nacimiento”

FIN
D2, M2, A2

F
D1>=D2
V
D D1-D2

M1 M1-1

D1 D1+30

D D1-D2

F
M1>=M2

V
M M1-M2

A1 A1-1

1
Prof. Felipe Hernández Mora

5.- Se introduce a través del teclado, el código y las ventas de un mes de los
vendedores de la compañía ABC. Se trata de calcular la comisión de acuerdo a las
siguientes condiciones:
- Venta menor de 100.000, comisión 5%
- Venta entre 100.000 y 200.000, comisión 10%
- Venta mayor a 200.000, comisión 20%
Imprimir el código y la comisión a pagar a cada vendedor. Finalizar el proceso cuando
en la variable código se introduce 999. Diseñar el algoritmo.
Prof. Felipe Hernández Mora

INICIO

Prog. 015
Algoritmo comisión-ventas

“DEME CODIGO
VENTA”

CODIGO,
VENTA

F
CODIGO
<>999
V
F
VENTA<
100000

V
COMISION VENTAS*0.5
M1-1

VENTA<
=200000

V
COMISION VENTAS*0.1

M1-1

COMISION VENTAS*0.2

M1-1

CODIGO, COMISION

FIN
Prof. Felipe Hernández Mora

6.- Se introduce a través del teclado, el código y el total de ventas de un mes de los
vendedores de la compañía QUFATEX. Se trata de calcular la comisión de acuerdo
a las siguientes condiciones:
- Total ventas menor a 10.000 ; comisión 5%
- Total de ventas entre 10.000 y menor a 20.000; comisión del 10%.
- Total de ventas entre 20.000 y menor a 30.000; comisión 15%.
- Total de ventas entre 30.000 y 40.000 ; comisión 20%
- Total ventas mayor a 40.000; comisión 25%.
Imprimir el código, la comisión por vendedor. Diseñar el algoritmo.
Prof. Felipe Hernández Mora

INICIO

Prog. 016
Algoritmo comisión-ventas

“DEME CODIGO.
TV”

CODIGO,
TV

F
TV<
10000
V
COMISION TV * 0.05
M1-1

F
TV<
20000
V
COMISION TV * 0.1
M1-1

F
TV<
30000
V
COMISION TV * 0.15
M1-1

F
TV<
40000
V
COMISION TV * 0.2
M1-1

COMISION TV * 0.25
M1-1

CODIGO, COMISION

FIN
Prof. Felipe Hernández Mora

ESTRUCTURA DE SELECCIÓN MULTIPLE


La estructura de selección múltiple se utiliza para elegir entre más de dos alternativas.
Esta estructura se encuentra compuesto de varias estructuras simples. Se ejecuta una y
solo una de las acciones dependiendo del resultado que se obtenga al evaluar la
expresión. El resultado de la evolución de la expresión debe ser de tipo ordinal.
Modelo A

Expresión

ACCION 1 ACCION 2 ACCION 3 ACCION n

Modelo B

Expresión

ACCION 1 ACCION 2 ACCION 3 ACCION n

ACCION X

Reglas del funcionamiento


1.- Se evalúa primero la expresión y se compara con las listas de constantes; son
listas de uno o mas posibles si el valor de la expresión esta en la lista de las
constantes de la ACCION1, se ejecuta la ACCION1 y seguidamente pasa el control
al primer bloque a continuación de la finalización de la estructura.
2.- El bloque caso-contrario es opcional, como se puede observar en Modelo A.
Prof. Felipe Hernández Mora

3.- Si el valor de la expresión no coincide con alguna constante se ejecutan los


bloques de la alternativa caso-contrario, es decir la ACCION X
Ejemplo1
Se introduce a través del teclado números enteros entre 1 y 7. Diseñar un algoritmo
par para imprimir los días de la semana siendo lunes=1 hasta domingo=7

INICIO

Prog. 017
Programa Díaz – semana

“Ingrese D”

LUNES MARTES ……….. SABADO DOMINGO

FIN

Ejemplo 2
Se Introduce a través del teclado la nota final de una materia en el rango de 1 a 20.
Diseñar un algoritmo para ubicar la nota de acuerdo a la siguiente tabla Si la nota no se
encuentra en el rango imprimir error.
Nota: 19,20: sobresaliente
NOTA: 16, 17,18: MUY BUENA
NOTA15, 14: BUENA
NOTA: 13,12: REGULAR
NOTA>= 11: INSUFICENTE
Prof. Felipe Hernández Mora

INICIO

Prog. 018
Programa Calificaciones

“Ingrese Nota”

NOTA

NOTA

Sobresaliente Muy buena Buena Regular Insuficiente

ERROR

FIN

ESTRUCTURAS REPETITIVAS
En la elaboración de los diagramas de flujo anteriores, hemos venido trabajando con
algoritmos que el computador solamente puede repetir una vez, si ustedes observan
cualquiera de los algoritmos que hemos desarrollado se darán cuenta que el computador
inicia el algoritmo, sigue bloque por bloque y termina el algoritmo.
Cada bloque la ejecuta una sola vez y por lo tanto el algoritmo.
Cada bloque la ejecuta una sola vez y por lo tanto el algoritmo en su totalidad se lo
ejecuta una única vez
A continuación estudiaremos un bloque muy poderoso que permiten que el computador
ejecute un bloque o un grupo de bloques varias veces. Estos bloques nos permitirán
elaborar algoritmos más sofisticados y por lo tanto más útiles y más aplicables a
situaciones reales y concretas.

R, nos permite ejecutar un bloque o un grupo de bloques un número determinado de


veces. Este grupo de bloques se repite mientras que una expresión booleana tenga el
Prof. Felipe Hernández Mora

valor de falso, Es decir, cuando una, expresión booleana tome el valor lógico
verdadero, el bloque o el grupo de bloques pertenecientes a la estructura repetir, se
dejará de ejecutar, gráficamente se representa así:

INSTRUCCION

INSTRUCCIONES

L
(EXPRESION
BOOLEANA)

En donde L indica hasta que bloque se debe repetir L debe ser una constante del orden
de las decenas, empezando por 10, 20, 30, etc. El bloque o el grupo de la estructura
repetir, al menos se ejecuta una vez, ya que la evaluación de la expresión lógica se
encuentra al final del cuerpo del bucle
EJEMPLO

INICIO

I 0

10

I I+1

F 10
(I>5)

V
En el ejemplo anterior se inicializa la variable I en cero, a continuación se encuentra la
estructura repetir. Esta estructura esta formada por el bloque círculo que indica el
inicio del proceso repetitivo y el bloque que Ahora veamos a través de una prueba de
escritorio cuantas veces e repite el grupo de bloques.
Prof. Felipe Hernández Mora

I IMPRIMIR
0 0
1 1
2 2
3 3 Como se puede observar el grupo de bloques
4 4 se repite 6 veces.
5 5
6

ESTRUCTURA mientras
La estructura mientras, nos permite ejecutar un bloque o un grupo de bloques un
número determinado de vedes, Este grupo de bloques se repite mientras que una
expresión booleana tenga el valor de verdadero. Es decir, cuando una expresión
booleana tome el valor lógico falso el bloque o el grupo de bloques pertenecientes al
boque mientras, se dejará de ejecutar. Gráficamente se representa así:

INSTRUCCION

L
(EXPRESION
BOOLEANA)

IMPRIMIR

INSTRUCCION

En donde L indica hasta que bloque se debe repetir, delimitando de esta manera el rango
del proceso mientras, L debe ser una constante del orden de las decenas, empezando
por 10, 20, 30, etc.
EJEMPLO 1
Prof. Felipe Hernández Mora

INICIO

I 0

10
( I <= 5 )

I I+1

10

TALLERES DESDE 9 AL 15 DE DIAGRAMACION

1. Elabore el pseudocódigo y diagrama de flujo que ingrese 2 numeros, calcule y


presente la suma

2. Elabore el pseudocódigo y diagrama de flujo que ingrese el nombre y las notas


trimestrales, calcule y presente la suma y promedio.

3. Elabore el pseudocódigo y diagrama de flujo que ingrese los catetos de un triangulo


rectángulo, calcular la hipotenusa utilizando el teorema de Pitágoras.

4. Elabore el pseudocódigo y diagrama de flujo que ingrese el salario de un empleado,


calcular su aporte al IESS, presentar el nuevo salario.

5. Elabore el pseudocódigo y diagrama de flujo que ingrese el sueldo y las 3 ventas


realizadas en el mes por un vendedor, calcular el sueldo total a fin de mes, si la empresa
reconoce el 10% sobre el total de las ventas realizadas.

6. Elabore el pseudocódigo y diagrama de flujo de una tienda que ofrece un descuento


del 15% sobre el total de la compra y un cliente desea saber cuanto deberá pagar
finalmente por su compra.

7. Elabore el pseudocódigo y diagrama de flujo, calcule la edad de una persona.

8. Elabore el pseudocódigo y diagrama de flujo, suponga que un individuo desea


invertir su capital en un banco y desea saber cuanto dinero ganara después de un mes si
el banco paga a razón del 2% mensual.

9. Calcular el número de pulsaciones que una persona debe tener por cada 10 segundos
de ejercicio, si la formula es:
Prof. Felipe Hernández Mora

[Link]= (220-edad)/10

10. Calcular el nuevo salario de un obrero si obtuvo un incremento del 25% sobre su
salario anterior.

11. En un hospital existen tres áreas: Ginecología, Pediatría y Traumatología. El


presupuesto anual del hospital se reparte conforme a la sig. Tabla
Área porcentaje del prosupuesto

Ginecología 40%
Traumatología 30%
Pediatría 30%
Obtener la cantidad de dinero que recibirá cada área, para cualquier monto presupuestal.

12. El dueño de una tienda compra un articulo a un precio determinado. Obtener el


precio una ganancia del 30%.

13. Todos los lunes, miércoles y viernes, una persona corre la misma ruta y cronometra
los tiempos obtenidos. Determinar el tiempo promedio que la persona tarda en recorrer
la ruta en una semana cualquiera.

14. Tres personas deciden invertir su dinero para fundar una empresa. Cada una de ellas
invierte una cantidad distinta. Obtener el porcentaje que cada quien invierte con
respecto a la cantidad total invertida.

15. Un alumno desea saber cual será su calificación final en la materia de algoritmos.
Dicha calificación se compone de los siguientes porcentajes:
55% del pro medio de sus tres calificaciones parciales.
30% de la calificación del examen final.
15% de la calificación de un trabajo final.

16. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de estudiantes.

17. Un alumno desea saber cual será su promedio general en las tres materias más
difíciles que cursa y cual será el promedio que obtendrá en cada una de ellas. Estas
materias se evalúan como se muestra a continuación:
La calificación de matemáticas se obtiene de la sigt. manera:
Examen 90%
Promedio de tareas 10%
En esta materia se pidió un total de tres tareas.

La calificación de física se obtiene de la sigt. manera:


Examen 80%
Promedio de tareas 20%
En esta materia se pidió un total de dos tareas.

La calificación de Química se obtiene de la sigt. manera:


Examen 85%
Prof. Felipe Hernández Mora

Promedio de tareas 15%


En esta materia se pidió un total de tres tareas.

18. Calcular el total que una persona debe pagar en una llantera, si el precio de cada
llanta es de $800 si se compran menos de 5 llantas y de $700 si se compran 5 o mas.

19. En un supermercado se hace una promoción, mediante el cual el cliente obtiene un


descuento dependiendo de un número que escoge al azar. Si el numero escogido es
menor que 74 el descuento es del 15% sobre el total de la compra, si es mayor o igual a
74 el descuento es del 20%. Obtener cuanto dinero se le descuenta.

20. Calcular el número de pulsaciones que debe tener una persona por cada 10 segundos
de ejercicio aeróbico; la formula que se le aplica cuando el sexo es femenino es:
[Link]= (220-edad)/10
Y si el sexo es masculino:
[Link]= (210-edad)/10

21. Una compañía de seguros esta abriendo un departamento de finanzas y estableció un


programa para captar clientes, que consiste en los siguiente: Si el monto por el que se
efectúa la finanza es menor que $50000 la cuota a pagar será por el 3% del monto, y si
el monto es mayor que $50000 la cuota a pagar será el 2% del monto. La afianzadora
desea determinar cual será la cuota que debe pagar un cliente.

22. En una escuela la colegiatura de los alumnos se determina según el número de


materias que cursan.
El costo de todas las materias es el mismo.
Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo sigt:
si el numero promedio obtenido por un alumno en el ultimo periodo es mayor o igual
que 9, se le hará un descuento del 30% sobre la colegiatura y no se cobrara IVA; si el
promedio obtenido es menor que 9 deberá pagar la colegiatura completa, la cual incluye
el 10% del IVA.
Obtener cuanto debe pagar un alumno.

23. Una empresa de bienes raíces ofrece casas de interés social. Bajo las siguientes
condiciones: si los ingresos del comprador son menores de $8000 o mas el enganche
será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en
diez años. Si los ingresos del comprador son $8000 o mas el enganche será del 30% del
costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años.
La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y
cuanto por cada pago parcial.

24. Una persona desea iniciar un negocio, para lo cual piensa verificar cuanto dinero le
prestara al banco para hipotecar su casa. Tiene una cuenta bancaria, peor no quiere
disponer de ella a menos que el monto por hipotecar su casa sea muy pequeño. Si el
monto de la hipoteca es menor que $ 1 000 000 entonces invertirá el 50% de la
inversión total y un socio invertirá el otro 50%. Si el monto de la hipoteca es de $1 000
000 o mas, entonces invertirá el monto total de la hipoteca y el resto del dinero que se
necesite para cubrir la inversión total se repartirá en partes iguales entre el socio y él.
Prof. Felipe Hernández Mora

25. El gobierno de un país desea reforestar un bosque que mide determinado número de
hectáreas. Si la superficie del terreno excede a 1 millón de metros cuadrados, entonces
decidirá sembrar de la sig. manera:
Porcentaje de superficie del bosque Tipo de árbol
70% pino
20% oyamel
10% cedro
Si la superficie del terreno es menor o igual a 1 millón de metros cuadrado, entonces
decidirá sembrar de la sig. manera:
Porcentaje de superficie del bosque Tipo de árbol
50% pino
30% oyamel
20% cedro

El gobierno desea saber el número de pinos, oyameles y cedros que tendrá que sembrar
en el bosque, si se sabe que en diez metros cuadrados cabe 8 pinos, en 15 metros
cuadrados caben 15 oyameles y en 18 metros cuadrados caben 10 cedros. También se
sabe que unja hectárea equivale a 10 mil metros cuadrados.

26. Una fábrica ha sido sometida a un programa de control de contaminación para lo


cual se efectúa una revisión de los puntos IMECA generados por la fábrica. El programa
de control de contaminación consiste en medir los puntos IMECA que emita la fábrica
en cinco días de una semana y si el promedio es superior a los 170 puntos entonces
tendrá la sanción de parar su producción por una semana y una multa del 50% de las
ganancias diarias cuando no se detiene la producción. Si el promedio obtenido de
puntos IMECA es de 170 o menor entonces no tendrá ni sanción ni multa. El dueño de
la fábrica desea saber cuanto dinero perderá después de ser sometido a la revisión.

27. En una fábrica de computadoras se planea ofrecer a los clientes un descuento que
dependerá del número de computadoras que compre. Si las computadoras son menos de
cinco se les dará un 10% de descuento sobre el total de la compra; si el número de
computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de
descuento; y si son diez o mas se les da un 40% de descuento. El precio de cada
computadora es de $1,000.

28. En una llantera se ha establecido una promoción de las llantas marca “General”,
dicha promoción consiste en lo sig:
Si se compran menos de 5 llantas el precio es de $300 cada una, de $250 si se compran
de cinco a diez y de $200 si se compran mas de 10.
Obtener la cantidad de dinero que una persona tiene que pagar por cada una de las
llantas que compra y la que tiene que pagar por el total de la compra.

29. En un juego de preguntas a la que se responde “Si” o “No” gana quien responda
correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se
pregunta la sig. Y termina el juego.
Las preguntas son:
1. ¿Colon descubrió América?
2. ¿La independencia de México fue en el año 1810?
3. ¿The Doors fue un grupo de rock americano?
Prof. Felipe Hernández Mora

30. Un proveedor de etéreos ofrece un descuento del 10% sobre el precio sin IVA, de
algún aparato si este cuesta $2000 o más. Además, independientemente de esto, ofrece
un 5% de descuento si la marca es Sony. Determinar cuanto pagara, con IVA incluido,
un cliente cualquiera por la compra de su aparato.

31. el dueño de una empresa desea planificar las decisiones financieras que tomara en el
siguiente año. La manera de planificarlas depende de lo siguiente;

Si actualmente su capital con saldo negativo, pedirá un préstamo bancario para que su
nuevo saldo sea de $10000. Si su capital tiene actualmente un saldo positivo pedirá un
préstamo bancario para tener un nuevo saldo de $20000, pero si su capital tiene
actualmente un saldo superior a los $20000 no pedirá ningún préstamo, posteriormente
repartirá su presupuesto de la siguiente manera.
$5000 para su equipo de cómputo, $2000 para mobiliario y el resto la mitad será para la
compra de insumos y la otra para otorgar incentivos del personal.
Desplegar que cantidades se destinaran para la compra de insumos e incentivos al
personal y, en caso de que fuera necesario, a cuanto ascenderá la cantidad que se pediría
al banco.

32. Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos,
un medico determina si una persona tiene anemia o no, lo cual depende de su nivel de
hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene
una persona es menor que el rango que le corresponde, se determina su resultado como
positivo y en caso contrario como negativo. La tabla en la que el medico se basa para
obtener los resultados es la sig:
Edad Nivel Hemoglobina
0-1 Meses 13-26g%
>1y<=6meses 10-18g%
>6y<=12meses 11-15g%
>1y<=5años 11.5-15g%
>5y<=10años 12.6-15.5g%
>10y<=15años 13-15.5g%
Mujeres >15 años 12-16g%
Hombres>15 años 14-18g%

33. Una institución educativa estableció un programa para estimular a los alumnos con
buen rendimiento académico y que consiste en lo siguiente:
Si el promedio es de 19 o mas y el alumno es de preparatoria, entonces podrá este
cursar 55 unidades y se le hará un 25% de descuento.
Si el promedio es mayor o igual a 9 pero menor que 9.5 y el alumno es de
preparatoria, entonces este deberá cursar 50 unidades y se le hará un descuento del 10%

Si el promedio es mayor que 7 y menor que 9 y el alumno es de preparatoria, este


podrá cursar 50 unidades y no tendrá ningún descuento.

Si el promedio es de 7 o menor, el numero de materias reprobadas es de 0 a 3 y el


alumno es de preparatoria, entonces podrá cursar 45 unidades y no tendra descuento.
Prof. Felipe Hernández Mora

Si el promedio es de 7 o menor, el número de materias reprobadas es de 4 o mas y el


alumno es de preparatoria, entonces podra cursar 40 unidades y no tendra ningún
descuento.
Si el promedio es mayor o igual a 9.5 y el alumno es de profesional, entonces podra
cursar 55 unidades y se le hará un descuento de 20%.
Si el promedio es menor que 9.5 y el alumno es de profesional, entonces podra
cursar 55 unidades y no tendra descuento.

Obtener el total que tendra que pagar un alumno si la colegiatura para alumnos de
profesional es de $300 por cada cinco unidades y para alumnos de preparatoria es de
$180 por cada cinco unidades.

33. En una tienda de descuento se efectúa una promoción en la cual se hace un


descuento sobre el valor de la compra total según el color de la bolita que el cliente
saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si
es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si
es roja un 100%.
Determinar la cantidad final que el cliente deberá pagar por su compra. Se sabe que solo
hay bolitas de los colores mencionados.

34. Que lea tres numero diferentes y determine el numero medio del conjunto de los tres
números (el numero medio es aquel numero que no es ni mayor, ni menor).

35. Calcular el promedio de un alumno que tiene 7 calificaciones en la materia de


diseño estructurado de algoritmos.

36. Leer 10 números y obtener su cubo y su cuarta potencia.

37. Leer 10 números e imprimir solamente los números positivos.

38. Leer 20 números e imprimir cuantos son positivos, cuantos negativos y cuantos
neutros.

39. Leer 15 números negativos y convertirlos a positivos e imprimir dichos números.

40. Suponga que se tiene un conjunto de calificaciones de un grupo de 40 alumnos.


Realizar un algoritmo para calcular la calificación mas baja de todo el grupo.

41. Una persona debe realizar un muestreo con 50 personas para determinar el promedio
de peso de los niños, jóvenes, adultos y viejos que existen en una zona habitacional. Se
determina las categorías con base en la siguiente tabla:
CATEGORIA EDAD
Niños 0-12
Jóvenes 13-29
Adultos 30-59
Viejos 60 en adelante
Prof. Felipe Hernández Mora

42. Al cerrar un expendio de naranjas, 15 clientes que aun no han pagado recibirán un
15% de descuento si compran más de 10 kilos. Determinar cuanto pagara cada cliente y
cuanto percibirá la tienda por esa compra.

43. Un entrenador le ha propuesto a un atleta recorrer una ruta de 5km durante 10 días,
para determinar si es acto para la prueba de 5km o debe buscar otra especialidad. Para
considerarlo apto debe cumplir por lo menos una de las sig. condiciones:
- Que en ninguna de las pruebas haga un tiempo mayor a 16 minutos.
- Que al menos en una de las pruebas realice un tiempo mayor a 16 minutos.
- Que su promedio de tiempos sea menor o igual a 15 minutos.
44. Diseñe un diagrama que lea los 2500000 votos otorgados a los tres candidatos a
gobernador e imprima el número del candidato ganador y su cantidad de votos.

45. Suponga que tiene usted una tienda y desea registrar las ventas en una computadora.
Diseñe un pseudocodigo que lea por cada cliente, el monto total de su compra. Al final
del día escriba la cantidad total de las ventas y el número de clientes atendidos.

46. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen
derecho al examen de nivelación.
Diseñe un algoritmo que lea las calificaciones obtenidas en las 5 unidades por cada uno
de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de
nivelación.

47. Dados los numeros enteros determine la suma y cual de ellos es mayor, usando dos
funciones diferentes.

48. Dado un numero entero y mayor que 0. Determine si es o no un numero primo.


Recuerde:
Los numeros primos solo son divisibles para si mismos y la unidad (1).

49. Utilizando los principios de función de procedimiento desarrolle un programa, para


determinar si la suma de 10 numeros positivos ingresados por teclado es par o impar.

50. Un maestro desea saber que porcentaje de hombres y que porcentaje de mujeres hay
en un grupo de estudiantes.

51. En un supermercado una ama de casa pone en su carrito los artículos que va
tomando de los estantes.
La señora quiere asegurarse de que el cajero le cobre bien lo que ella ha comprado, por
lo que cada vez que toma un articulo anota su precio junto con la cantidad de artículos
iguales que ha tomado y determina cuanto dinero gastara en ese articulo; a esto le suma
lo que irá gastando en los demás artículos, hasta que decide que ya tomo lo que
necesitaba. Ayúdale a esta señora a obtener el total de sus compras.

52. Obtener el subtotal, el neto y el total a pagar de una canasta de compras, utilizando
el código de los productos, precio unitario, el IVA.

53. Obtener el promedio general de un estudiante cuyas notas son de promedio regular
que se va a retirar apenas termine el año lectivo y desea de urgencia sus promedios.
Prof. Felipe Hernández Mora

Calcular el primer parcial, el segundo parcial, el tercer parcial hasta obtener lo que se
pide.
Considerar la conducta.

54. Un negocio de copias tiene un límite de producción diaria de 10000 copias si el tipo
de impresión es offset y de 50000 si el tipo es estándar. Si hay una solicitud de un
empleado que tiene que verificar que las copias pendientes hasta el momento y las
copias solicitadas no excedan del límite de producción. Si el límite de producción se
excediera el trabajo solicitado no podría ser aceptado. El empleado necesita llevar un
control de las copias solicitadas al momento para decidir en forma rápida si los trabajos
que se soliciten en el día se deben aceptar o no.

55. Una pizzería, vende sus pizzas en tres tamaños:


Pequeña (10pulg. De diámetro); mediana (12pulg. De diámetro); y grandes (16pulg. De
diámetro);
Una pizza puede ser sencilla (con solo salsa y carne), o con ingredientes extras, tales
como pepinillos, champiñones o cebollas
Los propietarios desean desarrollar un programa que calcule el precio de venta de una
pizza, dándole el tamaño y el número de ingredientes extras. El precio de venta será 1.5
veces el costo total, que viene determinado por el área de la pizza, mas el número de
ingredientes.
En particular el costo total se calcula sumando:
-un costo fijo de preparación
- un costo base variable que es proporcional al tamaño de la pizza
- un costo adicional por cada ingrediente extra. Por simplicidad se supone que cada
ingrediente extra tiene el mismo costo por unidad de área.

56. calcule e imprima el pago de 102 trabajadores que laboran en la Cía. GACMAN.
Los datos que se leerán serán los siguientes:
a) Las horas trabajadas
b) El sueldo por hora
c) El tipo de trabajador (1,-obrero, 2,-empleado)
Para calcular los pagos considerar lo siguiente:
-los obreros pagan 10% de impuesto
-los empleados pagan 10% de impuesto
-los trabajadores (obreros y empleados) que reciban un pago menor de $100
no pagan impuesto.

57. Ingrese por teclado cinco numeros naturales y presentar por pantalla cual es el
mayor, menor, y el número medio.

58. Ingrese por teclado la edad de una persona, si esta es un niño presentara un mensaje
por pantalla que diga “pequeño”, si es un adolescente presentará un mensaje por
pantalla que diga “joven” y si es un adulto presentara el mensaje que diga “persona
madura”.

59. Presente por pantalla un mensaje según los promedios de los alumnos de 4to curso
especialización informatica y deducir lo siguiente:
Si tiene 19 presente un mensaje que diga, “PARTICIPARA EN UN CONCURSO A
NIVEL INTERNACIONAL”
Prof. Felipe Hernández Mora

Si tiene 18 presente un mensaje que diga,


“PARTICIPARA EN UN CONCURSO A NIVEL NACIONAL”
Si tiene 17 presente un mensaje que diga,
“PARTICIPARA EN UN CONCURSO A NIVEL COLEGIAL”
Si tiene 16 presente un mensaje que diga,
“PONGASE LAS PILAS, USTED PUEDE”

60. Ingrese por teclado 10 numeros y preséntelos por pantalla en forma vertical,
horizontal, y de escalera.
Prof. Felipe Hernández Mora

Historia del Lenguaje C


Introducción
Ahora vamos a conocer los elementos principales de la programación en lenguaje C. Se
cubre gran parte de las características del lenguaje, así como algunas funciones de las
bibliotecas estándares.

1.1 Marco histórico


Creado entre 1970 y 1972 por Brian Kernighan y Dennis Ritchie para escribir el código
del sistema operativo UNIX.
Desde su nacimiento se fue implantando como el lenguaje de programación de sistemas
favorito para muchos programadores, sobre todo por ser un lenguaje que conjugaba la
abstracción de los lenguajes de alto nivel con la eficiencia del lenguaje máquina. Los
programadores de sistemas que trabajaban sobre MS-DOS y Macintosh también
utilizaban C, con lo cual la práctica totalidad de aplicaciones de sistema para
microordenadores y para sistemas UNIX está escrita en este lenguaje.
A mediados de los ochenta el C se convierte en un estándar internacional ISO. Este
estándar incluye tanto la definición del lenguaje como una enorme biblioteca de
funciones para entrada/salida, tratamiento de textos, matemáticas, etc.
A mediados de los ochenta se crea el C++, extensión de C orientada a objetos. El C++
se convierte en estándar ISO en 1998. En el momento actual, el lenguaje C no va a
modificarse más. Será el C++ el que incorporará nuevos cambios.
C es un lenguaje de programación de propósito general. Sus principales características
son:
 Programación estructurada
 Economía de las expresiones
 Abundancia en operadores y tipos de datos.
 Codificación en alto y bajo nivel simultáneamente.
 Reemplaza ventajosamente la programación en ensamblador (assembler).
 Utilización natural de las funciones primitivas del sistema.
 No está orientado a ningún área en especial.
 Producción de código objeto altamente optimizado.
 Facilidad de aprendizaje (;-)).
El lenguajes C nació en los Laboratorios Bell de AT&T y ha sido estrechamente
asociado con el Sistema Operativo UNIX, ya que su desarrollo se realizó en este sistema
y debido a que tanto UNIX como el propio compilador de C y la casi totalidad de los
programas y herramientas de UNIX, fueron escritos en C. Su eficacia y claridad han
hecho que el lenguaje asembler apenas haya sido utilizado en UNIX.
Este lenguajes está inspirado en el lenguaje B escrito por Ken Thompson en 1970 con
intención de recodificar el UNIX, que en la fase de arranque esta escrito en asembler, en
vistas a su transportabilidad a otras máquinas. B era un lenguaje evolucionado e
independiente de la máquina, inspirado en la lenguajes BCPL concedido por Martin
Richard en 1967.
En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el lenguaje C
y reescribiendo el UNIX en dicho lenguaje. La novedad que proporcionó el lenguaje C
sobre el B fue el diseño de tipos y estructuras de datos.
Prof. Felipe Hernández Mora

Una de las peculiaridades de C es su riqueza de operadores, Puede decirse que


prácticamente dispone de un operador para cada una de las posibles operaciones en
código máquina.
Finalmente, C, que ha sido pensado para ser altamente transportable y para programar lo
improgramable, igual que otros lenguajes tiene sus inconvenientes:
 Carece de instrucciones de entrada/salida, de instrucciones para manejo de
cadenas de caracteres, con lo que este trabajo queda para la biblioteca de rutinas,
con la consiguiente pérdida de transportabilidad
 La excesiva libertad en la escritura de los programas puede llevar a errores en la
programción que, por ser correctos sintácticamente no se detectan a simple vista
 Por otra parte las precedencias de los operadores convierten a veces las
expresiones en pequeños rompecabezas.
A pesar de todo, C ha demostrado ser un lenguaje extremadamente eficaz y expresivo.

El lenguaje de programación C fue ideado e implementado por Dennis Ritchie en 1972


en un DEC PDP-111.1 usando UNIX como sistema operativo. Inicialmente, el estándar
de C fue realmente la versión proporcionada por la implementación de la versión V del
sistema operativo UNIX. Su rápida expansión lleva a la aparición de varias variantes y
problemas de compatibilidad, por lo que en verano del 1983 se estableció un comité
para crear el estándar ANSI1.2 para C. En 1989 se adoptó finalmente el estándar y poco
después aparecieron los primeros compiladores conformes a este estándar. En 1995 se
adoptó la 1ª enmienda con algunos cambios de la biblioteca de funciones, y fue la base
para desarrollar C++. Finalmente, en 1999 se adoptó el estándar C99 con algunas
mejoras e ideas prestadas de C++. Actualmente cohexisten las dos versiones, mientras
los programas migran a C99.
 C es un lenguaje estructurado de nivel medio, ni de bajo nivel como
ensamblador, ni de alto nivel como Ada o Haskell. Esto permite una mayor
flexibilidad y potencia, a cambio de menor abstracción.
 No se trata de un lenguaje fuertemente tipado, lo que significa que se permite casi
cualquier conversión de tipos. No es necesario que los tipos sean exactamente
iguales para poder hacer conversiones, basta con que sean parecidos.
 No lleva a cabo comprobación de errores en tiempo de ejecución, por ejemplo no
se comprueba que no se sobrepasen los límites de los arrays1.3. El programador
es el único responsable de llevar a cabo esas comprobaciones.
 Tiene un reducido numero de palabras clave, unas 32 en C89 y 37 en C99.
 C dispone de una biblioteca estándar que contiene numerosas funciones y que
siempre está disponible, además de las extensiones que proporcione cada
compilador o entorno de desarrollo.
En resumen, es un lenguaje muy flexible, muy potente, muy popular, pero que no
protege al programador de sus errores.
Estructura de un programa simple en C

1.2 Características
 Orientado a la programación de sistemas
 Es altamente transportable
 Es muy flexible
Prof. Felipe Hernández Mora

 Genera código muy eficiente


 Es muy expresivo (se pueden realizar muchas funciones escribiendo pocas líneas
de código)
 Es muy poco modular
 Hace pocas comprobaciones
 Da poca disciplina al programador
 Es difícil leer código escrito por otras personas

1.3 Fases de desarrollo de un programa en C

El preprocesador
Transforma el programa fuente, convirtiéndolo en otro archivo fuente “predigerido”.
Las transformaciones incluyen:
 Eliminar los comentarios.
 Incluir en el fuente el contenido de los ficheros declarados con #include
<fichero> (a estos ficheros se les suele llamar cabeceras)
 Sustituir en el fuente las macros declaradas con #define (ej. #define CIEN
100)

El compilador
Convierte el fuente entregado por el preprocesador en un archivo en lenguaje máquina:
fichero objeto.
Algunos compiladores pasan por una fase intermedia en lenguaje ensamblador.

El enlazador
Un fichero objeto es código máquina, pero no se puede ejecutar, porque le falta código
que se encuentra en otros archivos binarios.
El enlazador genera el ejecutable binario, a partir del contenido de los ficheros objetos
y de las bibliotecas.
Las bibliotecas contienen el código de funciones precompiladas, a las que el archivo
fuente llama (por ejemplo printf).

1.4 Ejemplo de programa en C

#include <stdio.h>
main()
{
/* Escribe un mensaje */
printf (“Hola, mundo\n”);
}

1.5 Bibliotecas estándares


El lenguaje C es muy simple. Carece de tipos y servicios que forman parte de otros
lenguajes. No tiene tipo booleano, ni manejo de cadenas, ni manejo de memoria
dinámica.
Prof. Felipe Hernández Mora

No obstante, el estándar de C define un conjunto de bibliotecas de funciones, que


necesariamente vienen con todo entorno de compilación de C y que satisfacen estos
servicios elementales.
Las interfaces de estos servicios vienen definidas en unos ficheros cabeceras ( header
files ). El nombre de estos ficheros suele terminar en .h
Algunos de los servicios proporcionados por las bibliotecas estándares son:
 entrada y salida de datos (stdio.h)
 manejo de cadenas (string.h)
 memoria dinámica (stdlib.h)
 rutinas matemáticas (math.h)

1.6 Componentes del lenguaje C


Sigue el paradigma de la programación estructurada:
Algoritmos+estructuras de datos = programas.

Estructuras de datos
 literales
 tipos básicos (todos numéricos)
 tipos enumerados
 tipos estructurados (struct, union)
 punteros y vectores

Construcciones algorítmicas
 construcciones condicionales (if,switch)
 construcciones iterativas(while,for,do...while)
 subrutinas (funciones)
Además de lo anterior, el C tiene otros elementos:
 comentarios
 inclusión de ficheros
 macros
 compilación condicional
El preprocesador es quien normalmente se encarga de interpretar estas construcciones.

1.7 Estructura de un fichero fuente


Un fichero fuente en lenguaje C tendrá esta estructura típica:
#include <biblioteca1.h>
#include <biblioteca2.h>

... declaraciones de funciones ...


... definiciones (cuerpos de funciones) ...
... declaraciones de variables globales ...
Prof. Felipe Hernández Mora

main()
{
... cuerpo del main ...
}

... otras definiciones de funciones ...

Las declaraciones y definiciones se pueden hacer en cualquier orden, aunque es


preferible declarar las funciones al principio del programa (por legibilidad).
main es simplemente una función más del programa, con la particularidad de que es el
punto de entrada al programa.

1.8 Comentarios
En el C original, tienen la forma /* cualquier texto */
Los comentarios se pueden extender varias líneas
No se pueden anidar comentarios (comentarios dentro de otros)
En C++ se usan también comentarios de una sola línea. La sintaxis es
// cualquier texto
Todo lo que se escriba a partir de las dos barras es un comentario. El comentario
termina con el final de la línea.

Ejemplos:

{
/* Esto es un comentario
que ocupa varias líneas
*/

// esto es un comentario de C++


// y esto es otro comentario
}

2. Manipulación básica de datos


 Literales
 Tipos básicos
 Declaraciones de variables
 Rangos de valores y tipos modificados
 Nombres de variables (identificadores)
 Expresiones
 Asignaciones
 Operadores booleanos
 Operadores avanzados
Prof. Felipe Hernández Mora

2.1 Literales
Literal: un dato escrito directamente (ej. 1234, “hola”, etc.)

Nombre Descripción Ejemplos


Decimal entero en base 10 1234
Hexadecimal entero en base 16 0x1234
Octal entero en base 8 01234
Carácter byte en ASCII ‘A’
Coma flotante número real en c.f. 1.25
3.456e6
3.456e-6
Cadena texto literal “hola, mundo”

2.2 Tipos básicos


Los datos en C han de tener un tipo. Las variables contienen datos, y se han de declarar
del tipo adecuado a los valores que van a contener.
El C dispone de estos tipos básicos:
int enteros (números enteros
positivos y negativos)
char caracteres (letras)
float números en coma flotante
(números reales)
double números en coma flotante de
doble precisión

void no-tipo (se emplea con


punteros)

Todos estos tipos -salvo void- son tipos numéricos. Incluso el tipo char.

Se pueden construir tipos de datos más elaborados a partir de estos tipos básicos:

En esta sección vamos a ver, de forma muy general, los elementos más significativos de
la sintaxis de C. No explicaremos en profundidad la función de cada uno de estos
elementos, ya que cada uno de ellos tiene dedicada una sección más adelante.
Prof. Felipe Hernández Mora

Todos los programas escritos en C se componen de una o más rutinas o funciones, no


teniendo por qué estar todas en un mismo fichero (esto es, pueden escribirse programas
en C cuyo código esté repartido por varios ficheros). Una de estas funciones, main() es
de obligatoria declaración en todos los programas C, ya que será en esa función donde
comience la ejecución de nuestro programa. Es decir, todos nuestros programas
comenzarán como si “alguien” hubiera llamado a la función main por nosotros. Nuestro
código deberá elaborarse y estructurarse teniendo en cuenta este punto de entrada.
Como decíamos uno de los elementos principales de todo programa C son las funciones.
Cada función está compuesta por los siguientes elementos:
 Una cabecera de función: la misión de la cabecera es identificar la función, así
como declarar el tipo de datos que devuelve.
 Declaración de argumentos: la declaración de argumentos informa de los
parámetros que recibe la función (en caso de recibir alguno).
 Una sentencia compuesta: que contiene el código de la función.
El concepto de sentencia merece una explicación más detallada. Podemos considerar
una sentencia simple como una instrucción u orden del programa. C extiende esta
noción a grupos de sentencias, llamadas sentencias compuestas. Este tipo de sentencias
sirven para almacenar otras sentencias que se ejecutarán de forma secuencial.

En cuanto a la sintaxis, las sentencias simples se delimitan por el carácter ;, mientrás


que las sentencias compuestas delimitan las sentencias que contienen entre un par de
llaves ({ y }).
Además de funciones en un programa C podemos encontrar los siguientes elementos:
 Comentarios: los comentarios no son más que pequeñas anotaciones de texto
que clarifican alguna parte del código. En C cada comentario debe comenzar por
la cadena /* y terminar por */


Línea Significado
Línea
/* Esto es un comentario
1 */ Comentario

3 int main (void) Inicio de la función main


6 printf( “Hola mundo!\n” ); printf escribe texto por pantalla

return 1;
Salimos de la función main, devolviendo
8
1

El anterior ejemplo introduce algunos conceptos importantes de la sintaxis de los


programas C:
 Los comentarios pueden ir en cualquier parte del código. A efectos del
compilador todo texto encerrado entre /* y */ no existe. Observarás que no
Prof. Felipe Hernández Mora

hemos escrito ninguna tilde en el texto del comentario. Suele ser norma no
escribir caracteres “raros” tales como tildes o cedillas en los comentarios de
programas, ya que algunos compiladores pueden tener problemas ante estos
caracteres.
 Como ya hemos comentado, las sentencias compuestas están delimitadas por un
par de llaves. En el ejemplo anterior encontramos:
Una sentencia compuesta, delimitada por las llaves de las líneas 4 y 9. Esta
sentencia compuesta forma el cuerpo de la función main.
Dos sentencias simples (líneas 6 y 8), componentes de la anterior sentencia
compuesta. Observa como todas las sentencias simples están delimitadas por el
caracter ;.
 La función main no recibe ningún parámetro. Para indicar esto se escribe void
(vacío en inglés) en la lista de parámetros de su declaración.
Principales ficheros de cabecera
Los principales ficheros de cabecera de C “suelen ser” los siguientes:
 ctype.h: Funciones útiles para la clasificación y el mapeado de códigos.
 errno.h: Funciones que permiten comprobar el valor almacenado en errno por
algunas funciones de librerías.
 float.h: Funciones que establecen algunas propiedades de las representaciones
de tipos real.
 limits.h: Funciones que establecen algunas propiedades de las representaciones
de tipos enteros.
 math.h: Funciones que sirven para realizar operaciones matemáticas comunes
sobre valores de tipo double.
 stdarg.h: Son declaraciones que permiten acceder a los argumentos adicionales
sin nombre en una función que acepta un número variable de argumentos.
 stdio.h: Macros y funciones para realizar operaciones de entrada y salida sobre
ficheros y flujos de datos.
 stdlib.h y a veces unistd.h: Declaraciones de una colección de funciones
útiles y la definición de tipos y macros para usarlas. Entre ellas suele estar la
función malloc que permite hacer peticiones de memoria dinámica al sistema.
 string.h: Declaración de una colección de funciones útiles para manejar
cadenas y otros arrays de caracteres.
 time.h: Declaración de funciones para el manejo de fechas.

DEFINICIÓN: Variable: Espacio de memoria, referenciado por un identificador, en el


que el programador puede almacenar datos de un determinado tipo

Declarar una variable es indicar al compilador que debe reservar espacio para almacenar
valores de un tipo determinado, que serán referenciados por un identificador
determinado. En C debemos declarar todas las variables antes de usarlas, establecer el
tipo que tienen y, en los casos que sea necesario, darles un valor inicial.
El estándar de C define sólo unas pocas palabras reservadas. Sólo con ellas no puede
hacerse un programa “normal” en la vida real. El programador necesita una serie de
funciones y herramientas estándar, que deben estar disponibles en cualquier entorno de
programación de C / C++. A este conjunto de funciones se le llama librería estándar.
Las funciones se declaran en ficheros de cabecera o .h. Las cabeceras contienen única y
Prof. Felipe Hernández Mora

exclusivamente los prototipos de las funciones. El código o cuerpo de las funciones se


incluye en ficheros objeto que son realmente la librería.

[Link] Sintaxis de declaración de variables


La declaración de una variable es una sentencia simple con la siguiente sintáxis:
tipoVariable nombreVariable;
De esta forma declaramos que la variable nombreVariable es de tipo tipoVariable.
El siguiente ejemplo declara una variable de tipo int (entero):
int contador;
También es posible dar un valor inicial a la variable declarada:
int contador = 2;
Como habrás adivinado esta sentencia declara la variable contador y le da un valor
inicial de 3.
A veces en necesario declarar varias variables de un mismo tipo. Existe una forma
abreviada de declaración de variables que permite hacer esto en una sola sentencia:
int x,y,z;
El anterior ejemplo declara tres variables (x, y, z), todas de tipo entero (int). Usando
esta forma abreviada también es posible dar un valor inicial a las variables:
int x=0,y=1,z=23;
Constantes
Las constantes son valores fijos3.2 que no pueden ser modificados por el programa.
Pueden ser de cualquier tipo de datos básico (punteros incluidos). Para marcar que
queremos que una variable sea constante utilizamos la palabra reservada const tal que:
const int dummy = 321; /* declaramos que dummy vale y valdrá
siempre 321 */
No tiene demasiado sentido declarar una variable de tipo const sin darle valor inicial,
pero algunos compiladores permiten hacerlo.

Operadores
DEFINICIÓN: ¿qué es un operador?: Un operador es un símbolo (+, -, *, /, etc) que
tiene una función predefinida (suma, resta, multiplicación, etc) y que recibe sus

argumentos de manera infija, en el caso de tener 2 argumentos ( ), o de


Prof. Felipe Hernández Mora

manera prefija o postfija, en el caso de tener uno solo ( , o bien,

).

En C existen una gran variedad de operadores, que se pueden agrupar de la siguiente


manera:
 Operadores aritméticos
 Operadores relacionales
 Operadores lógicos
 Operadores a nivel de bit (bitwise operators)
 Operadores especiales
En el siguiente apartado veremos cuáles son estos operadores, sus funciones, y por
último la precedencia u orden de evaluación entre éstos.

Operadores aritméticos
Los operadores aritméticos nos permiten, básicamente, hacer cualquier operación
aritmética, que necesitemos (ejemplo: suma, resta, multiplicación, etc). En la siguiente
tabla se muestran los operadores de los que disponemos en C y su función asociada.
Tabla: Operadores aritméticos
Operador Acción Ejemplo

Resta x=5 3; // x vale 2

Suma x=2 3; // x vale 5


Multiplicación x = 2 3; // x vale 6

División
x=6 2; // x vale 3

Módulo x = 5 % 2; // x vale 1

Decremento x = 1; x ; // x vale 0

Incremento x = 1; x ; // x vale 2

Incrementos y Decrementos
Como hemos visto los operadores de incremento y decremento, añaden o restan una
unidad a su operando. Observar, que estos operadores modifican el valor del operando:
x = 4;
y = x++;
/* Después de esta instrucción x valdrá 5 e */
/* y valdrá 4 (como veremos a continuación). */
Los incrementos y decrementos, son operadores muy útiles, y en muchas ocasiones es
bastante más clara su utilización que hacer una simple suma o resta:
/* Un pequeño for */
Prof. Felipe Hernández Mora

int i,j;

for ( i = 0; i < 10; i = i + 1 )


/* no hace nada */;
for ( j = 0; j < 10; j++ )
/* hace lo mismo que el anterior: nada */;
/* Cual es más clara? */
Sin embargo es necesario prestar atención a lo siguiente:
Los incrementos y decrementos se pueden poner de forma prefija y postfija; y según
esto pueden significar:

Operadores relacionales
Al igual que en matemáticas, estos operadores nos permitirán evaluar las relaciones
(igualdad, mayor, menor, etc) entre un par de operandos (en principio, pensemos en
números). Los operadores relacionales de los que disponemos en C son:

Tabla 3.3: Operadores relacionales.


Operador Acción
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual
!= Distinto

El resultado de cualquier evaluación de este tipo, es un valor “cierto” (true) o “falso”


(false). La mayoría de lenguajes tienen algún tipo predefinido para representar estos
valores (boolean, bool, etc); sin embargo en C, se utilizan valores enteros para
representar esto:

falso (false) 0
cierto (true) cualquier valor distinto de 0, aunque normalmente se usará el 1

Volviendo a los operadores relacionales, el resultado de una evaluación será un valor


entre 0 y 1, que indicará como hemos dicho, la falsedad o certeza de esa relación.

Operadores lógicos
Como operadores lógicos designamos a aquellos operadores que nos permiten
“conectar” un par de propiedades (al igual que en lógica):
numero = 2701;
if ( EsPrimo(numero) && (numero > 1000) ){
/* Ejecutaremos este código si numero */
Prof. Felipe Hernández Mora

/* es primo y numero es mayor que 100 */


}
Los operadores lógicos de los que disponemos en C son los siguientes:
Tabla: Operadores lógicos.
Operador Acción
&& Conjunción (Y)
|| Disyunción (O)
! Negación

Al igual que con la igualdad hay que tener especial cuidado con los operadores && y

, ya que si ponemos sólamente un & o un , nos estamos refiriendo a un “and” o un “or”


a nivel de bit, por lo que el código puede que no haga lo que queremos (o que algunas
veces lo haga y otras veces no).
Ejercicios de programas
// Calcula el subtotal
#include<stdio.h>
#include<conio.h>
float pre,can,sub;
void main()
{
clrscr();
gotoxy(10,10);printf(“Ingrese el precio: “);
scanf(“%f”,&pre);
gotoxy(10,12);printf(“Ingrese la cantidad: “);
scanf(“%f”,&can);
sub=pre*can;
gotoxy(10,14);printf(“El subtotal es: %.2f”,sub);
getch();
}

Estructuras de control
Podemos clasificar cada una de las estructuras de control más comunes en programación
en uno de los siguientes tipos:
 Secuencia: Ejecución sucesiva de una o más operaciones.
 Selección: Se realiza una u otra operación, dependiendo de una condición.

Iteración: Repetición de una o varias operaciones mientras se


cumpla una Sentencia if
La forma general de esta sentencia es:
if (expresion)
sentencia
Prof. Felipe Hernández Mora

Figura 3.1: Sentencia if


Si la expresion es verdadera (valor distinto de 0), entonces se ejecuta sentencia.
 La expresion debe estar entre paréntesis.
 Si sentencia es compuesta tenemos:
 if (expresion)
 {
 • sentencia 1
 • sentencia 2
 .
 • sentencia N
 }
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que decide
si un número es par:
int numero = 0, esPar= 0;
if ((numero % 2) == 0)
esPar = 1;

Sentencia if-else
La forma general de esta sentencia es:
if (expresion)
sentencia 1
else
sentencia 2
Ejemplo de if
#include<stdio.h>
#include<conio.h>
int ed;
void main()
{
clrscr();
gotoxy(30,10);printf(“ingrese su edad”);
gotoxy(30,12);scanf(“%i”,&ed);
if(ed>17)
{
gotoxy(30,14);printf(“usted es mayor de edad”);
}
else
{
Prof. Felipe Hernández Mora

gotoxy(40,16);printf(“usted es menor de edad”);


}
getch();

Ejemplos de Programa If con Else

Sentencia switch
La forma general de esta sentencia es:
switch (expresion)
{
case exp 1:
sentencia 1;
sentencia 2;
break;

case exp 2:
case exp N:
sentencia N;
break;
default:
sentencia D;
}

Figura 3.3: Sentencia switch


expresion devuelve un valor entero, pero también puede ser de tipo char.
 exp1, ..., exp N representan expresiones constantes de valores enteros, aunque
también pueden ser caracteres.
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que decide
si imprime la vocal dada:
letra=’e’;
switch(letra);
{
case ‘a’:
case ‘A’:
printf(“Es la vocal a\n”);
break;
case ‘e’:
Prof. Felipe Hernández Mora

case ‘E’:
printf(“Es la vocal e\n”);
break;z
case ‘i’:
case ‘I’:
printf(“Es la vocal i\n”);
break;
case ‘o’:
case ‘O’:
printf(“Es la vocal o\n”);
break;
case ‘u’:
case ‘U’:
printf(“Es la vocal u\n”);
break;
default: printf(“Es una consonante\n”);
}
s

Figura 3.2: Sentencia if-else


Si expresion es verdadera (valor distinto de 0), entonces se ejecuta sentencia 1; en
caso contrario, se ejecuta sentencia 2.
 Si las sentencias son compuestas se cierran entre { }.
 Las sentencias pueden ser a su vez sentencias if-else.
 if (expresion 1)
 • if (expresion 2)
 • S1
 • else
 • S2
 else
 • S3
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que elige el
menor de tres números:
float a, b, c, menor;
a=2; b=4; c=1;

if (a < b) {
if (a < c)
menor = a;
else
menor = c;
Prof. Felipe Hernández Mora

} else {
if (b < c)
menor = b;
else
menor = c;
}

Sentencia break
La sentencia break se utiliza para terminar la ejecución de bucles o salir de una
sentencia switch. Es necesaria en la sentencia switch para transferir el control fuera de
la misma. En caso de bucles anidados, el control se transfiere fuera de la sentencia más
interna en la que se encuentre, pero no fuera de las externas.

Ejercicios con break


#include<stdio.h>
#include<conio.h>
void suma();
void resta();
void multiplicacion();
int op,a,b,c;
void main()
{
do{
clrscr();
gotoxy(30,2);printf(“<< MATH BASIC >>”);
gotoxy(25,5);printf(“1) SUMA”);
gotoxy(25,8);printf(“2) RESTA”);
gotoxy(25,11);printf(“3) MULTIPLICACION”);
gotoxy(25,14);printf(“4) SALIR”);
gotoxy(23,17);printf (“Elija el numero de la”);
gotoxy(21,19);printf(“opcion que desee utilizar”);
gotoxy(30,21);printf(“[ ]”);
do{
gotoxy(32,21);scanf(“%i”,&op);
}while((op<1)||(op>4));
switch(op)
{
case 1:clrscr();suma();break;
Prof. Felipe Hernández Mora

case 2:clrscr();resta();break;
case 3:clrscr();multiplicacion();break;
}
}while(op!=4);
}

Sentencia for
La forma general de esta sentencia es:
for (expresion 1; expresion 2; expresion 3)
sentencia;

Figura 3.4: Sentencia for


Inicialmente se ejecuta expresion 1, se hace para inicializar algún parámetro que
controla la repetición del bucle.
 expresion 2 es una condición que debe ser cierta para que se ejecute sentencia.
 expresion 3 se utiliza para modificar el valor del parámetro.
 El bucle se repite mientras expresion 2 sea cierto.
 Si sentencia es compuesta se encierra entre { }.
 Si se omite expresion 2 se asumirá el valor permanente de 1 y el bucle se
ejecutará de forma indefinida (bucle infinito).
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que calcula
la suma de los numeros del 1 al 100:
int numero, suma;
suma=0;
for (numero=1; numero<=100; numero++)
suma = suma + numero;
Prof. Felipe Hernández Mora

TALLER DESDE EL 16 AL 27

Ejercicios con For


/* Repite el mensaje hola 5 veces*/
#include<stdio.h>
#include<conio.h>
int x;
void main()
{
clrscr();
for(x=0;x<5;x++)
{
printf(“\n Hola”);
}
getch();
}

/* Presenta la tabla de multiplicar del


numero ingresado*/
#include<stdio.h>
#include<conio.h>
int num,x,mul;
void main()
{
clrscr();
gotoxy(10,10);printf(“Ingresa un numero: “);
scanf(“%i”,&num);
for(x=1;x<=12;x++)
{
mul=num*x;
gotoxy(10,x+11);printf(“%i * %i = %i”,num,x,mul);
}
getch();
}

/*ingresar 5 numeros en un arreglo y presentarlos en forma de escalera*/


#include<stdio.h>
#include<conio.h>
int i,x[4];
void main()
{
clrscr();
gotoxy(30,5);printf(“ingrese cinco numeros”);
for(i=1;i<=5;i++){
gotoxy(30,i+5);scanf(“%i”,&x[i]);
}
gotoxy(30,11);printf(“en escalera:”);
Prof. Felipe Hernández Mora

for(i=1;i<=5;i++){
gotoxy(i+30,i+11);printf(“%i”,x[i]);
}
getch();
}

Sentencia while
La forma general de esta sentencia es:
while (expresion)
sentencia;

Figura 3.5: Sentencia while


sentencia se ejecutará mientras el valor de expresion sea verdadero.
 Primero se evalúa expresion
 Lo normal es que sentencia incluya algún elemento que altere el valor de
expresion proporcionando así la condición de salida del bucle.
 Si sentencia es compuesta se encierra entre { }.
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que calcula
la suma de los numeros del 1 al 100:
int suma, limite;
suma=1; limite=100;
while(limite>0)
{
suma=suma+limite;
limite--;
}

Ejercicios con while


/* Suma los primeros 5 numeros naturales */
#include<stdio.h>
#include<conio.h>
Prof. Felipe Hernández Mora

int x=1,resul;
void main()
{
clrscr();
while(x<=5)
{
resul=resul+x;
x++;
}
printf(“%i”,resul);
getch();
}

Sentencia do-while
La forma general de esta sentencia es:
do
sentencia;
while (expresion);
Ejercicios con do while

Ejercicios con do while


// Suma los 5 primersos numeros naturales
#include<stdio.h>
#include<conio.h>
int a,x,y,z;
void main()
{
clrscr();
do{
x++;
gotoxy(28,9);printf(“Ingrese cinco numero”);
a=a+13;
gotoxy(a,11);scanf(“%i”,&y);
z=z+y;
}while(x<=4);
gotoxy(21,13);printf(“La suma de los numeros que ingreso es:”);
gotoxy(39,15);printf(“%i”,z);
getch();
}

FUNCIONES()
Funciones y subrutinas
Las funciones en C desempeñan el papel de las subrutinas o procedimientos en otros
lenguajes, esto es, permiten agrupar una serie de operaciones de tal manera que se
puedan utilizar más tarde sin tener que preocuparnos por cómo están implementadas,
simplemente sabiendo lo que harán.
Prof. Felipe Hernández Mora

El uso de funciones es una práctica común y recomendable ya que permite modularizar


nuestro código, simplificando así el desarrollo y la depuración del mismo. Para utilizar
funciones en un programa es necesario declararlas previamente al igual que las variables
(en este caso indicaremos los argumentos de entrada y su tipo, y el tipo del valor que
devolverá) y definir las operaciones que contiene.
En C la declaración de una función tiene la siguiente estructura:
tipo_devuelto nombre_funcion (argumentos);
Y su definición:
tipo_devuelto nombre_funcion (argumentos)
{
sentencias;
}

Pongamos un ejemplo, un programa en el que queremos incluir una función que


devuelva el factorial de un número:

Ejemplo

1sintaxis/ejemplo_funciones1.c

La declaración
int factorial(int a);
debe coincidir con la definición de la función factorial que aparece posteriormente, si no
coincide obtendremos un error en la compilación del programa. El valor que calcula la
función factorial() se devuelve por medio de la sentencia return, ésta puede estar
seguida de cualquier expresión o aparecer sola. En tal caso la función no devuelve
ningún valor y al llegar a ese punto simplemente se devuelve el control a la función
desde la que se invocó.

Subsecciones
 3.6.1 Paso de parámetros a funciones. Llamadas por valor

Paso de parámetros a funciones. Llamadas por valor


Es importante destacar que en C todos los argumentos de una función se pasan por
valor. Esto es, las funciones trabajan sobre copias privadas y temporales de las variables
que se le han pasado como argumentos, y no directamente sobre ellas. Lo que significa
que no podemos modificar directamente desde una función las variables de la función
que la ha llamado.
Veamos esto con un ejemplo:
Prof. Felipe Hernández Mora

Ejemplo

1sintaxis/ejemplo_funciones2.c

Como podemos ver, en este caso no utilizamos una variable temporal en la función
factorial para ir calculándo la solución, sino que vamos disminuyendo el argumento n
de entrada. Esto no influye en la variable a (que es la que se paso como argumento a la
función factorial) ya que al pasarse los parámetros por valor es una copia de la variable
a y no a directamente la que maneja la función factorial como argumento n.
Si quisieramos modificar una variable llamando a una función tendríamos que pasarle
como argumento a dicha función la dirección en memoria de esa variable (un puntero a
la variable). Esto lo veremos en la sección 5.9.

Figura 3.6: Sentencia do-while


sentencia se ejecutará mientras el valor de expresion sea verdadero.
 sentencia siempre se ejecuta al menos una vez.
 Si sentencia es compuesta se encierra entre { }.

Para la mayoría de las aplicaciones es mejor y más natural comprobar la condición antes
de ejecutar el bucle, por ello se usa más la sentencia while.
Un ejemplo de uso de esta sentencia es el siguiente fragmento de programa, que pide un
número igual a 0:
int numero = 0;
do
{
printf(“Introduce el número 0:\n”);
scanf(“%d”, &numero); /* Se lee el numero */
Prof. Felipe Hernández Mora

} while (numero != 0);


Ejercicios con Funciones
void suma(){
gotoxy(30,5);printf(“Ingrese un numero:”);
gotoxy(38,6);scanf(“%i”,&a);
for(b=1;b<=12;b++)
{
c=a+b;
gotoxy(30,b+7);printf(“%i + %i = %i”,a,b,c);
}
getch();
}
void resta(){
gotoxy(30,5);printf(“Ingrese un numero:”);
gotoxy(38,6);scanf(“%i”,&a);
for(b=1;b<=12;b++)
{
c=a-b;
gotoxy(30,b+7);printf(“%i - %i = %i”,a,b,c);
}
getch();
}
void multiplicacion(){
gotoxy(30,5);printf(“Ingrese un numero:”);
gotoxy(38,6);scanf(“%i”,&a);
for(b=1;b<=12;b++)
{
c=a*b;
gotoxy(30,b+7);printf(“%i * %i = %i”,a,b,c);
}
getch();
}

Arrays (ARREGLOS)
Los arrays3.4 quizás sean la forma más simple de tipos de datos compuestos.
DEFINICIÓN: Array: Un array es una colección ordenada de elementos de un mismo
tipo de datos, agrupados de forma consecutiva en memoria. Cada elemento del array
tiene asociado un índice, que no es más que un número natural que lo identifica
inequívocamente y permite al programador acceder a él.

Figura: Un array de números enteros


Prof. Felipe Hernández Mora

La figura 3.7.1 muestra gráficamente un array de números enteros. Óbservese que el


índice del primer elemento del array es el número cero.
Consejo: Piensa en los índices como desplazamientos desde el inicio del array.
Así pues el primer elemento tendrá un índice (desplazamiento) cero, el
segundo un índice (desplazamiento) uno, etc.

Notas al pie
...arrays3.4
En español la palabra array no tiene una traducción clara. Algunos autores utilizan
agrupación, aunque en este manual utilizaremos simplemente array

Definición y declaración de arrays en C


La sintaxis para declarar un array es simple: tipo nombre[tamaño]; siendo:
 tipo:El tipo de los elementos que compondrán el array
 nombre: El nombre de nuestro array
 tamaño: Un número entero mayor que cero que indica el tamaño del array
Veamos algunos ejemplos:
int array1[100]; /* Declara un array de 100 elementos enteros */
char array2[15]; /* Declara un array de 15 caracteres */

Introducción
Ahora vamos a ver qué es para el compilador un array, y así aprenderemos a usarlos de
manera más eficiente. Un array es un conjunto de elementos del mismo tipo. Para que
sea conjunto “ordenado”, lo que el compilador hace es juntar todos los elementos en la
misma zona de memoria. Almacena la dirección inicial en nuestra variable para saber
dónde está el primer elemento, que correspondería al índice “0”. A partir de ahí, al
incrementar la dirección de memoria en el tamaño de los elementos, va accediento a
array[1], array[2], etc.

Figura: Un array de números primos


Prof. Felipe Hernández Mora

Figura 5.7: Avanzando sobre un array

Así podemos deducir la siguiente fórmula: dirección_elemento dirección_inicial

índice tamaño_elementos .
Esta fórmula es la que aplica el compilador para calcular la dirección del elemento al
que nos referimos al hacer un acceso al array del tipo array[indice], como por ejemplo
numeros_primos[3]. Claramente, se dibuja la idea del puntero en el concepto de array:
DEFINICIÓN: Variable tipo array: Un puntero al primer elemento del array.

¿Cuál es la ventaja de trabajar de punteros, con los posibles problemas que eso trae, en
vez de con arrays sin más? La respuesta surge enseguida: un array tiene un tamaño fijo
desde su declaración. Sin embargo, trabajando con punteros, nuestro array podrá tener
el tamaño que nosotros queramos durante el programa, y podemos incluso variarlo en
función de otros datos del programa.
Por supuesto, esta ventaja tiene un precio (aunque muy bajo) que no debemos olvidar.
Debemos apuntar en algún sitio (variable, constante) cuánto espacio hemos pedido y en
otro cuánto de ese espacio hemos aprovechado. Como al programar no conoceremos el
espacio aprovechado del array, deberemos hacer una de estas dos cosas:
 apuntar en otra variable el tamaño ocupado del array.
 hacer que el último elemento del array sea diferente, un dato que no nos puedan
introducir, por ejemplo, un número negativo o una letra cuando hablamos de
números de teléfono.

Figura: Más sobre arrays

Acceso a elementos de un array


Los arrays no nos servirían de nada si no pudiéramos manipular la información que
contienen. Para ello se utiliza el operador de acceso a arrays []. Este operador accede al
elemento del array indicado entre los dos corchetes, como se puede observar en los
siguientes ejemplos:
Prof. Felipe Hernández Mora

/* Declaramos un array de 10 elementos */


int array[10];
int tmp;

/* Asignamos al tercer elemento (índice 2) el valor 23 */


array[2] = 23;
/* Guardamos en tmp el valor del tercer elemento */
tmp = array[2];

/* El quinto elemento (índice 4) tiene el mismo valor */


array[4] = array[2];
Como hemos visto, se puede utilizar el operador [] tanto para acceder a elementos de
un array como para asignarles algún valor.

Llegados a este punto puedes estar preguntándote: ¿qué valor tienen los elementos de un
array recien declarado? La respuesta es tan simple como decepcionante: no lo sabes.
Los elementos de un array recién declarado tomarán valores no determinados.
Consejo: Siempre que declares un array asegúrate que inicializas los
elementos a un valor conocido antes de operar con ellos.

Estructuras
DEFINICIÓN: Estructura: Una estructura (struct) es un tipo de datos compuesto que
agrupa un conjunto de tipos de datos (no necesariamente iguales) en un único tipo.

La anterior definición, que en un principio se nos puede antojar oscura, oculta un


concepto realmente simple, que vamos a explicar mediante el siguiente ejemplo:
supongamos que estamos escribiendo un software de gestión de miembros de
asociaciones universitarias. Obviamente necesitaremos almacenar y manipular datos
sobre personas, tales como nombre, DNI, edad, etc. Podríamos aproximarnos al
problema declarando estas variables por separado en nuestro programa:
/* Edad de la persona */
int edad;

/* DNI */
char DNI[20];
/* Nombre de la persona */
char nombre[50];
Sin embargo hay algo que no “encaja” demasiado bien dentro de esta aproximación.
Esta claro que, aunque tengamos tres variables independientes, las tres se refieren a
distintos aspectos de información acerca de una misma persona, lo cual no queda
reflejado en el código del programa, pudiendo llevar a errores o malentendidos3.5.
Adoptamos los siguientes cambios:
/* Edad de la persona */
int persona_edad;

/* DNI */
char persona_DNI[20];

/* Nombre de la persona */
char persona_nombre[50];
Claro está, los cambios realizados no influyen para nada en el funcionamiento del
programa. Sin embargo mejoran la legibilidad del código, algo muy importante, sobre
todo cuando estamos tratando con programas de más de unas pocas líneas de código.
Prof. Felipe Hernández Mora

Aún así no estamos totalmente convencidos del resultado; esta claro que ahora queda
patente que las tres variables se refieren a distintos aspectos de una misma unidad de
información. Sin embargo todavía sigue siendo “engorroso” manipular los datos de una
persona, sobre todo cuando hay que pasar dichos datos a una función, ya que tendremos
que pasar tres nombres de variable a la función, aún tratándose de una misma persona.
Nos gustaría “agrupar” estos datos, de igual forma que agrupamos todos los apuntes de
una asignatura en una misma carpeta. Las estructuras nos permiten hacer precisamente
esto.

Notas al pie
... malentendidos3.5
Recordemos que la mayoría de los programas que escribamos serán leidos por al
menos otra persona, la cual no tiene por qué estar familiarizada con nuestro estilo de
programación

Definición de una estructura en un programa C


La sintaxis para definir una estructura es la siguiente:
struct nombreEstructura {
declaración de variable1;
declaración de variable2;
.
.
declaración de variableN;
};
Dicho de forma informal lo que estamos haciendo es englobar un conjunto de variables
dentro de un nuevo entorno.

Declaración de variables de esa estructura


Una vez que tengamos definida la estructura podremos declarar variables de ese tipo, de
la siguiente forma:
struct nombreEstructura nombreVariable;
A partir de este momento la variable nombreVariable contendrá información acerca de
cada uno de los campos definidos en la estructura.

Accediendo a los campos de una estructura


Supongamos que tenemos declarada la variable var_struct, perteneciente al tipo de la
estructura struct1, la cual tiene declarada los campos campo1 (entero) y campo2 (real).
Para acceder a estos campos utilizamos el operador . (punto), de la siguiente forma:
var_struct.campo1 = 10;
var_struct.campo2 = var_struct.campo1 * 3.1415;
Al igual que en el caso de los arrays, este operador se puede utilizar tanto para acceder
a la información de los campos como para modificarlos.
Prof. Felipe Hernández Mora

Ejemplo
Retomando el ejemplo de nuestro gestor de miembros de asociaciones universitarias,
podemos reescribir el código de la siguiente forma:
struct Persona {
/* Edad de la persona */
int edad;

/* DNI */
char DNI[20];

/* Nombre */
char nombre[20];
};

/* Declaramos dos variables del tipo Persona */


struct Persona miembro_acm1;
struct Persona miembro_acm2;

/* Asignamos algunos valores */


miembro_acm1.edad = 21;
miembro_acm2.edad = 23;

/* Los demás campos quedán indefinidos!! */


Gráficamente lo que hemos hecho es lo siguiente:

EJEMPLOS DE ESTRUCTURAS
#include<stdio.h>
Prof. Felipe Hernández Mora

#include<conio.h>
struct datos{
char nombre[9];
char apellido[15];
char telefono[9];
int edad;
};
void main()
{
clrscr();
struct datos usuario;
/* Ingreso de datos en la estructura */
gotoxy(10,8);printf(“Ingrese su nombre: “);
scanf(“%s”,&[Link]);
gotoxy(10,9);printf(“Ingrese su apellido: “);
scanf(“%s”,&[Link]);
gotoxy(10,10);printf(“Ingrese su telefono: “);
scanf(“%s”,&[Link]);
gotoxy(10,11);printf(“Ingrese su edad: “);
scanf(“%i”,&[Link]);
/* Presentacion de los datos ingresados */
gotoxy(50,8);printf(“Su nombre es: %s”,[Link]);
gotoxy(50,9);printf(“Su apellido es: %s”,[Link]);
gotoxy(50,10);printf(“Su telefono es: %s”,[Link]);
gotoxy(50,11);printf(“Su edad es: %i”,[Link]);
getch();
}

ARCHIVOS
fopen
FILE *fopen(const char *nombre_fichero, const char *modo);
Abre el fichero de nombre “nombre_fichero”, lo asocia con un flujo de datos y devuelve
un puntero al mismo. Si falla la llamada, devuelve un puntero nulo. Algunos de los
caracteres iniciales de “modo” son:
“r”, para abrir un fichero de texto existente para su lectura
“w”, para crear un fichero de texto o abrir y truncar uno existente, para su escritura
“a”, para crear un fichero de texto o abrir uno existente, para su escritura. El
indicador de posición se coloca al final del fichero antes de cada escritura
“r+”, para abrir un fichero de texto existente para su lectura y escritura

Ejemplo
Prof. Felipe Hernández Mora

1libstd/ejemplo_abre_fichero.c

fclose
int fclose(FILE *flujo);
Cierra el fichero asociado con “flujo”. Devuelve 0 en caso de éxito y EOF (end of file)
en caso contrario.

Ejemplo

1libstd/ejemplo_cierra_fichero.c

fwrite
size_t fwrite(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fwrite permite escribir c elementos de longitud n bytes almacenados en el
buffer apuntado por “flujo”.

Ejemplo

1libstd/ejemplo_fwrite.c

fread
size_t fread(const void *buffer, size_t n, size_t c, FILE *flujo);
La rutina fread permite leer c elementos de longitud n bytes del fichero apuntado por
“flujo” y los almacena en el buffer especificado.

Ejemplo

1libstd/ejemplo_fread.c
Prof. Felipe Hernández Mora

fgetc
int fgetc(FILE *flujo);
Lee el siguiente carácter por “flujo”, avanza el indicador de posición y devuelve int.
Devuelve EOF si pone a 1 el indicador de fin de fichero o el de error.

fgets
char *fgets(char *s, int n, FILE *flujo);
Lee caracteres por “flujo” y los almacena en elementos sucesivos del “array” que
comienza en “s”, continuando hasta que almacene “n-1” caracteres, almacene un
carácter del nueva línea o ponga a 1 los indicadores de error o de fin de fichero. Si
almacena un carácter, concluye almacenando un carácter nulo en el siguiente elemento
del “array”. Devuelve “s” si almacena algún carácter y no ha puesto a 1 el indicador de
error; en caso contrario devuelve un puntero nulo.

fputc
int fputc(int c, FILE *flujo);
Escribe el carácter c por “flujo”, avanza el indicador de posición del fichero y devuelve
int c . En caso de error devuelve EOF.

fputs
int fputs(const char *s, FILE *flujo);
Escribe los caracteres de la cadena s por “flujo”. No escribe el carácter nulo de
terminación. En caso de éxito, devuelve un valor no negativo; en caso de error devuelve
EOF.

fscanf
int fscanf(FILE *flujo, const char *formato, ...);
Lee texto y convierte a la representación interna según el formato especificado en
formato. Devuelve el número de entradas emparejadas y asignadas, o EOF si no se
almacenan valores antes de que se active el indicador de error o de fin de fichero.

fprintf
int fprintf(FILE *flujo, const char *formato, ...);
Genera texto formateado, bajo el control de formato formato y escribe los caracteres
generados por flujo. Devuelve el número de caracteres generados o un valor negativo
en caso de error.
A modo de resumen estas son las especificaciones de formato más comunes:
Prof. Felipe Hernández Mora

Talleres de Programaciòn
Miscelaneos desde 28 al 45
1.- En un local de electrodomésticos, su dueño decide aplicar un descuento de acuerdo a
la marca que el cliente adquiere de acuerdo a la siguiente tabla.
Marca Descuento
Panasonic 10%
Sony 15%
LG 20%
Samsung 12%
Calcular subtotal tomando en cuenta la cantidad del producto y el neto a pagar
considerando el IVA.

2.- Ingresar 7 números y presentar la suma de todos ellos utilizando un acumulador.

3.- Ingresar la edad de 5 personas y presentar el número de mayor edad.

4.- Realizar un marco alrededor de la hoja de trabajo y presentarlo pausadamente.

5.- Realizar un marco y utilizando for hacer que cambie continuamente de color.

6.- En un local de compra local solo se puede comprar 10 productos, si el usuario


compra más de esta cantidad la operación no se ejecuta. Hacer esto realidad.

7.- Ingresar 5 calificaciones y presentar el promedio.

8.- Ingresar los tres lados de un triángulo y determinar si es equilátero, isósceles o


escaleno.

9.- Ingresar el valor de un lado y de acuerdo a ese dato dibujar un cuadrado usando for.

10.- Ingresar los promedios de un alumno de 8voa 5to curso, determinar: si el promedio
es mayor a 19.50, el alumno obtiene una beca total, si el promedio es menor a 19.50 y
mayor a 17.50, el alumno obtiene media beca, si tiene menos promedio, se presentara un
mensaje indicando que puede mejorar.

11.- Calcular la edad de una persona ingresando el año en que nació.

12.- Para la renovación de matriculas en un colegio un requisito es el promedio del


alumno.
Si el promedio del alumno es 19, se le otorga una beca, si es menor se cobra el valor
correcto de la pensión, y si e promedio es menor a 17 se le cobrara un valor adicional
de $20.

13.- En una tienda local se obsequia algo por cada compra. Si el comprador es un niño
(hasta 12 años), se le obsequia un caramelo, si es adolescente (hasta 17 años), se le
obsequia un snack, y si es mayor un llavero.

14.- Crear una clave para ingresar a una factura.


Prof. Felipe Hernández Mora

15.- Se requiere plantar tulipanes en un jardín que mide 350m2. Si cada tulipán ocupa un
espacio de 1m. ¿Cuántos tulipanes caben en el jardín?

16.- En una distribuidora se están entregando libros para los diferentes locales, hay
12500 libros, y en cada caja caben 80 libros. Determinar cuantas cajas se van a crear y
con la siguiente tabla calcular:
Librería No. Libros
Científica 2580
Juanito 1700
Don Pepe 940
La esquina 3200
Mi primer Libro 4080
De acuerdo a la cantidad de libros pedidos en cada librería si lleva más de 38 cajas se le
hará un descuento del 10%. Calcular el valor que tiene que pagar cada librería si cada
caja cuesta $25.

17.- Ingresar 2 números y presentar simultáneamente la tabla de multiplicar de ellos


hasta el número 15. Elaborar el marco.

18.- Ingresar los promedios de los 3 trimestres del alumno y determinar si el alumno
paso de año (promedio desde 16.50), se queda supletorio (promedio desde 14.50), o se
queda de año (menos de 14.50). Elaborar un marco.

19.- Ingresar 5 nombres y presentarlos en forma de escalera, cambiando el color en cada


nombre.

20.- En una tienda de computación se aplica un descuento especial a las personas que
compran al contado (20% descuento), y a las personas que hacen una compra por más
de $500 (15%). Si la compra es a crédito no se hace ningún descuento, tampoco si
compra menos de $500. Calcular el subtotal considerando el IVA.

If.-
Ingresar por teclado 2 números y presentar por pantalla si son iguales o diferentes.
Ingresar por teclado la cantidad de horas ,el valor que se le paga por hora. Calcular
el sueldo del obrero y presentarlo por pantalla. Si el sueldo es mayor a 200 dolares
presentar el mensaje “ Se gamo una semana de vacaciones”
Utilizando los operadores lógicos, presentar por pantalla si es un triangulo
equilátero, isósceles o escaleno.
Ingresar por teclado las calificaciones de los tres parciales y el examen de un
alumno, calcular el promedio, presentarlo por pantalla y si este es menor a 13
presentar el mensaje “insuficiente”
Ingresar por teclado 3 numero y presentar por pantalla el numero mayor, menor e
intermedio.
For .-
Presentar por pantalla los 10 primeros números naturales.
Presentar por pantalla la suma de los 5 primeros números naturales.
Prof. Felipe Hernández Mora

Presentar por pantalla los 5 primeros números naturales en forma vertical


Presentar por pantalla los 5 primeros números naturales en forma horizontal
Presentar por pantalla los 5 primeros números naturales en forma escalera
Presentar por pantalla el Mensaje “Cristo Vive” cambiando el color del mensaje
constantemente sobre toda la pantalla.
Ingresar por teclado un numero y presentar por pantalla todos los numeros menores
a el hasta el uno.
Ingresar por teclado 5 numero utilizando el proceso repetitivo For, sumarlos entres
si y presentar el resultado por pantalla.
Leer o ingresar un numero y presentar por pantalla la tabla de sumar del numero
ingresado, habiendo ingresado tambien hasta que numero quiere que llegue la tabla
de sumar.
Ingresar el lado cuadrado y presentar su respectiva área llena de asteriscos.
(Obviamente se dibujara automáticamente un cuadrado).
While
Los mismos que for , solo que usando esta funcion.
Do while
Presenta la suma de los 5 primeros múltiplos de cinco.
Ingresa un numero y si su ingreso es menor a cero presente un mensaje “No puede
ingresar numeros negativos” ,caso contrario presente el mensaje “ Ha ingresado un
numero positivo , pulse una tecla para salir”.
Ejercicios 3,4,5 del For ahora con esta funcion.
Realiza un marco para la pantalla utilizando los caracteres Ascii.
Arrays , Arreglos o Vectores.-
Ingresar 5 numeros en un array unidimensional y presentarlos en forma de
escalera.
Ingresar 5 numeros en un array unidimensional y presentarlos en forma de vertical.
Ingresar 5 numeros en un array unidimensional y presentarlos en forma de
horizontal.
Prof. Felipe Hernández Mora

TALLERES DESDE EL 45 AL 57

Procedimientos y Arreglos.-

Realice un menù utilizando estos parámetros.

Menu de Presentacion

1) Forma Vertical
2) Forman Horizontal
3) Forma de Escalera
4) Salida

Elija la opcion (1-4):

Miscelánea Para Pensar.-


Ingresar por teclado 2 numero y presentar por pantalla si son iguales o
[Link] con un rango de 1 a 100 si no se encuentra en ese rango presente el
mensaje “Numero no aceptado”.
Ingresar los tres lados de un triangulo y presente si es isósceles,equilátero o
escaleno con la condicion de que los lados sean menores que mil y si la condicion no
se cumple presenta el mensaje “Uno de los tres lados”, es mayor o igual que mil.
Realice un programa que me permita resolver ecuaciones con la ayuda de la
ecuación cuadrática.
Leer 10 numero y presentar cuantos son positivos.
Ingresa tu edad y calcula el año en que nacise.
Leer 10 numeros y presente cuantos son negativos,cuantos positivos y cuantos
nulos.
Prof. Felipe Hernández Mora

BIBLIOGRAFIA

TITULO AUTOR
DISEÑO DE ALGORITMO MASTER [Link]

FUNDAMENTOS DE [Link] ÑACATO


PROGRAMACION
ENTORNO INTEGRADO DE UNIVERSIDAD VALLE DE
DESARROLLO DE C++ GRIJALVA

Lenguaje C++ Guia para Ing. Fernando Tala


programadores

Manual de C ++ UNIVERSIDAD POLITECNICA


DEL LITORIAL
PROCOM

Colaboración de todos los estudiantes del año anterior en los talleres. En la elaboración de los programas
del cual les doy mis agradecimientos y mi cariño.
Dios los Bendiga.

También podría gustarte