Sunteți pe pagina 1din 83

ALGORITMOS Y PROGRAMACIN

Algoritmos y
programacin



i
ALGORI TMOS Y PROGRAMACI N
Segundo Cuatrimestre




















Lic. Laura Gisela Velzquez Marmolejo
Estado de Mxico, Mxico
Telfono (55) 50626468 y 69



2
Objetivo





Desarrollar la capacidad en el alumno para desarrollar y programar algoritmos, que le permitan
resolver problemas o realizar una tarea especfica, mediante el uso de algn lenguaje de
programacin, utilizando la computadora como herramienta de anlisis de datos y solucin de
problemas.
3
Contenido Temtico
TEMA CAPITULO
Introduccin 3
Conceptos Bsicos de Algoritmos 5
Estructuras Algortmicas Selectivas 20
Estructuras Algortmicas Cclicas 30
Arreglos 41
Introduccin a los Lenguajes de Programacin 46
Expresiones 50
Sentencias de Control 58
Arreglos en Programacin 66
Funciones 70
Punteros 74
Estructuras de Datos 77
Conclusiones 81
Bibliografa 82


4
Introduccin
El curso de Algoritmos y Programacin representa una herramienta terica y prctica tanto
para la solucin de problemas genricos como para estandarizar y automatizar cualquier proceso o
actividad, mediante la creacin de programas para computadora.

El curso promueve en primera instancia desarrollar las capacidades y habilidades del
participante para analizar problemas, comprender situaciones implcitas y modelar dichas situaciones
para la propuesta de la mejor solucin, dando como resultado una secuencia de pasos orientados a
resolver dicha problemtica adems de detectar y considerar los parmetros que afectan a dichos
problemas, todo con la finalidad de crear un algoritmo. Para el eficiente diseo de algoritmos se
conocern las principales herramientas y representaciones graficas a efecto de ser comprendidas e
implementadas.

Asimismo, el participante aplicar los conocimientos de creacin de algoritmos para la
automatizacin de tareas desarrollando habilidades para la seleccin de los correctos comandos en
algn lenguaje para trasladar esos algoritmos en un programa. Esto implica que el participante
tambin conocer las bases de lenguaje y principios de programacin en lenguaje C, utilizando la
computadora como herramienta de anlisis de datos y solucin de problemas.

Este curso le servir al participante como base para cursos subsecuentes como Mtodos
Numricos, Control, Robtica y Procesos Industriales, tanto en el desarrollo de solucin de
problemas, creacin de algoritmos y programas.

5
Conceptos Bsicos de Algoritmos
Objetivo: Al trmino de la modulo el participante manipular adecuadamente las
reglas de construccin de algoritmos, usando los distintos tipos de datos mediante
operaciones aritmticas y lgicas

uchas veces aplicamos el algoritmo de manera inadvertida, inconciente o automticamente.
Esto generalmente se produce cuando el problema que tenemos enfrente lo hemos resuelto
con anterioridad un gran nmero de veces. Supongamos que simplemente tenemos que abrir
una puerta. Lo hemos hecho tantas veces que difcilmente nos ponemos a enumerar los pasos
para alcanzar este objetivo.
Por otra parte existen una gran cantidad de problemas que requieren de un anlisis profundo y de un
pensamiento flexible y estructurado para su solucin. Este curso abordar este tipo de problemas.



Construccin de Algoritmos
Objetivo: El participante nombrar las reglas de construccin de algoritmos con diagramas de flujo y
lenguaje algortmico




Existen tcnicas y herramientas metodolgicas que nos permiten flexibilizar y estructurar el razonamiento
utilizado en la solucin de un problema. Lo que permitir finalmente la construccin de algoritmos
eficientes.

Concepto de Algoritmo
Un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver
un problema
La superacin es la base del xito
Unidad
Asignacin
1
M
6

Caractersticas de los Algoritmos
Precisin: Los pasos a seguir en el algoritmo deben ser precisados claramente
Determinismo: El algoritmo, dado un conjunto de datos idnticos de entrada, siempre debe
arrojar los mismos resultados.
Finitud: El algoritmo, independientemente de la complejidad del
mismo, siempre debe ser de longitud finita.




Ilustracin A : Mdulos o secciones de un algoritmo

Por otra parte, un algoritmo consta de tres secciones o mdulos principales, en la figura A podemos
observarlas secciones que constituyen un algoritmo.



Modulo1 Representa la operacin o accin que permite el ingreso de los
datos del problema
Modulo2 Representa la operacin o conjunto de operaciones secuenciales,
cuyo objetivo es obtener la solucin del problema
Modulo3 Representa una operacin o conjunto de operaciones que
permiten comunicar al exterior el o los resultados alcanzados.

Algoritmo

Procesamiento de
los datos
Modulo 1 Modulo 2 Modulo 3

Datos de
Entrada

Impresin de
Resultados


7

Diagramas de Flujo
Un diagrama de flujo representa la esquematizacin grfica de un algoritmo, es decir, muestra
grficamente los pasos o procesos a seguir para alcanzar la solucin de un problema.

Su correcta construccin es sumamente importante porque a partir del mismo se escribe un
programa en algn lenguaje de programacin. Figura 1.2.1



Ilustracin B Smbolos utilizados en diagramas de flujo

Reglas para la construccin de un Diagrama de Flujo
1. Todo diagrama de flujo debe tener un inicio y un fin
Este smbolo se utiliza para representar el
inicio o el fin de un diagrama de flujo.

Ese smbolo se utiliza para representar la
lectura de datos desde el dispositivo de
entrada

Este smbolo se utiliza para representar un
bloque de instrucciones. Tambin se le
conoce con el nombre de smbolo de
proceso.

Este smbolo se utiliza para representar una
pregunta. Es conocido con el nombre de
diamante de decisin

Este smbolo representa la salida de
informacin, hacia el dispositivo de
presentacin de datos


Este smbolo se utiliza para representar los
ciclos de repeticin por medio de sentencias
FOR, o su equivalente en el lenguaje de
programacin que se est trabajando.

Conector

