2. ALGORITMOS Y PROGRAMACIÒN
Segundo Cuatrimestre
Lic. Laura Gisela Velázquez Marmolejo
Estado de México, México
Teléfono (55) 50626468 y 69
i
3. Objetivo
Desarrollar la capacidad en el alumno para desarrollar y programar algoritmos, que le permitan
resolver problemas o realizar una tarea específica, mediante el uso de algún lenguaje de
programación, utilizando la computadora como herramienta de análisis de datos y solución de
problemas.
2
4. Contenido Temático
TEMA CAPITULO
Introducción 3
Conceptos Básicos de Algoritmos 5
Estructuras Algorítmicas Selectivas 20
Estructuras Algorítmicas Cíclicas 30
Arreglos 41
Introducción a los Lenguajes de Programación 46
Expresiones 50
Sentencias de Control 58
Arreglos en Programación 66
Funciones 70
Punteros 74
Estructuras de Datos 77
Conclusiones 81
Bibliografía 82
3
5. Introducción
El curso de Algoritmos y Programación representa una herramienta teórica y práctica tanto
para la solución de problemas genéricos como para estandarizar y automatizar cualquier proceso o
actividad, mediante la creación de programas para computadora.
El curso promueve en primera instancia desarrollar las capacidades y habilidades del
participante para analizar problemas, comprender situaciones implícitas y modelar dichas situaciones
para la propuesta de la mejor solución, dando como resultado una secuencia de pasos orientados a
resolver dicha problemática además de detectar y considerar los parámetros que afectan a dichos
problemas, todo con la finalidad de crear un algoritmo. Para el eficiente diseño de algoritmos se
conocerán las principales herramientas y representaciones graficas a efecto de ser comprendidas e
implementadas.
Asimismo, el participante aplicará los conocimientos de creación de algoritmos para la
automatización de tareas desarrollando habilidades para la selección de los correctos comandos en
algún lenguaje para trasladar esos algoritmos en un programa. Esto implica que el participante
también conocerá las bases de lenguaje y principios de programación en lenguaje C, utilizando la
computadora como herramienta de análisis de datos y solución de problemas.
Este curso le servirá al participante como base para cursos subsecuentes como Métodos
Numéricos, Control, Robótica y Procesos Industriales, tanto en el desarrollo de solución de
problemas, creación de algoritmos y programas.
4
6. Unidad
1
Asignación
Conceptos Básicos de Algoritmos
Objetivo: Al término de la modulo el participante manipulará adecuadamente las
reglas de construcción de algoritmos, usando los distintos tipos de datos mediante
operaciones aritméticas y lógicas
M
uchas veces aplicamos el algoritmo de manera inadvertida, inconciente o automáticamente.
Esto generalmente se produce cuando el problema que tenemos enfrente lo hemos resuelto
con anterioridad un gran número de veces. Supongamos que simplemente tenemos que abrir
una puerta. Lo hemos hecho tantas veces que difícilmente nos ponemos a enumerar los pasos
para alcanzar este objetivo.
Por otra parte existen una gran cantidad de problemas que requieren de un análisis profundo y de un
pensamiento flexible y estructurado para su solución. Este curso abordará este tipo de problemas.
Construcción de Algoritmos
Objetivo: El participante nombrará las reglas de construcción de algoritmos con diagramas de flujo y
lenguaje algorítmico
Existen técnicas y herramientas metodológicas que nos permiten flexibilizar y estructurar el razonamiento
utilizado en la solución de un problema. Lo que permitirá finalmente la construcción de algoritmos
eficientes.
Concepto de Algoritmo
Un conjunto de pasos, procedimientos o acciones que nos permiten alcanzar un resultado o resolver
un problema
“La superación es la base del éxito”
5
7. Características de los Algoritmos
Precisión: Los pasos a seguir en el algoritmo deben ser precisados claramente
Determinismo: El algoritmo, dado un conjunto de datos idénticos de entrada, siempre debe
arrojar los mismos resultados.
Finitud: El algoritmo, independientemente de la complejidad del
mismo, siempre debe ser de longitud finita.
Algoritmo
Datos de Impresión de
Entrada Procesamiento de Resultados
los datos
Modulo 1 Modulo 2 Modulo 3
Ilustración A : Módulos o secciones de un algoritmo
Por otra parte, un algoritmo consta de tres secciones o módulos principales, en la figura A podemos
observarlas secciones que constituyen un algoritmo.
Modulo1 Representa la operación o acción que permite el ingreso de los
datos del problema
Modulo2 Representa la operación o conjunto de operaciones secuenciales,
cuyo objetivo es obtener la solución del problema
Modulo3 Representa una operación o conjunto de operaciones que
permiten comunicar al exterior el o los resultados alcanzados.
6
8. Diagramas de Flujo
Un diagrama de flujo representa la esquematización gráfica de un algoritmo, es decir, muestra
gráficamente los pasos o procesos a seguir para alcanzar la solución de un problema.
Su correcta construcción es sumamente importante porque a partir del mismo se escribe un
programa en algún lenguaje de programación. Figura 1.2.1
Este símbolo se utiliza para representar el
inicio o el fin de un diagrama de flujo.
Ese símbolo se utiliza para representar la
lectura de datos desde el dispositivo de
entrada
Este símbolo se utiliza para representar un
bloque de instrucciones. También se le
conoce con el nombre de símbolo de
proceso.
Este símbolo se utiliza para representar una
pregunta. Es conocido con el nombre de
diamante de decisión
Este símbolo representa la salida de
información, hacia el dispositivo de
presentación de datos
Este símbolo se utiliza para representar los
ciclos de repetición por medio de sentencias
FOR, o su equivalente en el lenguaje de
programación que se esté trabajando.
Conector
Indica el orden de las acciones del algoritmo
Ilustración B Símbolos utilizados en diagramas de flujo
Reglas para la construcción de un Diagrama de Flujo
1. Todo diagrama de flujo debe tener un inicio y un fin
7
9. 2. Las líneas utilizadas para indicar la dirección del flujo del diagrama debe ser rectas, verticales
y horizontales
3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar
conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión
impresión conexión 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 notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de
programación. La solución presentada en el diagrama puede escribirse posteriormente y
fácilmente en diferentes lenguajes de programación
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 construcción, debemos utilizar los
conectores adecuados y enumerar las p{aginas convenientemente
8. No puede llegar más de una línea a un símbolo.
Reglas para la construcción de un Diagrama de Flujo
1. Todo diagrama de flujo debe tener un inicio y un fin
2. Las líneas utilizadas para indicar la dirección del flujo del diagrama debe ser rectas, verticales
y horizontales
3. Todas las líneas utilizadas para indicar la dirección del flujo del diagrama deben estar
conectadas. La conexión puede ser a un símbolo que exprese lectura, proceso, decisión
impresión conexión 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 notación utilizada en el diagrama de flujo debe ser independiente del lenguaje de
programación. La solución presentada en el diagrama puede escribirse posteriormente y fácilmente en
diferentes lenguajes de programación
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 construcción, debemos utilizar los
conectores adecuados y enumerar las p{aginas convenientemente
8. No puede llegar mas de una línea a un símbolo.
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
8
10. 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 numéricos, alfanuméricos y los lógicos; 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.
Ejemplos
Nombre Descripción (No Muestra Sintaxis de ningún
Lenguaje de Programación)
Enteros (int) Pueden estar precedidos de los signos + y - 128, 1528, -714, 25469, -56245
, además no tiene parte decimal.
Reales Tambien pueden estar precedidos de los 7.5, 128.0, -37.256, 25.3, 160000.0, -15.60
(float y signos + y -, y tiene una parte decimal.
double)
Caracteres Contiene un solo carácter, y se escribe „a‟, „B‟, „$‟, „9‟ , „-‟, „#‟
(char) entre apóstrofes
Boleanos Son datos que solo pueden tomar dos 10>32
(boolean) valores: verdadero (trae), falso (false).
Cadena de Contiene un conjunto de caracteres, y se Letras del alfabeto, dígitos (0, 1, 2….9) o símbolos
caracteres escribe entre comillas. especiales (#, $, ^, *, %, /, !, +, -…etc).
(String)
Arreglos Colección finita, homogénea y ordenada de UNIDIMENSIONALES O LINEALES (Cualquier
(array) elementos; puede almacenar a N elementos elemento es referenciado por un único índice)
del mismo tipo y además permite el acceso Ident_arreglo = ARREGLO [limiteinf...limsup] DE
a cada uno d estos elementos 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 Ident_registro = REGISTRO
denomina campo. Los campos de un Id_campo1:tipo1
registro pueden ser todos de diferente tipo. Id_campo2:tipo2
.........
Id_campoN: tipoN
{Fin de la identificación 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 utilización. Estas casillas o celdas de memoria
(constantes o variables), tienen un nombre que permite su identificación, al cual se le llama
identificador.
9
11. Memoria
SUMA ACUM
NUM_1
AUX X7
Ilustración 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 programación):
El primer que forma un identificador debe ser una letra
Los demás caracteres pueden ser letras, dígitos o el siguiente símbolo especial: _
La longitud del identificador es igual a 7 en la mayoría de los lenguajes de programación.
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 ejecución del programa. Existen tipos de constantes como
tipos de datos. (entero, real, carácter, cadena de carácter, etc..)
NUM RESU
5 “resultado”
NREAL NUMREA
7.25 8.59
Ilustración 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 ejecución del programa;
10
12. el dato NUMERA almacena un dato de tipo real con un valor de 8.59 mismo que no cambiara su
valor: Sin embargo, existe también datos que funcionan al contrario de estos, esas son las variables.
Variables
Las variables son objetos que pueden cambiar su valor durante la ejecución 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 función que cumplen en el programa. La figura 1.2.3
muestra un dato llamado I, mismo que almacena un valor entero y esta dándole un valor de inicio de
0, mismo que en cualquier momento cambiará de valor por medio de una operación aritmética, una
asignación, etc.
I
0
SUMA SUEL
0 0
Ilustración E: Variables representadas en memoria
Operaciones aritméticas y lógicas
Objetivo: Opera correctamente los distintos tipos de operaciones aplicables a
algoritmos
Los datos por si solos no nos servirían de nada si con ellos no realizáramos ninguna tarea, en el caso
de la programación los datos constantemente los utilizamos para realizar operaciones aritméticas,
lógicas, asignaciones, etcétera, para ello necesitamos una herramienta que nos permita realizarlas,
para ellos nos auxiliamos de operadores, los mimos que estudiaremos a continuación:
11
13. Operadores aritméticos
Operador
Operación Ejemplo Resultado
aritmético
** Potencia 4**3 64
* Multiplicación 8.25*7 57.75
/ división 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 División entera 17 mod 3 5
Tabla 2
Con estos operadores se puede realizar cualquier operación aritmética, sin embargo, al evaluar
expresiones que contienen operadores aritméticos debemos respetar la jerarquía en el orden de
aplicación. es decir, debemos aplicar primero el operador de mayor jerarquía, resolver esa operación,
y así sucesivamente. El operador () es un operador asociativo que tiene la prioridad mas alta en
cualquier lenguaje de programación.
Jerarquía de los operadores aritméticos
Operador Jerarquía Operación
** (mayor) Potencia
*, /, mod, div Multiplicación, división,
modulo, división entera
+, - (menor) 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
12
14. 7 * 125 / 4 div 3
875 / 4 div 3
218.75 div 3
72
Expresiones lógicas 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 evaluación se toma por un determinado
camino alternativo) y en las estructuras repetitivas (dependiendo del resultado de la evaluación se
continua con el ciclo o se interrumpe el mismo)
Operadores relacionales
Son operadores que permiten comparar dos operándoos. El resultado de una expresión con
operadores relacionales es verdadero o falso. Los cuales pueden ser números, alfanuméricos,
constantes o variables. Las constantes o variables pueden ser entero, real, carácter o cadena de
carácter.
Operadores relacionales
Operador Operación
> 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 relación con los operadores lógicos, falso es menor
que verdaderos VERDADERO > FALSO = VERDADERO.
13
15. Nota
No se pueden realizar la comparación entre un valor lógico y uno numérico, utilizando un
operador relacional.
Operadores lógicos
Los operadores lógicos son operadores que permiten formular condiciones complejas partir de
condiciones simples. Los operadores lógicos son de conjunción (y), disyunción (o) y negación (no).
Operadores Lógicos
Operador Lógico Jerarquía Expresión lógica Significado
NO Mayor No P No P
No es cierto que P
Es falso que P
Y PyQ PyQ
P sin embargo Q
O Menor PoQ PoQ
O P o Q o ambas
Mínimo 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 asignación
Se utiliza para asignar valores o expresiones a una variable la asignación es una operación
destructiva.
Variable – expresión o valor
La expresión puede ser aritmética (-+*etc) o lógica (operadores relacionales = etc y operadores
lógicos: no y o)
14
16. Elaboración de algoritmos
Objetivo: Diseña diagramas de flujo de situaciones específicas
Ejercicios
1. Construya un diagrama de flujo tal que dados los datos A, B, C Y D que representan números
enteros,
escriba los mismos en orden inverso.
Datos: A, B, C y D son variables de tipo entero
INICIO
A,B,C,D
D,C,B,A
INICIO
Ilustración F
Observemos que el programa, primeramente tiene un inicio y un fin, como lo indican las reglas de
construcción de algoritmos, posteriormente recibe los datos tipo entero A, B, C y D, y los imprime
de forma inversa.
Si dicho programa deseáramos traducirlo a lenguaje algorítmico, tendríamos que utilizar las
siguientes instrucciones, mismas que corresponden a los signos del diagrama de flujo.
Instrucciones en lenguaje algorítmico
Leer .. Leer A, B, C
15
17. Hacer.. Hacer A ---- A +
SUE
Escribir.. Escribir A, B
Tabla 6
Considerando el diagrama de flujo No. 1, para ejemplificar las instrucciones en lenguaje algorítmico
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 expresión
(A+B)2
3
Datos: A, B (variables de tipo entero)
INICIO
A,B Explicación de la variable
A, B: Variables de tipo entero
RES: Variable tipo variable.
C (A+B) ** 2/3
C
FIN
Ilustración G
A continuación veremos el seguimiento del algoritmo para diferentes corridas
16
18. A B RES
10 5 75
8 7 75
2 4 12
6 3 27
Instrucciones en lenguaje algorítmico en ese programa del diagrama No. 2
CALCULA
{El programa, dados como datos los enteros A y B,
calcula el resultado de una expresión}
{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 jerarquía de los operadores aritméticos,
lógicos 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 artículo 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: galón = 3.875 litros;
precio de la gasolina es de $8.20
Calcule e imprima el número de segundos que hay en un determinado número de días.
3. De los siguientes algoritmos en lenguaje algorítmico, construye el diagrama de flujo
correspondiente
17
19. a. algoritmo_sumar
variables
entero a, b, c
inicio
escribir( "Introduzca el primer número (entero): " )
leer( a )
escribir( "Introduzca el segundo número (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 número 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
18
20. /* 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
19
21. Unidad
2
Asignación
Estructuras Algorítmicas
Selectivas
Objetivo: Al término de la unidad el participante diseñara algoritmos que incluyan
estructuras de selección usadas en algoritmos computacionales
L
as estructuras algorítmicas selectivas las utilizamos cuando debemos tomar una decisión, para
establecer un proceso o señalar un camino alternativo a seguir.
Esta toma de decisión expresada en el diagrama de flujo con un rombo, se basa en la evaluación
de una o mas condiciones que nos señalaran 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 solución
de un problema o subproblema debemos aplicar prácticamente un árbol de decisión.
Clasificación:
SI ENTONCES (estructura selectiva simple)
SI ENTONCES / SINO (Estructura selectiva doble)
SI MÚLTIPLE (Estructura selectiva múltiple)
Cabe señalar que cuando a las estructuras selectivas las aplicamos en cascada, podemos utilizar una
combinación de las estructuras señaladas anteriormente en la clasificación
Estructura selectiva simple SI ENTONCES
Permite que el flujo del diagrama siga por un camino específico si se cumple una condición o
conjunto de condiciones. Si al evaluar la condición (condiciones) el resultado es verdadero, entonces
se ejecutan ciertas operaciones. Luego se continúa con la secuencia normal del diagrama de flujo.
Ejemplo examen
“Lucha por tus ideales”
20
22. Donde Condición expresa
CONDICIÓN
la condición o conjunto de
condiciones a evaluar.
Operación expresa la
operación o conjuntote
operaciones que se van a
realizar si la condición
OPERACIÓN resulta verdadera
Ilustración H Diagrama de Flujo de la Estructura Si Entonces
El lenguaje algorítmico de la estructura selectiva si entonces, es el siguiente:
.
.
.
Si condición entonces
Hacer operación
{Fin del condicional}
.
.
.
Ejemplos:
Construya un diagrama de flujo talque dado como dato la calificación de un alumno en un
examen, escriba “aprobado” en caso de que esa calificación sea mayor a 8
21
23. INICIO Lenguaje Algorítmico
Examen_selectiva_simple
CAL 1. INICIO
2. Leer CAL
3. Si CAL > 8 entonces
Escribir “Aprobado”
4. Fin de Condicional paso 3
5. FIN
N A continuación se presenta el
O seguimiento del algoritmo para
CAL diferentes m corridas
>8
S NUMERO DE
I DATO RESULTADO
CORRIDA
“Aprobado
” 1 8.75 Aprobado
2 7.90
3 8.00
4 9.50 Aprobado
5 8.35 Aprobado
FIN Tabla 7
Ilustración I Diagrama de Flujo
INICIO Construya un diagrama de flujo
talque dado como dato el sueldo de
un trabajador, aplíquele un aumento
del 15% si su sueldo es inferior a
SUE $1000.00. Imprima en este caso el
nuevo sueldo del trabajador.
Lenguaje
Algorítmico
Aumento_selectiva
NO 1. INICIO
2. Leer SUE
SUE < 1000 3. Si SUE <
1000 entonces
Hacer AUM
SI
← SUE * 1.15 y
AUM ← SUE * 1.15 NSUE ←
NSUE ← SUE +AUM SUE +AUM
Escribir
NSUE NSUE
4. Fin de
Condicional
paso 3
5. FIN
FIN
Ilustración J
22
24. Ejercicios
Construya un diagrama de flujo tal que dado como datos los valores enteros P y Q,
determine si los mismos satisfacen la siguiente expresión:
P3 + Q2 - 2*P2 < 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 decisión. Si al evaluar la condición 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 continúa con las secuencia normal del diagrama.
SI NO
CONDICIÓN
OPERACION1 OPERACION2
Ilustración K Diagrama de flujo que ilustra la estructura selectiva.
Donde:
Condición expresa la condición o conjunto de condiciones a
evaluar.
Operación1 expresa la operación o conjuntote operaciones que se
van a realizar si la condición resulta verdadera
Operación2 expresa la operación o conjuntote operaciones que se
van a realizar si la condición resulta falsa
Se representa en lenguaje algorítmico de la siguiente forma
23
25. .
.
.
Si condición
Entonces
Hacer operación1
Sino
Hacer operación2
{Fin del condicional}
.
.
.
Ejercicios:
Retomemos los programas de la selectiva simple:
Construya un diagrama de flujo tal quedado como dato la calificación de un alumno en un
examen, escriba “aprobado” si su calificación es mayor o igual a 8 y “reprobado” en caso
contrario.
Elabora el Diagrama de Lenguaje Algorítmico
Flujo
Examen_selectiva_doble
{El programa, dado como dato la calificación de un alumno en un examen, escribe
“aprobado” si su calificación 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
24
26. Construya un diagrama de flujo talque dado como dato el sueldo de un trabajador, aplíquele
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 Algorítmico
Flujo
Aumento_selectiva_doble
{el programa talque dado como
dato el sueldo de un trabajador,
aplíquele 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 múltiple si múltiple
La estructura selectiva si múltiple permite que el flujo del diagrama se bifurque por varios
ramas en. Punto de la toma de decisiones, esto en función del valor que tome el selector.
Así si el selector toma el valor 1 se ejecutara la acción 1, si toma el valor 2 se ejecutara la
acción 2,si tómale valor N se realizara la acción N, y si toma un valor distinto de los valores
comprendidos entre 1 y N, se continuará con el flujo normal del diagrama realizándose la
acción N + 1..
SELECTOR Es la variable o expresión a evaluarse, según la cual se tomara una de las
“múltiples” decisiones o alternativas
ACCIÓN 1 expresa la operación o conjunto de operaciones que se van a realizar si el
selector toma el valor 1.
ACCIÓN 2 expresa la operación o conjunto de operaciones que se van a realizar si el
selector toma el valor 2.
ACCIÓN N expresa la operación o conjunto de operaciones que se van a realizar si el
selector toma el valor N.
ACCIÓN 1 expresa la operación que se van a realizar cuando se continué con el flujo
normal del diagrama.
25
27. SELECTOR
ACCION1 ACCION2 ACCION3
ACCION N + 1
Donde:
.
.
.
Si el selector igual
Valor 1: Hacer acción 1
Valor 1: Hacer acción 2
.
.
Valor 1: Hacer acción N
{Fin del condicional}
Hacer acción N + 1
.
.
26
28. Debido a que esta estructura es muy flexible permite aplicarse de diferentes formas,
observe el lenguaje algorítmico que se presenta a continuación.
. .
. .
. .
Si selector igual Si selector igual
VALOR 1: Hacer acción 1 VALOR 1, 2: Hacer acción 1
VALOR 2: Hacer acción 2 VALOR 3, 4, 5: Hacer acción 2
VALOR 3: Hacer acción 3 De otra forma: Hacer acción 3
De otra forma: Hacer acción X {Fin del condicional}
{Fin del condicional} Hacer acción X
Hacer acción Y .
. .
. .
.
Ejemplo:
Construya un diagrama de flujo tal que dado como datos la categoría y el sueldo de un
trabajador, calcule el aumento correspondiente, teniendo en cuenta la siguiente tabla.
Imprima la categoría del trabajador y su nuevo sueldo
Aumento
Categoría
%
1 15
2 10
3 8
Aumento_selectiva_multiple
{El programa calcula el aumento de sueldo de los trabajadores, teniendo en cuenta su categoría. 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
27
29. INICIO
CATE, SUE
CATE
1
3
2
NSUE ← SUE * NSUE ← SUE * NSUE ← SUE *
1.15 1.10 1.08
CATE, SUE
FIN
Estructura selectivas en cascada
Encontramos numerosos casos en el desarrollo de la solución de problemas en el que luego de toma
la decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Se señala
luego de evaluar las condiciones la rama correspondiente a seguir, nuevamente podemos tomar otra
decisión. El proceso puede repetirse numerosas veces
NO
CONDICIÓ
N1
SI
SI NO
CONDICIÓ
N2
OPERACION OPERACION22
21
.
28
30. Ejercicio:
Desarrolla el diagrama de flujo del siguiente programa:
DESCENDENTE_SELECTIVA_CASCADA
{el programa, dados como datos tres números enteros diferentes,
escribe estos números 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 expresión:
P3 +Q3 -2 * P < 680
29
31. U.A.
3
Estructuras Algorítmicas Cíclicas
Objetivo: Al finalizar el modulo el participante usará las distintas estructuras cíclicas aplicables a
algoritmos
E
n la practica es común encontrar algoritmos cuyas operaciones se debe ejecutar un número
repetido de veces. Las instrucciones son las mismas, pero los datos sobre los que se trabaja
varían. El conjunto de instrucciones que se ejecuta repetidamente se llama ciclo.
Tipos de estructuras cíclicas
Objetivo: Comparara las distintas estructuras cíclicas aplicables a algoritmos
Todo ciclo debe terminar de ejecutarse luego de un número finito de veces, por lo que es necesario en
cada iteración del mismo, evaluar las condiciones necesarias para decidir si se va a seguir ejecutando o si
debe detenerse. en todo ciclo debe existir una condición de parada de ciclo o fin de ciclo.
En algunos ciclo podemos establecer el número 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 número 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”
30
32. Lenguaje algorítmico 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
VVI
VVI
NO NO
SI
V(<)VF SI
V(>)VF
…(<) …(>)
PROCESO PROCESO
V V+ID V V-ID
ASCENDENTE DESCENDENTE
V- Control de ciclo
VI – valor inicial
VF – valor final
ID - incremento
Ilustración 12Diagrama de Flujo
Las estructura repetitiva mientras (WHILE)
Es la estructura adecuada para utilizar en un ciclo cuando no sabemos el número de veces que este
se ha de repetir. Dicho número depende de las posiciones dentro del ciclo.
ciclo: conjunto de instrucciones que se ejecutaran repetidamente
Condición de terminación: La evaluación de esta condición permite decidir cuando finaliza la
ejecución del ciclo. La condición se evalúa al inicio del mismo.
31
33. PIPROP.INIC Hacer PI PRIOPOSICION INICIAL
I Mientras PI es verdadero repetir
.
EVALUAC
NO .
IÓN DE .
PI {PROCESO}
SI .
.
PROCESO
.
Hacer PI modificación de PI
{Fin de ciclo}
PI MODIF. de PI
Diagrama de flujo Lenguaje algorítmico del diagrama de flujo 3.2 estructura cíclica mientras
Creación de programas con estructuras cíclicas
Objetivo.- Usara las distintas técnicas de creación 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 además que no puede utilizar estructuras algorítmicas repetitivas.
Datos: SUE1, SUE2, SUE3….SUE10
DONDE: SUEi Es una variable de tipo real que representa el sueldo del trabajador i
(1 <= i <= 10)
Explicación de las variables
I: Es una variable de tipo entero que representa la variable de control del ciclo. Contabiliza el
número de veces que se ha de repetirse una determinada acción. El contador toma un valor
inicial (generalmente 0 ó 1) y se incrementa en la mayoría 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.
32
34. Inicio NOMINA
{Calcula el total de la nomina de un grupo de 10
empleados}
NOMINA 0 {I variable de tipo entero. SUE y NOMINA tipo
real}
I1 Variables
entero i,
real SUE, NOMINA
I < 10
1. Inicio
2. Hacer Nomina 0 e I 1
3. Repetir con I desde 1 hasta 10
Leer SUE
SUE Hacer NOMINA NOMINA + SUE e
II+1
4. {Fin del paso 2}
NOMINA NOMINA + SUE 5. Escribir NOMINA
6. Fin
II+1
NOMINA
Inicio
Diagrama de flujo 3.2
Ejercicios:
Escriba un diagrama de flujo tal que dado un grupo de números naturales positivos, calcule e
imprima el cubo de estos números.
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)
Explicación de las variables
NUM Variable de tipo entero
CUB: Variable de tipo real. Almacena el cubo de l numero que se ingresa
33
35. CUBO Elabore el diagrama de flujo
{El programa calcula el cubo de un grupo de
números 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}
Escriba un diagrama de flujo tal que como datos 270 números enteros, obtenga la suma de las
números impares y el promedio de los números 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
34
36. Elabore diagrama de flujo Elabore lenguaje algorítmico
Dado N números enteros como dato haga un diagrama de flujo que: FOR
Obtenga cuantos números leídos fueron mayores que cero
Calcule el promedio de los números positivos
Obtenga el promedio de todos los números
Elabore diagrama de flujo Elabore lenguaje algorítmico
35
37. Declaración 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 día}
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 días es: ” TVentaDia
12 Fin
36
39. Elabora el diagrama de flujo y lenguaje algorítmico de cada caso
En una reciente elección hubo cuatro candidatos con identificadores 1,2,3,4). Usted habrá de
encontrar, mediante un programa, el número 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 elección, el final de datos esta representado por un
cero. {WHILE}
Elabore diagrama de flujo Elabore lenguaje algorítmico
De una empresa con N empleados, necesitamos obtener el número de empleado y sueldo de un
trabajador con el mayor sueldo de la empresa. {FOR}
38
40. Elabore diagrama de flujo Elabore lenguaje algorítmico
En el centro meteorológico de Argentina se llevan los promedios mensuales de las lluvias caídas en
las principales regiones cerealeras del país. Existen tres regiones importantes denominadas NORTE,
CENTRO y SUR. Haga un diagrama de flujo para calcular lo siguiente. {WHILE}
El promedio anual de la región centro
El mes y registro con menor lluvia en la región sur
La región con mayor lluvia anual (Considere que los registros anuales de las regiones son
diferentes).
Elabore diagrama de flujo Elabore lenguaje algorítmico
39
41. En un estadio se tienen 5 tipos diferentes de localidades, las cuales se identifican por una clave
numérica 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 próximo 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 recaudación total del estadio
Elabore diagrama de flujo Elabore lenguaje algorítmico
40
42. Unidad
4
Asignación
Arreglos
Objetivo: Al finalizar el participante aplicara los arreglos en algoritmos
U
n array es una colección de variables del mismo tipo que se referencia por un nombre
común. A un elemento específico de un array se accede mediante un índice.
Concepto y clasificación de arreglos
Objetivo: Al finalizar el participante definirá el concepto de arreglos
Un arreglo se define como una colección fuinita, homogénea y ordenada de elementos
Finita: Todo arreglo tiene un límite, es decir, se debe determinar cual será el número máximo de
elementos que podrán formar parte del arreglo
Homogénea: todos los elementos de un arreglo son del mismo tipo (enteros, reales) pero nunca una
combinación d estos.
Ordenada: Se puede determinar cual es el primer elemento, el segundo… y el n-esimo
elemento.
Su característica principal es que puede almacenar N elementos del mismo tipo y además 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”
41
43. Arreglo palabras
nombre[0] nombre[1] nombre[2] nombre[3] nombre[4] nombre[5]
Definición 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 número de
elementos que tendrá el arreglo. (tipo carácter, 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,
carácter, cadena de carácter, etc.)
[ ] se utilizan para indicar el índice del arreglo
OPERACIONES CON ARREGLOS
Lectura / Escritura
asignación
actualización:
- Inserción
- eliminación
- modificación
Ordenación
Búsqueda
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]
42
44. Escritura
Se debe escribir el valor de cada uno de los componentes. supóngase que se desea escribir los p
rimeros componentes del arreglo ARRE en forma consecutiva. Los pasos a seguir son:
Asignación
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 asignación. 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.
Actualización
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 algún orden
entre sí
Ejercicios
1) Pida por teclado la base (dato real) de un triángulo.
2) Pida por teclado la altura (dato real) de un triángulo.
3) Calcule el área del triángulo.
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;
}
43
45. /*
1º) Pida por teclado la base (dato real) de un triángulo.
2º) Pida por teclado la altura (dato real) de un triángulo.
3º) Calcule el área del triángulo.
4º) Muestre por pantalla el resultado (dato real).
Nota: la operación aritmética se deberá hacer directamente
en la instrucción de impresión 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;
}
/*División entera (Entrada y salida estándar - Lenguaje C)
/* 1) Pida por teclado dos números (datos enteros).
2) Muestre por pantalla el resultado de realizar
la división entera del primer número 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", ÷ndo );
printf( "Introduzca divisor (entero): " );
scanf( "%d", &divisor );
cociente = dividendo / divisor;
modulo = dividendo % divisor;
44
46. 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 CAMBIOn");
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("nnnPresione cualquier tecla para terminar");
getch();
}
45
47. 5
U. A.
Introducción a los Lenguajes de
Programación
Objetivo: Al finalizar el modulo el participante usara software adecuado para la creación e
programas específicos
C
es un lenguaje estructurado de nivel medio hecho para programadores, la característica
distintiva de un lenguaje estructurado es la compartimentalización de código y datos, se trata
de la capacidad de un lenguaje de seccionar y esconder del resto del programa toda la
información y todas las instrucciones necesarias para levar acabo una determinada tarea
Ambientes de Lenguajes de programación
Objetivo: Identifica el tipo de software a emplear para realizar un programa
Un compilador lee el programa entero y lo convierte a código objeto, que es una traducción del
código fuente del programa a una forma que puede ser ejecutada directamente por la computadora.
Una vez que el programa esta compilado, las líneas de código fuente dejan de tener sentido durante
la ejecución del programa.
Forma de un programa en C
declaraciones globales
int main (lista de parámetros)
{
tipo_devuelto función1 (lista de parámetros)
{
secuencias de instrucciones
}
tipo_devueklto función2 (lista de parámetros)
{
secuencia de instrucciones)
46
48. }
.
.
.
tipo_devuelto funciónN (lista de parámetros)
{
secuencia de instrucciones)
}
Compiladores
Turbo C++ 3.0
Este manual supone que has descargado el siguiente archivo:
Turbo C++ 3.0
(tc3.zip)
Instalación 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 instalación.
Si éstos
5. se encuentran en la unidad C, pulsaremos la tecla C y después Intro:
6. A continuación se muestra otra ventana en la que aparece por defecto el directorio donde se
7. encuentran los archivos de instalación. 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 opción Start
11. Installation y pulsamos Intro, que iniciará la instalación.
12. Mientras se instala, en la parte inferior de la ventana aparecerán los ficheros que se están
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. párrafo) que nos informa de los últimos pasos de la instalación. 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 instalación ha concluido.
47
49. 19.
Según los pasos realizados en este ejemplo de instalación, el programa Turbo C++ es TC.EXE y se
encuentra en C:TCBIN
Esta versión de Turbo C-C++ 3.0 para D.O.S, por lo tanto DEBE ser copiado en el directorio
RAIZ del disco rígido (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 librerías. Ya
que por defecto buscará a las mismas en c:tc.
El resultado de la instalación debe ser el siguiente:
C:TC
|
|__BGI
|
|__BIN
|
|__INCLUDE
|
|__LIB
Configuración del modo gráfico
Esto es para que no tengas problemas al compilar los programas que usan funciones gráficas.
1. Ejecuta el programa: TC.EXE, que está en: C:TCBIN
2. Ve a: Options -> Linker -> Libraries, y dentro de este marca la opción Graphics library, entonces
pulsa el botón OK
Una vez creado tu programa deberás compilarlo con la combinación de teclas Alt + F9, y una vez
que no contenga errores deberás ejecutarlos con la combinación 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, opción New y
seleccionamos Console Wizard, en el
48
50. siguiente cuadro seleccionar Console y presionar finish.
3. Capturar en la pagina que aparece, nuestro código. (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 (automáticamente se añade la
extensión .CPP al archivo en Turbo C++ 3.1; en Buider se agrega la
extensión .bpr
4. Compila y ejecuta el programa, presionando: CTRL+F9 ó F9 según
sea el caso, entonces aparecerá en pantalla el mensaje:
49
51. 6
U. A.
Expresiones
Objetivo: Al finalizar el modulo el participante será capaz de escribir sentencias y expresiones
en el lenguaje de programación designado
E
n sentido mas general, podemos decir, que una instrucción es una parte del programa que puede
ejecutarse. Es decir, una instrucción especifica una acción. C clasifica las instrucciones en estos
grupos: Selección, Iteración, Salto, Etiquetado, Expresión y Bloque. Las cuales se describirán
más adelante
Tipos de expresiones
Objetivo: Escribirá sentencias y expresiones en el lenguaje de programación designado
Tipos de datos básicos
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 carácter debe ser una letra o un símbolo de subrayado y los caracteres siguientes pueden
ser letras, letras números o símbolos de subrayado
En C las minúsculas y la mayúsculas se tratan como distintas, Ej. Cuenta, Cuenta y CUENTA son
tres identificadores diferentes.
Una variable es una posición 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.
50
52. Declaración 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 ladefinición de parámetros de funciones ( parámetros formales)
Fuera de todas las funciones (variables globales)
Variables locales
Las variables locales pueden ser utilizadas solo en las instrucciones que estén dentro del bloque en el
que han sido declaradas. Estas variables solo existen mientras se esta ejecutando el bloque de
código 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 código y cada una será distinta de la otra.
Recuerde que un bloque de código comienza con una llave de apertura y termina con una llave de
cierre.
Por costumbre las variables se declaran después de la llave de apertura y antes de cualquier
instrucción, sin embargo pu8ede hacerse en cualquier línea, 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.
Parámetros formales
Si una función va a usar argumentos, debe declarar las variables que van a aceptar los valores de los
argumentos. Esas variables son los parámetros formales de la función. Se comportan como
cualquier otra variables local de la función, sus declaraciones se dan tras el nombre de la función y
entre paréntesis.
#/* Devuelve 1 si c es parte de la cadena s; si no, 0 */
Int esta_en (char *s, char c)
{
51
53. 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 código. Además
mantiene sus valores durante toda la ejecución del programa, pueden ser accedidas por cualquier
expresión, independientemente de la función.
Lo mejor es declara todas las variables globales al principio del programa antes de la función 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 función 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 más sencilla de escribir un
especificador de formato es con el carácter tanto por ciento (%) seguido de un carácter de conversión
que indique el tipo de dato del argumento. Los especificadores de formato mas utilizados que se
pueden usar en la función printf:
%c Salida de un carácter
%d salida de un numero entero
%f salida de un número real
%s salida de una cadena
Un programa escrito en C está compuesto por una o más funciones. Como ya es sabido, una
función es un programa que sirve para realizar una tarea determinada, por ejemplo, la función scanf
sirve para leer datos desde el teclado.
Existe una función que está presente en todos los programas escritos en C, su misión es marcar el
inicio y fin de la ejecución de cada uno de ellos; es la función principal, la primera que se ejecuta; es
la función main. Su sintaxis "básica" es:
int main()
{
<bloque_de_instrucciones>}
52
54. Todas las funciones de la biblioteca estándar de C son subprogramas que ya están compilados, es
decir, junto a cualquier compilador de C se acompañan los códigos objeto de todas las funciones de
su biblioteca estándar, pero no sus códigos fuente. Por tanto, aunque no sea posible modificar sus
códigos fuente, sí se puede hacer uso de dichas funciones en cualquier programa. Por ejemplo, se
puede llamar a la función printf para que muestre por pantalla el saludo "Hola mundo".
printf( "Hola mundo" );
Dentro de los paréntesis "()" de la función printf, se debe escribir, entre comillas dobles ("), el
mensaje o cadena de caracteres que se desea mostrar por pantalla.
Obsérvese que, después del carácter cerrar paréntesis ")" se ha escrito un punto y coma (;), esto
implica que la llamada a la función printf es considerada como una instrucción de expresión
Para que el compilador conozca la declaración de la función 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
compilación, en el código fuente del programa, el contenido del archivo <stdio.h> (stdio, Standard
Input/Output). En dicho archivo están escritas las declaraciones de todas las funciones de entrada y
salida estándar de la biblioteca estándar de C, como printf. Si el compilador no sabe quien es
printf, no podrá generar el código objeto del programa.
Toda función retorna un valor.
return 0;
Esto quiere decir que la función main devuelve el valor 0. Precediendo a main se ha escrito la
palabra reservada int, indicando así, que la función retornará un valor de tipo int (entero).
int main()
En general, la instrucción return suele ser la última del bloque de instrucciónes de la función main.
Al retornar el valor 0, indica (informa al sistema operativo) que el programa finalizó correctamente,
es decir, sin producirse ningún error en su ejecución. Cuando la función main devuelva un valor
distinto de cero, esto siginificará que se ha producido algún error en la ejecución del programa, o
que ha ocurrido algo fuera de lo normal.
53
55. La instrucción return es una de las instrucciones de control que existen en C. Por tanto, es una
palabra reservada. Después del valor de retorno (que es una expresión) se debe escribir un punto y
coma (;). La sintaxis de la instrucción return es:
return <expresión>;
La sintaxis "básica" de un programa escrito en c es:
[ <directivas_del_preprocesador> ]
int main()
{
<bloque_de_instrucciones>
}
Tipos de datos basicos (simples predefinidos) en c:
Numéricos:
Entero (int)
Real (float y double)
Carácter (char)
sin valor (void)
La mayoría de los elementos de un programa se diferencian entre sí por su nombre. Por ejemplo, los
tipos de datos básicos 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 demás 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 están predefinidos, forman parte del lenguaje C.
No obstante, en el código de un programa también 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 más caracteres.
54
56. 2. El primer carácter debe ser una letra o el carácter subrayado (_), mientras que, todos los
demás pueden ser letras, dígitos o el carácter subrayado (_). Las letras pueden ser minúsculas o
mayúsculas del alfabeto inglés. 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 más de una vez en un programa.
De la segunda regla se deduce que un identificador no puede contener caracteres especiales, salvo el
carácter subrayado (_). Es importante resaltar que las vocales no pueden llevar tilde ni diéresis.
#define y const
La directiva #define indica al preprocesador que debe sustituir, en el código fuente del programa,
todas las ocurrencias del <nombre_de_la_constante> por la <secuencia_de_caracteres>, antes de la
compilación.
Ejemplo 2: Dos constantes muy habituales son:
#define PI 3.141592
#define NUMERO_E 2.718281
En programación es una buena práctica escribir los identificadores de las constantes en mayúsculas,
de esta forma es más fácil localizarlos en el código de un programa. Nótese que, después de la
declaración de una constante simbólica no se escribe un carácter punto y coma (;), cosa que sí se
debe hacer al declarar una variable.
Por otra parte, no se puede declarar más de una constante simbólica en una misma línea de código.
Ejemplo 3: Para declarar las constantes simbólicas 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 Aritméticos
+ Suma
- Resta
* Multiplicación
/ División
/ División (div)
% Modulo
55
57. + Signo mas
- Signo menos
Operadores logicos
&& Conjuncion
|| Disyunción
! Negación
Programación de expresiones
Programación de expresiones
Objetivo: Creara programas que manipulen datos de forma específica
Ejercicios:
/*Escribir un programa (en lenguaje C) que:
1º) Pida por teclado la base (dato real) de un triángulo.
2º) Pida por teclado la altura (dato real) de un triángulo.
3º) Calcule el área del triángulo.
4º) Muestre por pantalla el resultado (dato real).
Nota: la operación aritmética se deberá hacer directamente
en la instrucción de impresión 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 código.
#include <stdio.h>
56
58. #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 CAMBIOn");
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("nnnPresione 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 números (datos enteros).
Muestre por pantalla el resultado de realizar la división entera del primer número
introducido por el usuario entre el segundo, y el resto.
57
59. 7
U. A.
Sentencias de Control
Objetivo: Al término de la modulo el participante creara programas que permitan
la bifurcación de su control en función a situaciones especificas por medio de la
inclusión de sentencias de control
C
contempla dos tipos de instrucciones de selección: 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 programación
Forma general de la instrucción if es
if (expresión) instrucción;
else instrucción;
donde instrucción puede ser una instrucción simple, un bloque de instrucciones o nada ( en caso de
instrucciones vacias) . La cláusula else es opcional.
si la expresión es cierta( cualquier valor que no sea cero 0), se ejecuta la instrucción o el bloque de
instrucciones que constituye el objetivo del if; en elcaso contrario se ejecuta la instrucción o el bloque de
instrucciones que constituye el objeto del else, si existe. Recuerde que solo se ejecuta el código 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;
58
60. 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
programación. en un if anidado, una instrucción else siempre se refiere al if mas próximo 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 mágico*/
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main (void)
{
int magico; //inicialización de numero mágico
int intento; //intento del usuario
magico = rand(); // genera número mágico
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;
}
59
61. 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 instrucción de selección múltiple, denominada switch, que compara sucesivamente el
valor de una expresión 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
instrucción switch es
60
62. switch (expresión){
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 número (dato entero) asociado a una habitación.
3) Muestre por pantalla la planta y el número de camas de la habitación seleccionada.
Nota: Si el número introducido por el usuario, no está asociado a ninguna habitación, se mostrará el mensaje:
"ERROR: <número> no está asociado a ninguna habitación.".*/
#include <stdio.h>
#include <conio.h>
int main()
{
int numero;
printf( "Listado de habitaciones:" );
printf( "nn1. Azul" );
printf( "n2. Roja" );
printf( "n3. Verde" );
printf( "n4. Rosa" );
printf( "n5. Gris" );
printf( "nnIntroduzca numero de habitación: " );
scanf( "%d", &numero );
61
63. 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 habitación.", numero );
}
getch();
}
Estructuras FOR y WHILE
Objetivo: El participante Explicará la lógica de las estructuras cíclicas
El formato general del bucle for de c se encuentra de una forma o de otra en todos los lenguajes de
programación. En C, sin embargo, proporciona una potencia y flexibilidad sorprendentes.
La forma general para la instrucción for es
for(inicialización;condicion;incremento) instrucción;
Por ejemplo, el siguiente programa usa un bloque for para imprimir los números 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(condición) instrucción;
62