Indica el orden de las acciones del algoritmo
8
2. Las lneas utilizadas para indicar la direccin del flujo del diagrama debe ser rectas, verticales
y horizontales
3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben estar
conectadas. La conexin puede ser a un smbolo que exprese lectura, proceso, decisin
impresin conexin o fin de diagrama
4. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a
derecha (right to left)
5. La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje de
programacin. La solucin presentada en el diagrama puede escribirse posteriormente y
fcilmente en diferentes lenguajes de programacin
6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o
ayuden a entender lo que hicimos.
7. Si el diagrama de flujo requiera mas de una hoja para su construccin, debemos utilizar los
conectores adecuados y enumerar las p{aginas convenientemente
8. No puede llegar ms de una lnea a un smbolo.


Reglas para la construccin de un Diagrama de Flujo
1. Todo diagrama de flujo debe tener un inicio y un fin
2. Las lneas utilizadas para indicar la direccin del flujo del diagrama debe ser rectas, verticales
y horizontales
3. Todas las lneas utilizadas para indicar la direccin del flujo del diagrama deben estar
conectadas. La conexin puede ser a un smbolo que exprese lectura, proceso, decisin
impresin conexin o fin de diagrama
4. El diagrama de flujo debe ser construido de arriba hacia abajo (top-down) y de izquierda a
derecha (right to left)
5. La notacin utilizada en el diagrama de flujo debe ser independiente del lenguaje de
programacin. La solucin presentada en el diagrama puede escribirse posteriormente y fcilmente en
diferentes lenguajes de programacin
6. Es conveniente cuando realizamos una tarea compleja poner comentarios que expresen o
ayuden a entender lo que hicimos.
7. Si el diagrama de flujo requiera mas de una hoja para su construccin, debemos utilizar los
conectores adecuados y enumerar las p{aginas convenientemente
8. No puede llegar mas de una lnea a un smbolo.

Tipos de datos usados en algoritmos
Objetivo: Identifica los distintos tipos de datos que pueden ser usados en
algoritmos

Los datos se clasifican en simples y estructurados:

Simples Ocupan una sola casilla de memoria, por lo tanto hace referencia a un nico valor a la vez
9
Estructurados.- Se caracterizan por el hecho de que con un nombre (identificador de variable
estructurada) se hace referencia a un grupo de casillas de memoria, es decir, tiene varios
componentes. Cada uno de los componentes puede ser a su vez un dato simple o estructurado

Dentro de los simples encontramos los numricos, alfanumricos y los lgicos; dentro de los
estructurados encontramos .la cadena de caracteres, los arreglos, los registros y los conjuntos. En la
siguiente tabla podemos ver algunos ejemplos de estos tipos de datos.

Nombre Descripcin
Ejemplos
(No Muestra Sintaxis de ningn
Lenguaje de Programacin)
Enteros (int)
Pueden estar precedidos de los signos + y -
, adems no tiene parte decimal.
128, 1528, -714, 25469, -56245
Reales
(float y
double)
Tambien pueden estar precedidos de los
signos + y -, y tiene una parte decimal.
7.5, 128.0, -37.256, 25.3, 160000.0, -15.60
Caracteres
(char)
Contiene un solo carcter, y se escribe
entre apstrofes
a, B, $, 9 , -, #

Boleanos
(boolean)
Son datos que solo pueden tomar dos
valores: verdadero (trae), falso (false).
10>32
Cadena de
caracteres
(String)
Contiene un conjunto de caracteres, y se
escribe entre comillas.
Letras del alfabeto, dgitos (0, 1, 2.9) o smbolos
especiales (#, $, ^, *, %, /, !, +, -etc).
Arreglos
(array)
Coleccin finita, homognea y ordenada de
elementos; puede almacenar a N elementos
del mismo tipo y adems permite el acceso
a cada uno d estos elementos
UNIDIMENSIONALES O LINEALES (Cualquier
elemento es referenciado por un nico ndice)
Ident_arreglo = ARREGLO [limiteinf...limsup] DE
tipo
MULTIDIMENSIONALES
*BIDIMENSIONALES (Hace referencia a cada
elemento por medio de dos indices) Id_arreglo
=ARREGLO [limitteinf...limitesup,
liminfcol...limsupcol] DE tipo
Registros
Cada uno de sus componentes se
denomina campo. Los campos de un
registro pueden ser todos de diferente tipo.
Ident_registro = REGISTRO
Id_campo1:tipo1
Id_campo2:tipo2
.........
Id_campoN: tipoN
{Fin de la identificacin del registro}
Tabla 1

Identificadores, constantes y variables
Los datos a procesar por la computadora, ya sean simples estructurados, deben almacenarse en
casillas o celdas de memoria para su posterior utilizacin. Estas casillas o celdas de memoria
(constantes o variables), tienen un nombre que permite su identificacin, al cual se le llama
identificador.
10

Ilustracin C : Casillas de Memoria con los nombres de los Identificadores

Identificadores
Es el nombre que se les da a las casillas de memoria. Como se puede observaren la figura 1.2.1 la
memoria contiene casillas de memoria, en las cuales almacenan los datos, y para que estos datos sean
identificados se les asigna un identificador. En el ejemplo de la figura 1.2.1 hay una casilla de
memoria llamada suma, otra acum. etc. as la memoria las identifica.

Un identificador se forma de acuerdo a ciertas reglas (las mimas pueden tener alguna variante
dependiendo del lenguaje de programacin):

El primer que forma un identificador debe ser una letra
Los dems caracteres pueden ser letras, dgitos o el siguiente smbolo especial: _
La longitud del identificador es igual a 7 en la mayora de los lenguajes de programacin.

As mismo, cada dato puede tratarse dentro de un programa de computadora como un dato
constante o variable, para entenderse mejor aqu se explica mas a detalle.

Constantes
Son datos que no cambian durante la ejecucin del programa. Existen tipos de constantes como
tipos de datos. (entero, real, carcter, cadena de carcter, etc..)

Ilustracin D : Constantes representadas en memoria
La figura 1.2.2 muestra una constante llamada NUM, este es un espacio de memoria que almacena
un dato tipo entero y contiene el valor 5, mismo que no cambiara durante la ejecucin del programa;
5
7.25 8.59
resultado
NUM
NREAL NUMREA
RESU
SUMA
AUX X7
ACUM
NUM_1
Memoria

11
el dato NUMERA almacena un dato de tipo real con un valor de 8.59 mismo que no cambiara su
valor: Sin embargo, existe tambin datos que funcionan al contrario de estos, esas son las variables.

Variables
Las variables son objetos que pueden cambiar su valor durante la ejecucin de un programa.

Para nombrar las variables utilizarem os los identificadores que hemos explicado con anterioridad, al
igual que las constantes, pueden existir tipos de variables como tipos de datos. Los nombres de las
variables deben ser representativos de la funcin que cumplen en el programa. La figura 1.2.3
muestra un dato llamado I, mismo que almacena un valor entero y esta dndole un valor de inicio de
0, mismo que en cualquier momento cambiar de valor por medio de una operacin aritmtica, una
asignacin, etc.


Ilustracin E: Variables representadas en memoria

Operaciones aritmticas y lgicas
Objetivo: Opera correctamente los distintos tipos de operaciones aplicables a
algoritmos



Los datos por si solos no nos serviran de nada si con ellos no realizramos ninguna tarea, en el caso
de la programacin los datos constantemente los utilizamos para realizar operaciones aritmticas,
lgicas, asignaciones, etctera, para ello necesitamos una herramienta que nos permita realizarlas,
para ellos nos auxiliamos de operadores, los mimos que estudiaremos a continuacin:



0
0 0
I
SUMA SUEL


12
Operadores aritmticos
Operador
aritmtico
Operacin Ejemplo Resultado
** Potencia 4**3 64
* Multiplicacin 8.25*7 57.75
/ divisin 15/4 3.75
+ suma 125.78 + 62.50 188.28
- resta 65.30 32.33 32.97
mod Modulo(residuo) 15 mod 2 1
div Divisin entera 17 mod 3 5
Tabla 2
Con estos operadores se puede realizar cualquier operacin aritmtica, sin embargo, al evaluar
expresiones que contienen operadores aritmticos debemos respetar la jerarqua en el orden de
aplicacin. es decir, debemos aplicar primero el operador de mayor jerarqua, resolver esa operacin,
y as sucesivamente. El operador () es un operador asociativo que tiene la prioridad mas alta en
cualquier lenguaje de programacin.

Jerarqua de los operadores aritmticos
Operador Jerarqua Operacin
** (mayor)


(menor)
Potencia
*, /, mod, div Multiplicacin, divisin,
modulo, divisin entera
+, - Suma, resta
Tabla 3

Ejemplos:
Caso 1:
7 + 5 - 6
12 2
6
Caso 2:

9 + 7 * 8 36 / 5
9 + 56 36 / 5
9 + 56 7.2
65 7.2
57.8

Caso 3
7 * 5 ** 3 / 4 div 3
13
7 * 125 / 4 div 3
875 / 4 div 3
218.75 div 3
72
Expresiones lgicas o booleanas.
El valor que pueden tomar estas expresiones es el de verdadero o falso. Se utilizan frecuentemente
en las estructuras selectivas (dependiendo del resultado de la evaluacin se toma por un determinado
camino alternativo) y en las estructuras repetitivas (dependiendo del resultado de la evaluacin se
continua con el ciclo o se interrumpe el mismo)

Operadores relacionales
Son operadores que permiten comparar dos operndoos. El resultado de una expresin con
operadores relacionales es verdadero o falso. Los cuales pueden ser nmeros, alfanumricos,
constantes o variables. Las constantes o variables pueden ser entero, real, carcter o cadena de
carcter.
Operadores relacionales
Operador Operacin
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
== Igual
<> Diferente que
Tabla 4
Ejemplo:

A=5
B=16
(A ** 2 ) > (B * 2 )
25 > (B * 2 )
25 > 32
FALSO

Nota
Cuando se utilizan los operadores de relacin con los operadores lgicos, falso es menor
que verdaderos VERDADERO > FALSO = VERDADERO.

14
Nota
No se pueden realizar la comparacin entre un valor lgico y uno numrico, utilizando un
operador relacional.
Operadores lgicos
Los operadores lgicos son operadores que permiten formular condiciones complejas partir de
condiciones simples. Los operadores lgicos son de conjuncin (y), disyuncin (o) y negacin (no).

Operadores Lgicos
Operador Lgico Jerarqua Expresin lgica Significado
NO Mayor No P No P
No es cierto que P
Es falso que P
Y P y Q P y Q
P sin embargo Q
O Menor P o Q P o Q
O P o Q o ambas
Mnimo P o Q
Tabla 5
Ejemplo:
No (15 >= 7 ** 2 ) O ( 43 8 * 2 div 4 <> 3 * 2 div 2 )
No FALSO O ( 43 8 * 2 div 4 <> 3 * 2 div 2 )
No FALSO O ( 43 16 div 4 <> 3 * 2 div 2 )
No FALSO O ( 43 16 div 4 <> 6 div 2 )
No FALSO O ( 43 16 div 4 <> 3 )
No FALSO O ( 43 39 <> 3 )
No FALSO O VERDADERO
VERDADERO O VERDADERO
VERDADERO

Bloque de asignacin
Se utiliza para asignar valores o expresiones a una variable la asignacin es una operacin
destructiva.

Variable expresin o valor

La expresin puede ser aritmtica (-+*etc) o lgica (operadores relacionales = etc y operadores
lgicos: no y o)



15
Elaboracin de algoritmos
Objetivo: Disea diagramas de flujo de situaciones especficas

Ejercicios
1. Construya un diagrama de flujo tal que dados los datos A, B, C Y D que representan nmeros
enteros,
escriba los mismos en orden inverso.

Datos: A, B, C y D son variables de tipo entero

Ilustracin F
Observemos que el programa, primeramente tiene un inicio y un fin, como lo indican las reglas de
construccin de algoritmos, posteriormente recibe los datos tipo entero A, B, C y D, y los imprime
de forma inversa.

Si dicho programa deseramos traducirlo a lenguaje algortmico, tendramos que utilizar las
siguientes instrucciones, mismas que corresponden a los signos del diagrama de flujo.


Instrucciones en lenguaje algortmico

Leer .. Leer A, B, C
INICIO
INICIO

A,B,C,D

D,C,B,A
16
Hacer.. Hacer A ---- A +
SUE
Escribir.. Escribir A, B
Tabla 6
Considerando el diagrama de flujo No. 1, para ejemplificar las instrucciones en lenguaje algortmico
en ese programa.

INVIERTE _ DATOS
{El programa dado un conjunto de datos enteros
de entrada invierte el orden de los mismos cuando
los imprime}
{A, B, C y D son variables de tipo entero}
1. Leer A, B, C, D
2. Escribir D, C, B, A

2. Construya un diagrama de flujo tal que dado los datos enteros A y B, escriba el resultado de la
siguiente expresin
(A+B)
2

3
Datos: A, B (variables de tipo entero)

Ilustracin G
A continuacin veremos el seguimiento del algoritmo para diferentes corridas
INICIO
FIN
A,B
C (A+B) ** 2/3
C
Explicacin de la variable
A, B: Variables de tipo entero
RES: Variable tipo variable.
17

A B RES

10 5 75
8 7 75
2 4 12
6 3 27
Instrucciones en lenguaje algortmico en ese programa del diagrama No. 2
CALCULA
{El programa, dados como datos los enteros A y B,
calcula el resultado de una expresin}
{A y B son variables de tipo entero. RES es una variable
de tipo real}
1. Leer A, B
2. Hacer RES (A + B) ** 2 / 3
3. Escribir RES



Ejercicios

1. Resuelve los siguientes casos tomando en cuenta la jerarqua de los operadores aritmticos,
lgicos y relacionales
13 * 4 / ( 9 -(56 22 * 10 + (9 ** 3 / 14) + 2 ) / 12) -22
((2634 div 3 / 4 ** 4 ) > ( 152 + 18 * 3 ** 2 ) ) <= ((126 * 2 ) < (22 * 5 / 3 ))
( 15 >= 4 * 8 ** 2 O 5 > 5 Y 12 > 21 ) O NO ( 5 * 3 < 9 + 7 * 2 mod 4 ** 2 )

2. Instrucciones: Elabore en cada caso el diagrama de flujo y cuadro de datos con 3 corridas
diferentes.
Tal que dado el costo de un artculo vendido y la cantidad de dinero entregada por el cliente,
calcule e imprima el cambio que se debe entregar.

Resuelva el problema que tienen en una gasolinera. Los surtidores de la misma registran lo
que surten en galones, pero el precio de la gasolina esta fijado en litros. El diagrama de
flujo debe calcular e imprimir lo que hay que cobrarle al cliente. Nota: galn = 3.875 litros;
precio de la gasolina es de $8.20


Calcule e imprima el nmero de segundos que hay en un determinado nmero de das.


3. De los siguientes algoritmos en lenguaje algortmico, construye el diagrama de flujo
correspondiente


18
a. algoritmo_sumar

variables
entero a, b, c

inicio
escribir( "Introduzca el primer nmero (entero): " )
leer( a )
escribir( "Introduzca el segundo nmero (entero): " )
leer( b )
c a + b
escribir( "La suma es: ", c )
fin

b. algoritmo_doble

variables
real numero

inicio
escribir( "Introduzca su nombre: " )

leer( nombre )

escribir( "Introduzca un nmero real: " )

leer( numero )

escribir( nombre, ", el doble de ", numero, " es: ", numero * 2 )

fin

c. Area_de_una_circunferencia
/* Cabecera */

algoritmo Area_de_una_circunferencia

/* Declaraciones */

constantes
PI = 3.141592

variables
real area, radio

19
/* Cuerpo */

inicio
escribir( "Introduzca radio: " )
leer( radio )
area PI * radio ** 2
escribir( "El rea de la circunferencia es: ", area )
fin



d. /* Cabecera */
Area_de_una_circunferencia

/* Declaraciones */
constantes
PI = 3.141592

variables
real area, radio

/* Cuerpo */
inicio
escribir( "Introduzca radio: " )
leer( radio )
area PI * radio ** 2
escribir( "El rea de la circunferencia es: ", area )
fin


20
Estructuras Algortmicas
Selectivas
Objetivo: Al trmino de la unidad el participante diseara algoritmos que incluyan
estructuras de seleccin usadas en algoritmos computacionales

as estructuras algortmicas selectivas las utilizamos cuando debemos tomar una decisin, para
establecer un proceso o sealar un camino alternativo a seguir.
Esta toma de decisin expresada en el diagrama de flujo con un rombo, se basa en la evaluacin
de una o mas condiciones que nos sealaran como alternativa o consecuencia, la rama a seguir.
Hay situaciones en las que la toma de decisiones se realiza en cascada. Por lo que para alcanzar la solucin
de un problema o subproblema debemos aplicar prcticamente un rbol de decisin.

Clasificacin:
SI ENTONCES (estructura selectiva simple)
SI ENTONCES / SINO (Estructura selectiva doble)
SI MLTIPLE (Estructura selectiva mltiple)

Cabe sealar que cuando a las estructuras selectivas las aplicamos en cascada, podemos utilizar una
combinacin de las estructuras sealadas anteriormente en la clasificacin

Estructura selectiva simple SI ENTONCES
Permite que el flujo del diagrama siga por un camino especfico si se cumple una condicin o
conjunto de condiciones. Si al evaluar la condicin (condiciones) el resultado es verdadero, entonces
se ejecutan ciertas operaciones. Luego se contina con la secuencia normal del diagrama de flujo.
Ejemplo examen


Lucha por tus ideales

Unidad
Asignacin
2
L

21

Ilustracin H Diagrama de Flujo de la Estructura Si Entonces

El lenguaje algortmico de la estructura selectiva si entonces, es el siguiente:



.
.
.
Si condicin entonces
Hacer operacin
{Fin del condicional}
.
.
.






Ejemplos:
Construya un diagrama de flujo talque dado como dato la calificacin de un alumno en un
examen, escriba aprobado en caso de que esa calificacin sea mayor a 8



CONDICIN

OPERACIN




Donde Condicin expresa
la condicin o conjunto de
condiciones a evaluar.
Operacin expresa la
operacin o conjuntote
operaciones que se van a
realizar si la condicin
resulta verdadera
22
Ilustracin I Diagrama de Flujo





Ilustracin J
Lenguaje
Algortmico

Aumento_selectiva
1. INICIO
2. Leer SUE
3. Si SUE <
1000 entonces
Hacer AUM
SUE * 1.15 y

NSUE
SUE +AUM

Escribir
NSUE
4. Fin de
Condicional
paso 3
5. FIN
FIN
AUM SUE * 1.15
NSUE SUE +AUM

SUE < 1000
SUE
INICIO
SI
NO
NSUE
Construya un diagrama de flujo
talque dado como dato el sueldo de
un trabajador, aplquele un aumento
del 15% si su sueldo es inferior a
$1000.00. Imprima en este caso el
nuevo sueldo del trabajador.
FIN

CAL
> 8
Lenguaje Algortmico


Examen_selectiva_simple
1. INICIO
2. Leer CAL
3. Si CAL > 8 entonces
Escribir Aprobado
4. Fin de Condicional paso 3
5. FIN
A continuacin se presenta el
seguimiento del algoritmo para
diferentes m corridas

NUMERO DE
CORRIDA
DATO RESULTADO
1 8.75 Aprobado
2 7.90
3 8.00
4 9.50 Aprobado
5 8.35 Aprobado
Tabla 7

Aprobado

CAL
INICIO
S
I
N
O

23
Ejercicios
Construya un diagrama de flujo tal que dado como datos los valores enteros P y Q,
determine si los mismos satisfacen la siguiente expresin:

P
3
+ Q
2
- 2*P
2
< 680

Estructura selectiva doble si entonces / sino
Las estructura selectiva si entonces / sino permite que el flujo del diagrama se bifurfique
por dos ramas diferentes en el punto de la toma de decisin. Si al evaluar la condicin el
resultado verdadero, entonces se sigue por un camino especifric1o y se ejecutan ciertas
operaciones. Por otra parte si el resultado es falso entonces se sigue por otro camino y se
ejecutan otras operaciones. En ambos casos, luego de ejecutarse las operaciones indicadas
se contina con las secuencia normal del diagrama.





Ilustracin K Diagrama de flujo que ilustra la estructura selectiva.


















Se representa en lenguaje algortmico de la siguiente forma
OPERACION1 OPERACION2

CONDICIN
SI NO
Donde:
Condicin expresa la condicin o conjunto de condiciones a
evaluar.

Operacin1 expresa la operacin o conjuntote operaciones que se
van a realizar si la condicin resulta verdadera
Operacin2 expresa la operacin o conjuntote operaciones que se
van a realizar si la condicin resulta falsa
24

.
.
.
Si condicin
Entonces
Hacer operacin1
Sino
Hacer operacin2
{Fin del condicional}
.
.
.


Ejercicios:

Retomemos los programas de la selectiva simple:
Construya un diagrama de flujo tal quedado como dato la calificacin de un alumno en un
examen, escriba aprobado si su calificacin es mayor o igual a 8 y reprobado en caso
contrario.

Elabora el Diagrama de Lenguaje Algortmico
Flujo


Examen_selectiva_doble
{El programa, dado como dato la calificacin de un alumno en un examen, escribe
aprobado si su calificacin es mayor o igual que 8 y reprobado en caso contrario}
{CAL es una variable de tipo real}

1. Inicio
2. Leer CAL
3. Si CAL>=8
Entonces
Escribir Aprobado
Sino
Escribir Reprobado
4. {Fin del condicional}
Fin

25

Construya un diagrama de flujo talque dado como dato el sueldo de un trabajador, aplquele
un aumento del 15% si su sueldo es inferior a $1000.00. y 12% en caso contrario. Imprima
en este caso el nuevo sueldo del trabajador.

Elabora el Diagrama de Lenguaje Algortmico
Flujo

Aumento_selectiva_doble
{el programa talque dado como
dato el sueldo de un trabajador,
aplquele un aumento del 15% si su
sueldo es inferior a $1000.00. y
12% en caso contrario }
{SUE y NSUE son variables de tipo
real}
1. Inicio
2. Leer SUE
3. Si SUE < 1000
Entonces
Hacer NSUE SUE * 1.15
Sino
Hacer NSUE SUE * 1.12
4. {Fin del condicional}
5. Escribir NSUE
6. Fin

Estructura selectiva mltiple si mltiple

La estructura selectiva si mltiple permite que el flujo del diagrama se bifurque por varios
ramas en. Punto de la toma de decisiones, esto en funcin del valor que tome el selector.
As si el selector toma el valor 1 se ejecutara la accin 1, si toma el valor 2 se ejecutara la
accin 2,si tmale valor N se realizara la accin N, y si toma un valor distinto de los valores
comprendidos entre 1 y N, se continuar con el flujo normal del diagrama realizndose la
accin N + 1..

SELECTOR Es la variable o expresin a evaluarse, segn la cual se tomara una de las
mltiples decisiones o alternativas
ACCIN 1 expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor 1.
ACCIN 2 expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor 2.
ACCIN N expresa la operacin o conjunto de operaciones que se van a realizar si el
selector toma el valor N.
ACCIN 1 expresa la operacin que se van a realizar cuando se continu con el flujo
normal del diagrama.
26


Donde:


.
.
.
Si el selector igual
Valor 1: Hacer accin 1
Valor 1: Hacer accin 2
.
.
Valor 1: Hacer accin N
{Fin del condicional}
Hacer accin N + 1
.
.


ACCION3
SELECTOR
ACCION1 ACCION2
ACCION N + 1

27
Debido a que esta estructura es muy flexible permite aplicarse de diferentes formas,
observe el lenguaje algortmico que se presenta a continuacin.

.
.
.
Si selector igual
VALOR 1: Hacer accin 1
VALOR 2: Hacer accin 2
VALOR 3: Hacer accin 3
De otra forma: Hacer accin X
{Fin del condicional}
Hacer accin Y
.
.
.
.
.
.
Si selector igual
VALOR 1, 2: Hacer accin 1
VALOR 3, 4, 5: Hacer accin 2
De otra forma: Hacer accin 3
{Fin del condicional}
Hacer accin X
.
.
.

Ejemplo:

Construya un diagrama de flujo tal que dado como datos la categora y el sueldo de un
trabajador, calcule el aumento correspondiente, teniendo en cuenta la siguiente tabla.
Imprima la categora del trabajador y su nuevo sueldo
Categora
Aumento
%
1 15
2 10
3 8
Aumento_selectiva_multiple
{El programa calcula el aumento de sueldo de los trabajadores, teniendo en cuenta su categora. El
aumento se incorpora al salario}
{CATE es una variable de tipo entero, SUE y NSUE son variables de tipo real}
1. Inicio
2. Leer CATE, SUE
3. Si CATE igual
1: Hacer NSUE SUE * 1.15
2: Hacer NSUE SUE * 1.10
3: Hacer NSUE SUE * 1.08
4. {Fin del condicional del paso 3}
5. Escribir CATE, NSUE
6. Fin
28


Estructura selectivas en cascada
Encontramos numerosos casos en el desarrollo de la solucin de problemas en el que luego de toma
la decisin y marcar el camino correspondiente a seguir, es necesario tomar otra decisin. Se seala
luego de evaluar las condiciones la rama correspondiente a seguir, nuevamente podemos tomar otra
decisin. El proceso puede repetirse numerosas veces



.
OPERACION
21

CONDICI
N1
OPERACION22

CONDICI
N2
SI NO
SI
NO
NSUE SUE *
1.08

NSUE SUE *
1.15
FIN
CATE
NSUE SUE *
1.10

CATE, SUE
INICIO
CATE, SUE
1
2
3

29
Ejercicio:
Desarrolla el diagrama de flujo del siguiente programa:
DESCENDENTE_SELECTIVA_CASCADA
{el programa, dados como datos tres nmeros enteros diferentes,
escribe estos nmeros en forma descendente}
{A, B y C son variables de tipo entero}
1. Leer A, B, C
2. Si A > B
Entonces
2.1 Si A > C
entonces
2.1.1 Si B > C
entonces
Escribir A, B y C
sino
Escribir A, C y B
2.1.2 {Fin del condicional del paso 2.1.1}
Sino
Escribir C, A y B
2.2 {Fin del condicional del paso 2.1}
Sino
2.3 Si B > C
Entonces
2.3.1 Si A > C
Entonces
Escribir B, A y C
Sino
Escribir B, C y A
2.3.2 {Fin del condicional del paso 2.3.1}
Sino
Escribir C, B y A
2.4 {Fin del condicional del paso 2.3}
3. {Fin del condicional del paso 2}



Construya un diagrama de flujo tal que dado los datos como dados los valores enteros P y Q,
determine si los mismos satisfacen la siguiente expresin:
P
3
+Q
3
-2 * P < 680




30
Estructuras Algortmicas Cclicas
Objetivo: Al finalizar el modulo el participante usar las distintas estructuras cclicas aplicables a
algoritmos

n la practica es comn encontrar algoritmos cuyas operaciones se debe ejecutar un nmero
repetido de veces. Las instrucciones son las mismas, pero los datos sobre los que se trabaja
varan. El conjunto de instrucciones que se ejecuta repetidamente se llama ciclo.

Tipos de estructuras cclicas
Objetivo: Comparara las distintas estructuras cclicas aplicables a algoritmos



Todo ciclo debe terminar de ejecutarse luego de un nmero finito de veces, por lo que es necesario en
cada iteracin del mismo, evaluar las condiciones necesarias para decidir si se va a seguir ejecutando o si
debe detenerse. en todo ciclo debe existir una condicin de parada de ciclo o fin de ciclo.
En algunos ciclo podemos establecer el nmero de veces que deseamos que se repita, el cual lo
llamaremos repetir

La estructura repetitiva repetir FOR

Repetir (FOR), es adecuada para utilizar en un ciclo que s ejecutar un nmero definido de veces.

La estructura FOR tiene
Una variable de control del ciclo
Un valor inicial
Un valor final
Un incremento o decremento


Con constancia lograras todo lo que te propongas


U. A.
3
E

31
Lenguaje algortmico de la estructura repetir
Hacer <-- VI

Repetir con V desde VI hasta VF
{Proceso}
.
.
.
Hacer V V + ID
{Fin del ciclo}
Representa el lenguaje del diagrama de flujo





NO

SI










NO


SI





ASCENDENTE DESCENDENTE
V- Control de ciclo
VI valor inicial
VF valor final
ID - incremento

Ilustracin 12Diagrama de Flujo
Las estructura repetitiva mientras (WHILE)
Es la estructura adecuada para utilizar en un ciclo cuando no sabemos el nmero de veces que este
se ha de repetir. Dicho nmero depende de las posiciones dentro del ciclo.

ciclo: conjunto de instrucciones que se ejecutaran repetidamente
Condicin de terminacin: La evaluacin de esta condicin permite decidir cuando finaliza la
ejecucin del ciclo. La condicin se evala al inicio del mismo.
VVI
V(<)VF
(<)
PROCESO
V V+ID
VVI
V(>)VF
(>)
PROCESO
V V-ID


32


Hacer PI PRIOPOSICION INICIAL
Mientras PI es verdadero repetir
.
NO .
.
{PROCESO}
SI .
.
.
Hacer PI modificacin de PI
{Fin de ciclo}




Diagrama de flujo Lenguaje algortmico del diagrama de flujo 3.2 estructura cclica mientras


Creacin de programas con estructuras cclicas
Objetivo.- Usara las distintas tcnicas de creacin de ciclos en algoritmos.


Ejemplo:

Dados como datos los sueldos de 10 trabajadores de una empresa, obtenga el total de la nomina de
la misma. Considere adems que no puede utilizar estructuras algortmicas repetitivas.

Datos: SUE
1
, SUE
2,
SUE
3
.SUE
10
DONDE: SUE
i
Es una variable de tipo real que representa el sueldo del trabajador i
(1 <= i <= 10)
Explicacin de las variables
I: Es una variable de tipo entero que representa la variable de control del ciclo. Contabiliza el
nmero de veces que se ha de repetirse una determinada accin. El contador toma un valor
inicial (generalmente 0 1) y se incrementa en la mayora de los casos en una unidad en cada
vuelta del ciclo.

NOMINA: Es una variable de tipo real que representa un acumulador. Este se utiliza cuando
debemos obtener el total acumulado de un conjunto de cantidades. Generalmente se inicializa
en cero.

PIPROP.INIC
I
EVALUAC
IN DE
PI
PROCESO
PI MODIF. de PI

33


NOMINA
{Calcula el total de la nomina de un grupo de 10
empleados}
{I variable de tipo entero. SUE y NOMINA tipo
real}

Variables
entero i,
real SUE, NOMINA
1. Inicio
2. Hacer Nomina 0 e I 1
3. Repetir con I desde 1 hasta 10
Leer SUE
Hacer NOMINA NOMINA + SUE e
I I + 1
4. {Fin del paso 2}
5. Escribir NOMINA
6. Fin
Diagrama de flujo 3.2

Ejercicios:
Escriba un diagrama de flujo tal que dado un grupo de nmeros naturales positivos, calcule e
imprima el cubo de estos nmeros.
Datos: Num1, num2, num3-1 (NUMi es una variable de tipo entero que representa el numero
entero positivo i, El fin de datos esta dado por -1)

Explicacin de las variables
NUM Variable de tipo entero
CUB: Variable de tipo real. Almacena el cubo de l numero que se ingresa
Inicio
Inicio
NOMINA 0
I 1
I < 10
SUE
NOMINA NOMINA + SUE
I I + 1
NOMINA


34

CUBO
{El programa calcula el cubo de un grupo de
nmeros enteros positivos que se ingresan}
{NUM variable de tipo entero. CUB de tipo
real}
1. Leer NUM
2. Mientras (NUM <> -1) Repetir
Hacer CUB NUM**3
Escribir CUB
Leer NUM
3. {Fin del paso 2}




Elabore el diagrama de flujo

Escriba un diagrama de flujo tal que como datos 270 nmeros enteros, obtenga la suma de las
nmeros impares y el promedio de los nmeros pares WHILE

















1. Hacer SUMPAR 1, SUMIMP 0,
CUEPAR 0 e i 1
2. Repetir con I desde 1 hasta 270
Leer NUM
2.1 SI (NUM <> 0) entonces
2.1.1 Si (-1 ** NUM )> 0
Entonces
Hacer SUMPAR SUMPAR + NUM Y
CUEPAR CUEPAR + 1
Sino
Hacer SUMIMP SUMIMP + NUM
2.1.2 {fin del condicional del paso 2.1.1}
2.2 {fin del condicional del paso 2.1}
Hacer I i + 1
3. {fin del ciclo del paso 2}
4. Hacer PROBAR SUMPAR / CUEPAR
5. Escribir PROBAR Y SUMPAR
Calcule el aumento de sueldo para un grupo de empelados de una empresa teniendo en cuenta el
siguiente criterio WHILE
Si el sueldo es inferior a $ 1000 aumento 15%
Si el sueldo es mayor o igual a $1000 aumento 12%
Imprima el sueldo suevo del trabajador y el total de nomina de la empresa, considerando este
nuevo aumento

35

Elabore diagrama de flujo Elabore lenguaje algortmico

Dado N nmeros enteros como dato haga un diagrama de flujo que: FOR
Obtenga cuantos nmeros ledos fueron mayores que cero
Calcule el promedio de los nmeros positivos
Obtenga el promedio de todos los nmeros
Elabore diagrama de flujo Elabore lenguaje algortmico


36

Declaracin variables
Enteros Vchi, Vmed,Vgra, { Vchi, Vmed,Vgra: acumulan en numero de ventas}
Entero I {I Representa la variable de control de ciclo}
Real TVchi, TVmed, TVgra, TVentaDia { TVchi, TVmed, TVgra,, almacena el total de ventas
de cada tipo}
{ TVentaDia almacena el total de la venta del da}
Real Venta {Indica la venta de I del vendedor}
Cuerpo
Inicio
1. Inicio
2. Hacer Vchi0, Vmed0, Vgra0, TVchi0, Temed0, TVgra0,
3. Escribir Desea realizar una venta S N:
4. Leer Respuesta
5. Repetir con I desde 1 hasta Respuesta<>S
5.1 Escribir introduce el importe de la venta
5.2 Leer Venta
5.3 Si Venta<=200 entonces
Hacer VchiVchi+1 y TVchiTVchi+Venta
Sino
5.4 Si Venta<400 entonces
Hacer VmedVmed+1 y TVmedTVmed+Venta
Sino
Hacer VgraVgra+1 y TVgraTVgra+Venta
{Fin del condicional 5.4}
{Fin del condicional 5.3}
Hacer I I + 1
6 {Fin del condicional del paso 5}
7 TVentaDia TVchi + Temed + TVgra
8 Escribir Se realizaron Vchi ventas menores de $200.00, con un total de TVchi
9 Escribir Se realizaron Vmed ventas entre $200.00 y $400.00, con un total de TVmed
10 Escribir Se realizaron Vgra ventas mayores de $400.00, con un total de TVgra
11 Escribir El importe total de ventas del das es: TVentaDia
12 Fin



37
Elabore Diagrama de Flujo


38
Elabora el diagrama de flujo y lenguaje algortmico de cada caso

En una reciente eleccin hubo cuatro candidatos con identificadores 1,2,3,4). Usted habr de
encontrar, mediante un programa, el nmero de votos correspondiente a cada candidato y el
porcentaje que obtuvo respecto al total de los votantes. El usuario teclear los votos de manera
desorganizada, tal y como se obtuvieron en la eleccin, el final de datos esta representado por un
cero. {WHILE}

Elabore diagrama de flujo Elabore lenguaje algortmico

De una empresa con N empleados, necesitamos obtener el nmero de empleado y sueldo de un
trabajador con el mayor sueldo de la empresa. {FOR}

39
Elabore diagrama de flujo Elabore lenguaje algortmico

En el centro meteorolgico de Argentina se llevan los promedios mensuales de las lluvias cadas en
las principales regiones cerealeras del pas. Existen tres regiones importantes denominadas NORTE,
CENTRO y SUR. Haga un diagrama de flujo para calcular lo siguiente. {WHILE}
El promedio anual de la regin centro
El mes y registro con menor lluvia en la regin sur
La regin con mayor lluvia anual (Considere que los registros anuales de las regiones son
diferentes).
Elabore diagrama de flujo Elabore lenguaje algortmico
40
En un estadio se tienen 5 tipos diferentes de localidades, las cuales se identifican por una clave
numrica que es un valor comprendido entre 1 y 5. Los precios de cada localidad y los datos
referentes a las ventas de boletos para el prximo juego se proporcionan como sigue:

Haga un programa que:
Lea los precios,
Lea los datos de las ventas de boletos
imprima para cada venta, la clave, la cantidad y el importe total de los boletos vendido es esta
venta
Calcule e imprima la cantidad de boletos vendidos de cada tipo
Calcule e imprima la recaudacin total del estadio
Elabore diagrama de flujo Elabore lenguaje algortmico



41
Arreglos
Objetivo: Al finalizar el participante aplicara los arreglos en algoritmos

n array es una coleccin de variables del mismo tipo que se referencia por un nombre
comn. A un elemento especfico de un array se accede mediante un ndice.

Concepto y clasificacin de arreglos
Objetivo: Al finalizar el participante definir el concepto de arreglos
Un arreglo se define como una coleccin fuinita, homognea y ordenada de elementos
Finita: Todo arreglo tiene un lmite, es decir, se debe determinar cual ser el nmero mximo de
elementos que podrn formar parte del arreglo
Homognea: todos los elementos de un arreglo son del mismo tipo (enteros, reales) pero nunca una
combinacin d estos.
Ordenada: Se puede determinar cual es el primer elemento, el segundo y el n-esimo
elemento.

Su caracterstica principal es que puede almacenar N elementos del mismo tipo y adems permite el
acceso a cada uno de estos elementos. As se distinguen dos partes en los arreglos.

los componentes
los ndices
Los componentes hacen referencia a los elementos que componen o forman el arreglo. Es decir son
los valores que se almacenan en cada una de sus casillas. Los ndices, por otra parte, son los que
permiten acceder a los componentes del arreglo en forma individual. Para hacer referencia a un
componente de un arreglo se necesitan:
el nombre del arreglo
el ndice del elemento


Lucha por tus ideales
Unidad
Asignacin
4
U
42


Arreglo palabras


Definicin de arreglos:
ident_arreglo = ARREGLO [limitinf. limitsup] DE tipo

palabras = ARREGLO [0..5] DE cadena de caracteres

limitinf . . . . . limitsup: Con estos se declara el tipo de los ndices as como el nmero de
elementos que tendr el arreglo. (tipo carcter, entero, etc. cualquier tipo ordinal) ejemplo:
1..10 a..f
Tipo: declara el tipo de datos para todos los elementos del arreglo. El tipo de los elementos
no tiene que ser necesariamente el mismo de que el de los ndices. (cualquier tipo: entero,
carcter, cadena de carcter, etc.)
[ ] se utilizan para indicar el ndice del arreglo


OPERACIONES CON ARREGLOS
Lectura / Escritura
asignacin
actualizacin:
- Insercin
- eliminacin
- modificacin
Ordenacin
Bsqueda

LECTURA

El proceso relectura de un arreglo consiste en leer y asignar un valor a cada uno de sus elementos

Leer ARRE [1]
Leer ARRE [2]
.
.
.
Leer ARRE [5]


nombre[0] nombre[1] nombre[2] nombre[3] nombre[4] nombre[5]

43




Escritura
Se debe escribir el valor de cada uno de los componentes. supngase que se desea escribir los p
rimeros componentes del arreglo ARRE en forma consecutiva. Los pasos a seguir son:

Asignacin
En general no es posible asignar directamente un valor a todo el arreglo, sino que se debe asignar el
valor deseado a cada componente. en seguida se analizan algunos ejemplos de asignacin. En los
dos primeros casos se asigna un valor a una determinada casilla del arreglo

ARRE [1] 120
ARRE [3] ARRE [1]/4

En el tercer caso se asigna el 0 a todas las casillas del arreglo.


Actualizacin
En un arreglo se pueden insertar, eliminar y/o modificar elementos. Para ello se debe tener en
cuenta si el arreglo esta ordenado o desordenado, es decir, si sus componentes respetan algn orden
entre s

Ejercicios

1) Pida por teclado la base (dato real) de un tringulo.
2) Pida por teclado la altura (dato real) de un tringulo.
3) Calcule el rea del tringulo.
4) Muestre por pantalla el resultado (dato real).*/

#include <stdio.h>
#include <conio.h>
int main(){
float altura, area, base;
clrscr();
printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );
area = base * altura / 2;
printf( "El area del triangulo es: %f", area );
getch();
return 0;
}

44

/*
1) Pida por teclado la base (dato real) de un tringulo.
2) Pida por teclado la altura (dato real) de un tringulo.
3) Calcule el rea del tringulo.
4) Muestre por pantalla el resultado (dato real).
Nota: la operacin aritmtica se deber hacer directamente
en la instruccin de impresin a pantalla*/

#include <stdio.h>
#include <conio.h>
int main()
{
float altura, base;
clrscr();
printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );

printf( "El area del triangulo es: %f", base * altura / 2 );
getch();
return 0;
}

/*Divisin entera (Entrada y salida estndar - Lenguaje C)

/* 1) Pida por teclado dos nmeros (datos enteros).
2) Muestre por pantalla el resultado de realizar
la divisin entera del primer nmero introducido
por el usuario entre el segundo, y el modulo. */

#include <stdio.h>
#include <conio.h>
int main()
{
int dividendo, divisor, cociente, modulo;
clrscr();
printf( "Introduzca dividendo (entero): " );
scanf( "%d", &dividendo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );

cociente = dividendo / divisor;
modulo = dividendo % divisor;

45

printf( "%d div %d = %d , Modulo = %d ",dividendo, divisor, cociente, modulo );

printf("\nPresione cualquier tecla para continuar");
getch();
return 0;
}

/* convierta venda dolares al precio del momento*/

#include<conio.h>
#include<stdio.h>
main()
{
float precio, pdollar, dollar;
clrscr();

printf("CASA DE CAMBIO\n");
printf("Cuantos dolares a comprar: ");
scanf("%f",&dollar);
printf("Teclea el costo del dolar frente al peso: ");
scanf("%f",&pdollar);

precio = dollar * pdollar;

printf("El pago es de= %f pesos",precio);
printf("\n\n\nPresione cualquier tecla para terminar");
getch();
}
46
Introduccin a los Lenguajes de
Programacin

Objetivo: Al finalizar el modulo el participante usara software adecuado para la creacin e
programas especficos

es un lenguaje estructurado de nivel medio hecho para programadores, la caracterstica
distintiva de un lenguaje estructurado es la compartimentalizacin de cdigo y datos, se trata
de la capacidad de un lenguaje de seccionar y esconder del resto del programa toda la
informacin y todas las instrucciones necesarias para levar acabo una determinada tarea

Ambientes de Lenguajes de programacin

Objetivo: Identifica el tipo de software a emplear para realizar un programa


Un compilador lee el programa entero y lo convierte a cdigo objeto, que es una traduccin del
cdigo fuente del programa a una forma que puede ser ejecutada directamente por la computadora.
Una vez que el programa esta compilado, las lneas de cdigo fuente dejan de tener sentido durante
la ejecucin del programa.

Forma de un programa en C

declaraciones globales
int main (lista de parmetros)
{
tipo_devuelto funcin1 (lista de parmetros)
{

secuencias de instrucciones
}
tipo_devueklto funcin2 (lista de parmetros)
{
secuencia de instrucciones)
U. A.
5
C


47

}
.
.
.
tipo_devuelto funcinN (lista de parmetros)
{
secuencia de instrucciones)
}


Compiladores

Turbo C++ 3.0

Este manual supone que has descargado el siguiente archivo:

Turbo C++ 3.0
(tc3.zip)

Instalacin del compilador
1. Descomprime el archivo en la ruta: C:\TC
2. Ejecuta el programa: INSTALL.EXE, y, nos aparece la siguiente ventana:
3. Debemos pulsar Intro para continuar. Entonces nos aparecer otra ventana.
4. Ahora debemos escribir la letra de la unidad donde se encuentran los ficheros de instalacin.
Si stos
5. se encuentran en la unidad C, pulsaremos la tecla C y despus Intro:
6. A continuacin se muestra otra ventana en la que aparece por defecto el directorio donde se
7. encuentran los archivos de instalacin. Lo normal ser que aqu simplemente pulsemos Intro
para
8. continuar.
9. La siguiente ventana nos indica en primer lugar el directorio donde se instalar Turbo C++,
que
10. siguiendo el ejemplo ser: C:\TC Con los cursores nos desplazamos hasta la opcin Start
11. Installation y pulsamos Intro, que iniciar la instalacin.
12. Mientras se instala, en la parte inferior de la ventana aparecern los ficheros que se estn
copiando,
13. como se muestra en la siguiente figura:
14. Una vez se hayan copiado todos los archivos, saldr una un cuadro (como el que se muestra
bajo este
15. prrafo) que nos informa de los ltimos pasos de la instalacin. Pulsamos Intro para
continuar.
16. Tras pulsar Intro nos aparece el contenido del fichero "leeme" de Turbo C++:
17. Para finalizar pulsamos Escape.
18. La instalacin ha concluido.


48
19.

Segn los pasos realizados en este ejemplo de instalacin, el programa Turbo C++ es TC.EXE y se
encuentra en C:\TC\BIN
Esta versin de Turbo C-C++ 3.0 para D.O.S, por lo tanto DEBE ser copiado en el directorio
RAIZ del disco rgido (c:\) y NO dentro de c:\archivos de programas\, porque cuando se intente
ejecutar el compilador C, emitir un mensaje de error, indicando queno encuentra las libreras. Ya
que por defecto buscar a las mismas en c:\tc.

El resultado de la instalacin debe ser el siguiente:
C:\TC
|
|__BGI
|
|__BIN
|
|__INCLUDE
|
|__LIB

Configuracin del modo grfico
Esto es para que no tengas problemas al compilar los programas que usan funciones grficas.
1. Ejecuta el programa: TC.EXE, que est en: C:\TC\BIN
2. Ve a: Options -> Linker -> Libraries, y dentro de este marca la opcin Graphics library, entonces
pulsa el botn OK
Una vez creado tu programa debers compilarlo con la combinacin de teclas Alt + F9, y una vez
que no contenga errores debers ejecutarlos con la combinacin de teclas Control + F9.

C++Builder
Para hacer un programa en C++ Builder, en lenguaje c siempre se deben de seguir los siguientes
pasos:
1. Se ingresa al programa dando doble clic en el icono
2. Una vez en el programa ingresamos al
men File, opcin New y
seleccionamos Console Wizard, en el

49
siguiente cuadro seleccionar Console y presionar finish.


3. Capturar en la pagina que aparece, nuestro cdigo. (borrar las instrucciones que parecen por default)
4. para guardar el programa en el men File, Save Proyect As, indicas el nombre en la ventana que aparece, indicas la ruta donde
deseas guardarlo.




Prueba del compilador

1. Abre el programa: TC.EXE, vas a File -> New, esto crea un nuevo
archivo
O haga lo indicado en C++ builder

2. y escribe lo siguiente en el:
#include <stdio.h>
#include <conio.h>
void main( ) {
printf("Hola mundo");
getch();
}
3. Guarda el programa con el nombre: hola (automticamente se aade la
extensin .CPP al archivo en Turbo C++ 3.1; en Buider se agrega la
extensin .bpr
4. Compila y ejecuta el programa, presionando: CTRL+F9 F9 segn
sea el caso, entonces aparecer en pantalla el mensaje:


50
Expresiones
Objetivo: Al finalizar el modulo el participante ser capaz de escribir sentencias y expresiones
en el lenguaje de programacin designado

n sentido mas general, podemos decir, que una instruccin es una parte del programa que puede
ejecutarse. Es decir, una instruccin especifica una accin. C clasifica las instrucciones en estos
grupos: Seleccin, Iteracin, Salto, Etiquetado, Expresin y Bloque. Las cuales se describirn
ms adelante

Tipos de expresiones
Objetivo: Escribir sentencias y expresiones en el lenguaje de programacin designado

Tipos de datos bsicos
char
int
float
double
void

Nombres de los identificadores
En C, los nombres de las variables, funciones, etiquetas y otros objetos definidos por el usuario de
denominan identificadores. La longitud de un identificador puede variar entre uno y varios
caracteres.
*el primer carcter debe ser una letra o un smbolo de subrayado y los caracteres siguientes pueden
ser letras, letras nmeros o smbolos de subrayado

En C las minsculas y la maysculas se tratan como distintas, Ej. Cuenta, Cuenta y CUENTA son
tres identificadores diferentes.

Una variable es una posicin de memoria con nombre que se usa para mantener un valor que puede
ser modificado por el programa. Todas las variables deben de estar declaradas antes de poder ser
utilizadas.
U. A.
6
E


51

Declaracin de variables

tipo lista_de_variables;

int i, j, y;
short int nio;
unsigned int, u;
etc..

Donde se declaran las variables


Existen sitios basicvos donde se pueden declarer las variables:
Dentro de las funciones (variables locales)
En ladefinicin de parmetros de funciones ( parmetros formales)
Fuera de todas las funciones (variables globales)


Variables locales
Las variables locales pueden ser utilizadas solo en las instrucciones que estn dentro del bloque en el
que han sido declaradas. Estas variables solo existen mientras se esta ejecutando el bloque de
cdigo en el que fueron declaradas, sea se crea al entrar y se destruye al salir, sea que puede haber
dos variables con el mismo nombre en diferente bloque de cdigo y cada una ser distinta de la otra.

Recuerde que un bloque de cdigo comienza con una llave de apertura y termina con una llave de
cierre.
Por costumbre las variables se declaran despus de la llave de apertura y antes de cualquier
instruccin, sin embargo pu8ede hacerse en cualquier lnea, antes de que esta se utilizada.
Las variables locales no pueden retener sus valores entre llamadas, sin embargo se puede indicar al
compilador que retenga sus valores mediante el uso del modificador static.


Parmetros formales
Si una funcin va a usar argumentos, debe declarar las variables que van a aceptar los valores de los
argumentos. Esas variables son los parmetros formales de la funcin. Se comportan como
cualquier otra variables local de la funcin, sus declaraciones se dan tras el nombre de la funcin y
entre parntesis.

#/* Devuelve 1 si c es parte de la cadena s; si no, 0 */
Int esta_en (char *s, char c)
{



52

While (*s)
if (*s == c) return 1;

else s++;
return 0;
}

Variables globales

Se conocen a lo largo de todo el programa y se pueden usar en cualquier parte del cdigo. Adems
mantiene sus valores durante toda la ejecucin del programa, pueden ser accedidas por cualquier
expresin, independientemente de la funcin.
Lo mejor es declara todas las variables globales al principio del programa antes de la funcin main.

Const
Las variables tipo const no pueden ser modificadas por el programa, sin embargo a una variable
const se le puede dar un valorinicial. El compilador es libre de situar las variables de este tipo en
memoria de solo lectura.

Especificadores de formato
Cuando a la funcin printf se le pase una lista de argumentos (expresiones), se debe escribir un
especificador de formato por cada argumento. En la printf, los especificadores de formato
establecen el formato de salida por pantalla de los argumentos. La forma ms sencilla de escribir un
especificador de formato es con el carcter tanto por ciento (%) seguido de un carcter de conversin
que indique el tipo de dato del argumento. Los especificadores de formato mas utilizados que se
pueden usar en la funcin printf:
%c Salida de un carcter
%d salida de un numero entero
%f salida de un nmero real
%s salida de una cadena

Un programa escrito en C est compuesto por una o ms funciones. Como ya es sabido, una
funcin es un programa que sirve para realizar una tarea determinada, por ejemplo, la funcin scanf
sirve para leer datos desde el teclado.

Existe una funcin que est presente en todos los programas escritos en C, su misin es marcar el
inicio y fin de la ejecucin de cada uno de ellos; es la funcin principal, la primera que se ejecuta; es
la funcin main. Su sintaxis "bsica" es:
int main()
{
<bloque_de_instrucciones>}

53
Todas las funciones de la biblioteca estndar de C son subprogramas que ya estn compilados, es
decir, junto a cualquier compilador de C se acompaan los cdigos objeto de todas las funciones de
su biblioteca estndar, pero no sus cdigos fuente. Por tanto, aunque no sea posible modificar sus
cdigos fuente, s se puede hacer uso de dichas funciones en cualquier programa. Por ejemplo, se
puede llamar a la funcin printf para que muestre por pantalla el saludo "Hola mundo".
printf( "Hola mundo" );

Dentro de los parntesis "()" de la funcin printf, se debe escribir, entre comillas dobles ("), el
mensaje o cadena de caracteres que se desea mostrar por pantalla.

Obsrvese que, despus del carcter cerrar parntesis ")" se ha escrito un punto y coma (;), esto
implica que la llamada a la funcin printf es considerada como una instruccin de expresin

Para que el compilador conozca la declaracin de la funcin printf, hay que utilizar la directiva del
preprocesado #include:

#include <stdio.h>

En este caso, la directiva #include indica, al preprocesador que debe incluir, antes de la
compilacin, en el cdigo fuente del programa, el contenido del archivo <stdio.h> (stdio, Standard
Input/Output). En dicho archivo estn escritas las declaraciones de todas las funciones de entrada y
salida estndar de la biblioteca estndar de C, como printf. Si el compilador no sabe quien es
printf, no podr generar el cdigo objeto del programa.

Toda funcin retorna un valor.
return 0;

Esto quiere decir que la funcin main devuelve el valor 0. Precediendo a main se ha escrito la
palabra reservada int, indicando as, que la funcin retornar un valor de tipo int (entero).

int main()
En general, la instruccin return suele ser la ltima del bloque de instruccines de la funcin main.
Al retornar el valor 0, indica (informa al sistema operativo) que el programa finaliz correctamente,
es decir, sin producirse ningn error en su ejecucin. Cuando la funcin main devuelva un valor
distinto de cero, esto siginificar que se ha producido algn error en la ejecucin del programa, o
que ha ocurrido algo fuera de lo normal.


54
La instruccin return es una de las instrucciones de control que existen en C. Por tanto, es una
palabra reservada. Despus del valor de retorno (que es una expresin) se debe escribir un punto y
coma (;). La sintaxis de la instruccin return es:
return <expresin>;
La sintaxis "bsica" de un programa escrito en c es:
[ <directivas_del_preprocesador> ]

int main()
{
<bloque_de_instrucciones>
}

Tipos de datos basicos (simples predefinidos) en c:
Numricos:
Entero (int)
Real (float y double)

Carcter (char)
sin valor (void)

La mayora de los elementos de un programa se diferencian entre s por su nombre. Por ejemplo, los
tipos de datos bsicos en C se nombran como:
char, int, float, double y void

Cada uno de ellos es un identificador. Un identificador es el nombre que se le da a un elemento de un
algoritmo (o programa). Por ejemplo, el tipo de dato int hace referencia a un tipo de dato que es
distinto a todos los dems tipos de datos, es decir, los valores que puede tomar un dato de tipo
entero, no son los mismos que los que puede tomar un dato de otro tipo.

Los identificadores char, int, float, double y void estn predefinidos, forman parte del lenguaje C.
No obstante, en el cdigo de un programa tambin pueden existir identificadores definidos por el
programador. Por ejemplo, un programa puede utilizar variables y constantes definidas por el
programador.

En C, a la hora de asignar un nombre a un elemento de un programa, se debe tener en cuenta que
todo identificador debe cumplir las siguientes reglas de sintaxis:
1. Consta de uno o ms caracteres.

55
2. El primer carcter debe ser una letra o el carcter subrayado (_), mientras que, todos los
dems pueden ser letras, dgitos o el carcter subrayado (_). Las letras pueden ser minsculas o
maysculas del alfabeto ingls. As pues, no est permitido el uso de las letras '' y ''.
3. No pueden exitir dos identificadores iguales, es decir, dos elementos de un programa no
pueden nombrarse de la misma forma. Lo cual no quiere decir que un identificador no
pueda aparecer ms de una vez en un programa.
De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el
carcter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni diresis.

#define y const
La directiva #define indica al preprocesador que debe sustituir, en el cdigo fuente del programa,
todas las ocurrencias del <nombre_de_la_constante> por la <secuencia_de_caracteres>, antes de la
compilacin.

Ejemplo 2: Dos constantes muy habituales son:

#define PI 3.141592
#define NUMERO_E 2.718281

En programacin es una buena prctica escribir los identificadores de las constantes en maysculas,
de esta forma es ms fcil localizarlos en el cdigo de un programa. Ntese que, despus de la
declaracin de una constante simblica no se escribe un carcter punto y coma (;), cosa que s se
debe hacer al declarar una variable.

Por otra parte, no se puede declarar ms de una constante simblica en una misma lnea de cdigo.

Ejemplo 3: Para declarar las constantes simblicas PI y NUMERO_E, no se puede escribir:

#define PI 3.141592, NUMERO_E 2.718281

Por otra parte, en C, es posible declarar una variable indicando que su valor es inalterable. Para ello,
se utiliza el cualificador const.

Ejemplo 4: Uso de const:

const int temperatura = -5;

Operadores Aritmticos
+ Suma
- Resta
* Multiplicacin
/ Divisin
/ Divisin (div)
% Modulo


56

+ Signo mas
- Signo menos

Operadores logicos
&& Conjuncion
|| Disyuncin
! Negacin

Programacin de expresiones
Programacin de expresiones
Objetivo: Creara programas que manipulen datos de forma especfica

Ejercicios:

/*Escribir un programa (en lenguaje C) que:
1) Pida por teclado la base (dato real) de un tringulo.
2) Pida por teclado la altura (dato real) de un tringulo.
3) Calcule el rea del tringulo.
4) Muestre por pantalla el resultado (dato real).
Nota: la operacin aritmtica se deber hacer directamente
en la instruccin de impresin a pantalla*/

#include <stdio.h>
#include <conio.h>
int main()
{
float altura, area, base;

printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );

area = base * altura / 2;

printf( "El area del triangulo es: %f", area );
getch();
return 0;
}

Ora forma de hacerla optimizando cdigo.

#include <stdio.h>

57
#include <conio.h>
int main()
{
float altura, base;

printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );

printf( "El area del triangulo es: %f", base * altura / 2 );
getch();
return 0;
}

/*Elaborar un programa que
convierta venda dolares al precio del momento*/

#include<conio.h>
#include<stdio.h>
main(){
float precio, pdollar, dollar;
clrscr();

printf("CASA DE CAMBIO\n");
printf("Cuantos dolares a comprar: ");
scanf("%f",&dollar);
printf("Teclea el costo del dolar frente al peso: ");
scanf("%f",&pdollar);

precio = dollar * pdollar;

printf("El pago es de= %f pesos",precio);
printf("\n\n\nPresione cualquier tecla para terminar");
getch();
}
Ejercicios:
1. Elabore un programa en lenguaje C que pida por teclado el nombre y la edad e imprima esos
datos.

2. Escribir un programa (en lenguaje C) que:
Pida por teclado dos nmeros (datos enteros).
Muestre por pantalla el resultado de realizar la divisin entera del primer nmero
introducido por el usuario entre el segundo, y el resto.


58
Sentencias de Control
Objetivo: Al trmino de la modulo el participante creara programas que permitan
la bifurcacin de su control en funcin a situaciones especificas por medio de la
inclusin de sentencias de control

contempla dos tipos de instrucciones de seleccin: if y switch. La sentencia if, tiene variaciones
como el if-else, y los if anidados.


Estructuras if y switch
Objetivo: El participante explicar las sentencias de los lenguajes de programacin

Forma general de la instruccin if es

if (expresin) instruccin;
else instruccin;

donde instruccin puede ser una instruccin simple, un bloque de instrucciones o nada ( en caso de
instrucciones vacias) . La clusula else es opcional.

si la expresin es cierta( cualquier valor que no sea cero 0), se ejecuta la instruccin o el bloque de
instrucciones que constituye el objetivo del if; en elcaso contrario se ejecuta la instruccin o el bloque de
instrucciones que constituye el objeto del else, si existe. Recuerde que solo se ejecuta el cdigo asociado al
if o al else, nunca ambos.

Ejemplo.
/*Mostrar si el numero es par o impar*/
#include<conio.h>
#include<stdio.h>
main()
{
int num;
U. A.
7
C

59
clrscr();
printf ("Dame numero: \n");
scanf("%d",&num);
if (num %2 == 0)
printf("Numero par");
else
printf("numero impar");
getch();
}

if anidados
un if anidado es un if que es el objetivo de otro if o else. Los if anidados son muy comunes en
programacin. en un if anidado, una instruccin else siempre se refiere al if mas prximo que este en el
mismo bloque que el else y que no este ya asociado con un else. Por ejemplo:

/*utilizando if anidados
deber mostrar en pantalla el numero mgico*/

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

int main (void)
{
int magico; //inicializacin de numero mgico
int intento; //intento del usuario

magico = rand(); // genera nmero mgico
printf("adivine el nuemro magico");
scanf("%d", &intento);

if (intento == magico){
printf("\n***C O R R E C T O ***");
printf("%d es el numero magico \n", magico);
}
else{
printf("\n***I N C O R R E C T O ***");
if (intento >magico)
printf ("\ndemasiado alto");
else
printf("\ndemasiado bajo");
getche();}
return 0;
}


60

Otro ejemplo de if anidados
#include <stdio.h>
#include <conio.h>
int main(void) {
int a,b,c;
printf("i9ntroduce 1 nuemros enteros");
scanf("%d", &a);
printf("i9ntroduce 1 nuemros enteros");
scanf("%d", &b);
printf("i9ntroduce 1 nuemros enteros");
scanf("%d", &c);
if (a>b){
if (a>c){
if(b>c){
printf("%d%d%d", a,b,c); }
else{
printf("%d%d%d", a,c,b); }
}else
printf("%d%d%d", c,a,b);}
else{
if (b>c){
if (a>c){
printf("%d%d%d", b,a,c);}
else{
printf("%d%d%d", b,c,a);}}
else{
printf("%d%d%d", c,b,a);
}
}

getch();
return 0;
}


Switch


C incorpora una instruccin de seleccin mltiple, denominada switch, que compara sucesivamente el
valor de una expresin con una lista de constantes enteras o de caracteres. Cuando se encuentra una
correspondencia, se ejecutan las instrucciones asociadas con la constante. La forma general de la
instruccin switch es



61
switch (expresin){
case constante1:
secuencia de instrucciones
break;
case constante2:
secuencia de instrucciones
break;
case constante3:
secuencia de instrucciones
break;
.
.
.
.
default:
secuencia de instrucciones
}

Ejemplo:
/*Escribir un programa (en lenguaje C) que:
1) Muestre el listado de las habitaciones de la casa rural.
2) Pida por teclado el nmero (dato entero) asociado a una habitacin.
3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.
Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin, se mostrar el mensaje:
"ERROR: <nmero> no est asociado a ninguna habitacin.".*/

#include <stdio.h>
#include <conio.h>

int main()
{
int numero;

printf( "Listado de habitaciones:" );
printf( "\n\n1. Azul" );
printf( "\n2. Roja" );
printf( "\n3. Verde" );
printf( "\n4. Rosa" );
printf( "\n5. Gris" );
printf( "\n\nIntroduzca numero de habitacin: " );

scanf( "%d", &numero );




62


switch ( numero )
{
case 1 : printf( "La Azul tiene 2 cama y esta en la primera planta." );
break;
case 2 : printf( "La Roja tiene 1 cama y esta en la primera planta." );
break;
case 3 : printf( "La Verde tiene 3 cama y esta en la segunda planta." );
break;
case 4 : printf( "La Rosa tiene 2 cama y esta en la segunda planta." );
break;
case 5 : printf( "La Gris tiene 1 cama y esta en la tercera planta." );
break;
default : printf( "ERROR: %d no esta asociado a ninguna habitacin.", numero );
}
getch();
}

Estructuras FOR y WHILE
Objetivo: El participante Explicar la lgica de las estructuras cclicas

El formato general del bucle for de c se encuentra de una forma o de otra en todos los lenguajes de
programacin. En C, sin embargo, proporciona una potencia y flexibilidad sorprendentes.

La forma general para la instruccin for es

for(inicializacin;condicion;incremento) instruccin;

Por ejemplo, el siguiente programa usa un bloque for para imprimir los nmeros del 1 al 100 en pantalla:

#include<stdio.h>
int main()
{
int x;
for(x=1; x<=100; x++)
printf(%d, x);
return 0;
}

El bucle WHILE
El Segundo bucle disponible en C es while, su forma general es

while(condicin) instruccin;

63

donde instruccin es una instruccin vaca, una instruccin simple o un bloque de instrucciones. La
condicin puede ser cualquier expresin y cualquier valor distinto de 0 es cierto. El bucle itera mientras la
condicin es cierta. Cuando la condicin se hace falta, el control del programa para la lnea
inmediatamente siguiente al cdigo del bucle.
Ejemplo:
/*
Elaborar un programa que
convierta venda dlares al precio del momento*/

#include<conio.h>
#include<stdio.h>
main()
{
float precio, pdollar, dollar;
int r;

clrscr();
r=1;
while (r==1){
printf("CASA DE CAMBIO\n");
printf("Cuantos dolares a comprar: ");
scanf("%f",&dollar);
printf("Teclea el costo del dolar frente al peso: ");
scanf("%f",&pdollar);

precio = dollar * pdollar;

printf("El pago es de= %f pesos",precio);
printf("\nOTRA VENTA?? 1 o 0: ");
scanf("%d", &r);
}
if (r==0){
printf("\n\n\nPresione cualquier tecla para terminar");
}
getch();
}

El bucle do-while}
A diferencia de los bucles for y while, que analizan la condicin del bucle al principio, el bucle do-while
comprueba la condicin al final. esto significa que l bucle do-while siempre se ejecuta al menos una vez.
La forma general del bucle do-while es


64

do{
instruccin;
}while8condicin;

ejemplo:

/* Programa 2
Escribir un programa (en lenguaje C) que:
1) Pida por teclado la base (dato real) de un tringulo.
2) Pida por teclado la altura (dato real) de un tringulo.
3) Calcule el rea del tringulo.
4) Muestre por pantalla el resultado (dato real).
Nota: la operacin aritmtica se deber hacer directamente
en la instruccin de impresin a pantalla*/

#include <stdio.h>
#include <conio.h>
int main()
{
float altura, base;
int respuesta;
clrscr();
do{
printf( "Introduzca base: " );
scanf( "%f", &base );
printf( "Introduzca altura: " );
scanf( "%f", &altura );

printf( "El area del triangulo es: %f", base * altura / 2 );
printf("\ndeseas hacer otro calculo??? teclea 1 o 0: ");
scanf("%d", &respuesta);
}while (respuesta!=0);
if (respuesta==0){
printf("BYE");}
getch();
return 0;
}

Ejercicios:

1.-
Escribir un programa (en lenguaje C) que:
1) Muestre el listado de las habitaciones de la casa rural.
2) Pida por teclado el nmero (dato entero) asociado a una habitacin.

65
3) Muestre por pantalla la planta y el nmero de camas de la habitacin seleccionada.
Nota: Si el nmero introducido por el usuario, no est asociado a ninguna habitacin,
se mostrar el mensaje: "ERROR: <nmero> no est asociado a ninguna habitacin.".

2.-
Elabore un programa en lenguaje C que calcule l nomina de 10 empleados.

3.-
Elabore un programa en lenguaje c que tome las siguientes consideraciones:
De cuatro candidatos con identificadores 1,2,3,4,
Encontrar el numero de votos correspondientes a cada uno
Y el porcentaje respecto al total de votos de cada uno. El final de
La eleccin se representa por un cero.


66
Arreglos en Programacin
Objetivo: Al finalizar el participante creara programas con aplicaciones de arreglos
de una y dos dimensiones

n array es una coleccin de variables del mismo tipo que se referencia por un nombre comn. A
un elemento especifico de un array se accede mediante un ndice.. En C todos los arrays constan
de posiciones de memoria contiguas. La direccin ms baja corresponde al primer elemento y la
direccin ms alta al ltimo elemento. Los arrays pueden tener de una a varias dimensiones. El
array ms comn es la cadena.

Que simplemente es un array de caracteres terminado por un nulo. Los arrays y los punteros estn
ntimamente relacionados, una explicacin de uno de ellos siempre se refiere a los otros. La forma
general de declaracin de un arrays unidimensional es:
Tipo nombre_de_variable [tamao];

Arreglos en Programacin
Objetivo: El participante creara programas con aplicaciones de arreglos de una y dos dimensiones

Los arrays deben declararse explcitamente para que as el compilador pueda reservar espacio en
memoria para ellos.
Aqu tipo declara el tipo base del array, que es el tipo de cada elemento del array.
El valor del tamao indica cuantos elementos mantendr el array.
En C todos los arrays tienen cero como ndice de su primer elemento. Ejemplo. si se declara
un array char p[10]; es desde p[0] a p[9] o sea tiene 10 elementos.

Un elemento se puede acceder indexando el nombre del array. Esto se hace colocando el ndice del
elemento entre corchetes justo detrs del nombre del array. Por ejemplo:

double balance [100]; // declaracin de array
balance[3] = 12.23; // asignacin al elemento 3 (o sea ndice 2) de balance el valor12.23

U. A.
8
U

67

Arreglos Unidimensionales
La forma general de declaracin de un array unidimensional es

tipo nombre_de_variabl[tamao];

Ejemplo:
#include<stdio.h>
int main(void){
int x[100];
int t;

for(t=0;t<100;++t)
x[t]=t;
for(t=0;t<100;++t)

printf(%d, x[t]);
return 0;
}

Se puede generar un puntero al primer elementos de un array simplemente especificando el nombre
del array, sin ndice. Por ejemplo, dado:

int ejemplo [10];

se puede generar un puntero al primer elemento usando simplemente el nombre ejemplo. Como se
puede ver, el siguiente fragmento de programa asigna a p la direccin del primer elemento de
ejemplo.

int *p;
int ejemplo[10];
p=ejemplo; //es lo mismo que &ejemplo[0];


Arrays bidimensionales
C admite multidimensionales. La forma ms simple de un array multidimensional es el alrray
bidimensional. Un array bidimensional e esencialmente un array de arrays unidimensionales. Para declarar
un array d de enteros bidimensional de tamao 10,20 se escribir

Prstese atencin a la declaracin, Muchos otros lenguajes de computadora utilizan comas para separar las
dimensiones del array; C coloca dimensin en su propio conjunto de corchetes.

De forma similar, para acceder al punto 1,2 del array d se escribir

d[1][2]


68

El siguiente ejemplo carga un array bidimensional con los nmeros del 1 al 12 y luego los imprime fila a
fila.

#include <stdio.h>
#include <conio.h>
int main(void)
{
int t, i, num[3][4]
;

for(t=0; t<3; ++t)
for (i=0; i<4; ++i)
num[t][i]= (t*4)+i+1;
/*ahora imprimirlos*/
for(t=0; t<3; ++t){
for (i=0; i<4; ++i)
printf("%3d", num[t][i]);
printf("\n");
}
getch();
return 0;
}

En este ejemplo num[0][0] tiene el valor 1, num[0][1] tiene el valor 2, num[0][2] tiene el valor 3, y asi
sucesivamente. El valor de num[2][3] tiene el valor 12. Se puede representar el array como sigue.
num [t] [i]
fila columna
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
Los arrays bidimensionales se almacenan en matrices fila-columna. En las que el primer ndice indica la
fila y el segundo indica la columna.

Ejemplo de array bidimensional

Programa que hace una array de dos dimensiones y lo llena e imprime.
#include<stdio.h>
#include<conio.h>
#define DIAS 2
const int vendedores=2;

69
void main(void){
int v; /*v=vendedores*/
int d; /*d=dias*/
float total;
float ventas[vendedores][DIAS];
float day[DIAS];
float total_vendedor[vendedores];
v=0;
d=0;
total=0.0;
for(d=0; d<vendedores;d++)
for(v=0; v<vendedores;v++)
// ventas[v][d]=0.0;
*(*ventas+v)+d;
for(d=0;d<DIAS;d++)
// day[d]=0.0;
*(day+d);
for(v=0;v<vendedores;v++)
//total_vendedor[v]=0.0;
*(total_vendedor+v);
for(d=0;d<DIAS;d++)
for(v=0;v<vendedores;v++){
printf("ventas[%d][%d]=?",v,d);
flushall();
// scanf("%f", &ventas[v][d]);
scanf("%f", (*ventas+v)+d);
}
// printf("ventas[0][0]=%6.2f", ventas[0][0]);
printf("\nventas[0][0]=%6.2f", *(*ventas+0)+0);
printf("\nventas[0][1]=%6.2f", *(*ventas+1)+0);
printf("\nventas[1][0]=%6.2f", *(*ventas+0)+1);
printf("\nventas[1][1]=%6.2f", *(*ventas+1)+1);
printf("\nfin");
flushall();
getch();}

Ejercicios:

Elabore un programa en lenguaje c que cree un arreglo unidimensional y pida por teclado los
valores que se e ingresaran, y al final imprima los mismo.

Elabore un programa en lenguaje c que cree un arreglo bidimensional y que le ingrese los
nmeros 2,4, 6 hasta el 24.

70
Funciones
Objetivo: Al finalizar el modulo el participante crear funciones personalizadas en un lenguaje de
programacin

as funciones son bloques constructores de C y el lugar donde se produce toda la actividad del
programa. En este capitulo analizaremos sus caractersticas, incluyendo los argumentos, los
valores devueltos y los prototipos.


Funciones
Objetivo: El participante creara funciones personalizadas en un lenguaje de programacin

Forma general de una funcin

Tipo_dev nombre_de_la_funcion(lista de parmetros)
{
Cuerpo de la funcin
}

Donde:
Tipo_dev Especfica el tipo de dato que devuelve la funcin.
Una funcin puede devolver cualquier tipo de dato
excepto un array
Nombre_de_la_funcion Nombre que se le asignara
(lista de parmetros) Es una lista de nombres de variables separados por
comas con sus tipos asociados. Los parmetros
reciben valores de los argumentos cuando se llama a la
funcin.


U. A.
9
L

71
Una funcin puede no tener parmetros, en cuyo caso la lista de parmetros esta vaca. Una lista de
parmetros vaca se puede especificar explcitamente como tal colocando la palabra clave void entre
los parntesis

En las declaraciones de variables se pueden declarar mltiples variables del mismo tipo mediante
una lista con los nombres de las variables separados por comas. En cambio, en las funciones todos
los parmetros deben declararse individualmente, incluyendo para cada uno tanto el tipo como el
nombre. Es decir, las lista de declaracin de parmetros de una funciones es la siguiente en forma
general:

f(tipo var1, tipo var2, .. Tipo varN)


El cdigo de una funcin es privado a esa funcin, a menos que se haga a travs de una llamada a
esa funcin. El cdigo que comprende el cuerpo de una funcin esta oculto al resto del programa, y
a no ser que se usen datos o variables globales, no puede ser afectado por otras partes del programa
ni afectarlas. Las variables que estn definidas dentrote una funcin son variables locales. La nica
excepcin a esta regla se da cuando la variable se declara con el especificador de clase de
almacenamiento static.

Prototipos de funciones de forma apropiada todas las funciones deben estar declaradas antes de
ser utilizadas, esto normalmente se lleva a cabo mediante los prototipos de funciones.

Forma general de un prototipo de funcin
Tipo nombre _de_la_funcin(tipo parametro1, parametro2, parametroN);

La instruccin return
La instruccin return tiene dos usos. Primero, fuerza una salida inmediata de la funcin en que se
encentra, sea, hace que la ejecucin del programa vuelva al cdigo que llamo a la funcin. En
segundo lugar puede utilizar para devolver un valor

Funciones de tipo void
Uno de los usos de void es el de declarar explcitamente funciones que no devuelven valores. Esto
previene su uso en cualquier expresin y ayuda a descubrir un mal uso accidental.

Lo que devuelve main
La funcin main() devuelve un entero al proceso de llamada, que generalmente es el sistema
operativo. Que main() devuelva un valor es lo mismo que llamar a exit(), con ese mismo valor. Si
main() no devuelve un valor explcitamente, el valor que se pasa al proceso de llamada queda
tcnicamente indefinido. En la practica, la mayora de los compiladores de C devuelven
automticamente 0, aunque no se debe confiar en ello cuando la portabilidad sea un aspecto
importante.

Ejemplo


72
Estas lneas de cdigo crean una funcin llamada multiplica, sin embargo solo la estamos creando:

void multiplica(void){
result= NUM1 * num2;
}

La siguiente lnea, es el prototipo de la funcin multiplica

void multiplica(void);

Y en el siguiente programa se invoca a la funcin multiplica:

void main(void){
clrscr();
multiplica();
printf("resultado=%8.2f",result);
printf("\nfin");
flushall();
getch();
}

si deseamos estructurar dicho programa completo quedara de la siguiente manera.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

#define NUM1 3
const float num2 = 2.5;
float result;

void main(void){
clrscr();
multiplica();
printf("resultado=%8.2f",result);
printf("\nfin");
flushall();
getch();
}

void multiplica(void){
result= NUM1 * num2;
}


Si deseamos pasar parmetros anuesta funcin, una opcin seria:

73

float multi(float a, float *b); //prototipo de funcion
void main(void){
float res;
clrscr();
res = multi(n1, &n2);
printf("resultado=%8.2f",res);
printf("\nfin");
flushall();
getch();
}
float multi(float a, float *b){
return a * (*b);
}




74
Punteros
Objetivo: Al finalizar el modulo el participante asignara y manipulara valores a variables mediante
contenidos de memoria

n puntero es una variable que contiene una direccin de memoria. Esa direccin es la posicin
de otro objeto (normalmente otra variable) en memoria. Por ejemplo, una variable contiene la
direccin de otra variable, entonces se dice que la primera variable apunta a la segunda


Punteros
Objetivo: El participante aplicar y manipulara valores a variables mediante contenidos de memoria

.

Variables Puntero
Si una variable va a ser puntero, entonces tiene que declararse como tal. Una declaracin de
puntero consiste un tipo base, un * y el nombre de la variable. La forma general de declaracin de
una variable puntero es

tipo * nombre;

Donde tipo es el tipo base puntero, que puede ser cualquier tipo valido vlido. El nombre de la
variable puntero se especifica con nombre.

El tipo base del puntero define el tipo de variables a las que puede apuntar el puntero. Por ejemplo
cuando se declara un puntero como de tipo int * el compilador asume que cualquier direccin que
contenga apunta a un entero, lo haga realmente o no. Por lo tanto al declarar un puntero hay que
asegurarse de que su tipo base sea compatible con el tipo de objeto al que quiera que apunte.

Hay dos operadores de punteros de punteros: & y *
& es un operador monario que devuelve la direccin de memoria de su operando. Por ejemplo:
Unidad
Asignacin
10
U

75

m = &cuenta;

Esta lnea de cdigo pone en m la direccin de memoria de la variable cuenta. Esta direccin es la
posicin interna de la variable en la computadora. No tiene nada que ver con el valor de cuenta. Se
puede pensar en el operador & como devolviendo la direccin de. Por tanto la instruccin de
asignacin significa m recibe la direccin de cuenta.

El segundo operador de punteros, * es el complemento de &. Es un operador monario que devuelve
el valor que se encuentra en la direccin que le sigue. Por ejemplo, si m contiene la direccin de
memoria de la variable cuenta, entonces:
q = *m

pone el valor de cuenta en q. As que tendr el valor de 100, porque 100 es lo almacenado, en la
posicin 2000, la direccin de memoria que se guardo en m. Se puede pensar en + como en la
direccin. En este caso la instruccin anterior significa q recibe el valor de la direccin m.

Ejemplos:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>

#define DIAS 2 //declaro una macro que tiene un valor de 2, una macro es un texto asociado, en
este caso el texto asociado es 2
const int vendedores=2;//declaracin de una constante, una constante es un lugar de
almacenamiento que no cambia de valor, en este caso el valor constante es 2
void main (void){//inicio del programa
float ** ventas;// declaro un doble_apuntador;
int v;
clrscr();
ventas=NULL;
ventas=(float**)malloc(sizeof(float *)*vendedores);
if (ventas==NULL){ printf("No hay memoria");
flushall();
getch();
exit(1);//retorno un entero al main
}

for(v=0;v<vendedores;v++){
*(ventas+v)=NULL;
*(ventas+v)=(float*)malloc(sizeof(float)*DIAS);
if(*(ventas)+v==NULL){
printf("No hay memoria");
flushall();

76
getch();

exit(1);
}
}
*(*(ventas+0)+0)=500.00; // asigna los valores al arreglo que es de 2*2
*(*(ventas+0)+1)=0.0;
*(*(ventas+1)+0)=200.00;
*(*(ventas+1)+1)=300.00;
printf("ventas[0][0]=%8.2f", *(*(ventas+0)+0)); // estas lineas imprimen lo que
contiene mi arreglo
printf("\nventas[0][1]=%8.2f", *(*(ventas+0)+1));
printf("\nventas[1][0]=%8.2f", *(*(ventas+1)+0));
printf("\nventas[1][1]=%8.2f", *(*(ventas+1)+1));
printf("\n");
flushall();
getch();
}

77
Estructuras de Datos
Objetivo: Al finalizar el modulo el participante creara nuevos tipos de datos personalizados
mediante la relacin de sus contenidos o localidades de memoria

na estructura es una coleccin de variables que se referencia bajo un nico nombre,
proporcionando un medio conveniente de mantener junta una informacin relacionada. Una
declaracin de una estructura forma una platilla que puede utilizarse para crear objetos
estructuras sea, ejemplares de una estructura. Las variables que componen la estructura se
llaman miembros de la estructura. Los miembros de la estructura tambin son usualmente referidos como
elementos o campos.

Estructuras de datos
Objetivo: El participante creara nuevos tipos de datos personalizados aplicndolos en la creacin de
programas

Normalmente, los miembros de la estructura estn relacionados de forma lgica. Por ejemplo la
informacin sobre el nombre y la direccin de una lista de correos seria normalmente representada
en una estructura. el cdigo que sigue muestra como declarar una estructura que define campos para
el nombre y la direccin. la palabra clave struct indica al compilador que se esta declarando un
estructura.

struct dir{
char nombre[30];
char calle[40];
char ciudad[20];
char estado[3];
};

Obsrvese que la declaracin termina con punto y coma. Esto de debe a que la declaracin de
estructura es una instruccin. adems, la etiqueta de la estructura dir identifica esta estructura de
datos concreta es su especificador de tipo.

Unidad Asignacin
11
U

78
En este punto realmente no se han creado las variables. Solo se ha definido la forma de los datos.
Cundo se define una estructura se define un tipo agregado, no una variable. Hasta que no se declare
una variable de este tipo no existir realmente ninguna. Para declarar una variable de tipo dir se
escribe

struct dir_info_dir;

Esto declara una variable de tipo dir llamada info_dir. Se puede tambien declarar una o ms
variables de estructura a la vez que se declara una estructura. Por ejemplo:

struct dir{
char nombre[30];
char calle[40];
char ciudad[20];
char estado[3];
} info:dir, bingo, cinfo;

Cada una de ellas es independiente, por lo que los cambios sobre el cdigo de bingo por ejemplo,
no afectan a cdigo cinfo.



La forma general de un declaracin de una estructura es:

struct etiqueta{
tipo nombre_de_miembro;
tipo nombre_de_miembro;
.
} variables de estructura;

Donde se puede omitir o bien la etiqueta, o las variables_de_estructura, pero no ambas.

Nombre 30 bytes
Calle 40 bytes
Ciudad 20 bytes
Estado 3 bytes
la estructura info_dir en memoria

79
Acceso a los miembros de la estructura

Los miembros individuales de la estructura se acceden a travs del operador .

Por ejemplo el siguiente cdigo asigna el cdigo postal al campo cdigo de la variable de estructuras
info_dir declarada anteriormente.

info_dir.codigo = 12345;


Uso de Punteros a estructuras
Los punteros a estructuras los vamos a utilizar para generar un paso por referencia de una estructura
a una funcin.

Para encontrar la direccin de una variable de estructura se coloca el operador & antes del nombre
de la estructura. Por ejemplo dado el siguiente fragmento:
struct bal{
float balance;
char nombre[80];
}persona;

Creacin de estructuras de datos en lenguaje C

Objetivo: El participante creara nuevos tipos de datos personalizados aplicndolos en la creacin de
programas

struct bal *p; /*declaracin de un puntero a estructura*/

lo que sigue coloca la direccin en la estructura persona en el puntero p:

p balance

A se le denomina operador flecha. Cuando se accede a un miembro de una estructura , se usa el
operador flecha en lugar del operador punto.

Ejemplo de su uso :

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>

struct tipo_registro{

80
char nombre[35];
int edad;
float salario;
};
#define TIPO struct tipo_registro

void multi_registro2(TIPO *registro);

TIPO empleado;
TIPO *empleado2;

void main(void){
clrscr();
empleado2=&empleado;
strcpy(empleado2 -> nombre, "Marcos Colin");
empleado2->edad=15;
empleado2->salario=10000;
multi_registro2(empleado2);
getch();
}

void multi_registro2(TIPO *registro){
printf("nombre = %s\n ", registro->nombre);
printf("edad = %d\n ", registro->edad);
printf("salario = % %8.2f\n ", registro->salario);
}

La salida de este programa es:





81
Conclusiones

Estimado participante, ha finalizado nuestro curso de Algoritmos y Programacin, mismo que te
dar las bases para poder desarrollar cualquier programa en n lenguaje C, y por consiguiente en
cualquier lenguaje estructurado, ya que al haberlo cursado estas preparado mentalmente y tiene los
conocimientos necesarios para ello.

La primera parte del curso, los algoritmos, te darn las bases para que puedas analizar cualquier
problema y convertirlo en un programa de computadora en cualquier lenguaje de programacin
estructurada.

La segunda parte de nuestro curso te permite aplicar los conocimientos adquiridos en la primera
parte, utilizando un lenguaje estructurado, lenguaje c, y ya que te lleva de lo ms sencillo a lo ms
complejo es muy fcil de entender.

Con este curso, te llevas algo muy valioso, un conocimiento para toda la vida, mismo que te ser til
a lo largo de este bello andar.

Recuerda que el conocimiento es el alimento de la mente


82

Bibliografa

Metodologa de la programacin, algoritmos, diagramas de flujo y programas 3 edicin, Oswaldo Cairo, Alfaomega

Manual de referencia C cuarta edicin, Herbert Schildt, Osborne Mc Graw Hill

Curso Diseo de algoritmos, Alejandro Garca

S-ar putea să vă placă și