ALGORITMO
ALGORITMO
VISUAL C++ es un lenguaje de programación orientado a Objetos que utiliza como plataforma las
herramientas del lenguaje C estándar y del Lenguaje C++ .
El curso esta orientado para aquellas personas que deseen conocer y aprender a programar con una
herramienta de un lenguaje de programacion que tiene dentro de sus caracteristicas el ser bastante flexible
y facil de manipular en cuanto a su sintaxis.
Debe tener en cuenta que esta herramienta ha servido para desarrollar otras aplicaciones que hoy en dia
vemos en el mercado.
El curso empieza con una breve descripcion del diseño a mano de los pasos a seguir en la solucion de un
problema este diseño es conocido como la etapa algoritmica que puede contener la parte
textual(pseudocodigo) y la parte grafica(Diagrama de Flujo).
A esta etapa se le debe dar la importancia necesaria, ya que es aquí donde se plantea el camino ha seguir.
El curso se va desarrollar integramente haciendo uso del editor, herramienta que permitirá el manipuleo de
variables en linea de textos.
Se seguirá luego la descripción del Entorno Integrado de Desarrollo del Visual C++. El esqueleto o estructura
del Lenguaje C/C++ que , acompañará durante todo el curso. Se dará énfasis a la técnica de programación
en el uso correcto de la sintaxis, el buen uso del tipo de dato desde las principales y luego sus derivadas,las
Instrucciones de control simples o multiples y luego las instrucciones de control repetitivas, se tratará el
tema de los arreglos, recursividad, los punteros, las estructuras, asignación dinamica de memoria, para con
un enfoque del paradigma de lo que se entiende por programación orientada a objetos.
Seguidamente nos adentramos a la p´rogramacion con Windows, es decir programar en base a ventanas, el
uso de controles simples y controles tipo listas, los menus, los graficos.
INTRODUCCIÓN A LA PROGRAMACIÓN
La siguiente Separata tiene por Objeto Familiarizar al alumno con el entorno del Lenguaje de Programación and
C++; es mi deseo que Ud aproveche y aplique los conocimientos adquiridos, tanto en clase de teoria como en
el Laboratorio.
Algunos conceptos a tomarse en cuenta:
Dato(s)
Es una información que va a ser representada en un programa para su posterior modificación.
Lenguaje maquina
Conjunto de instrucciones numéricas en sistema binario (1 0 0 1 ) reconocido por el computador como
micro_operaciones.
Preprocesador
Permite la inclusión de archivos(#include), sustitución de macros(#define) y compilación condicional, las líneas
que comienzan con # contiene instrucciones para que el compilador realice ciertas tareas antes de que la
compilacion del programa se active es decir antes que el compilador traduzca el programa fuente en codigo
máquina. Su sintaxis es independiente del resto del lenguaje, siendo necesaria que estas líneas sean escritas
desde la primera columna del programa.
Compilador
Es un programa encargado de traducir las instrucciones de un programa a instrucciones de lenguaje de
maquina, verifica que no exista errores sintacticos del Lenguaje de programación .
Sentencia
Describe el conjunto de acciones a seguir especificado en un lenguaje de programación que será ejecutado
por el computador.
Sintaxis
La sintaxis de un lengueje de programacion es el conjunto de reglas para formular instrucciones
gramaticalmente correctas para el lenguaje sea cual fuere. Ahora bien, en la practica significa esto que una
instrucción en Borland C++ con la sintaxis correcta tiene una forma apropiada especificada para su
compilador, de tal manera que éste aceptará la instrucción y no generará un mensaje de error.
TEMA: ALGORITMOS
PSEUDOCODIGO / DIAGRAMA DE FLUJO
Los algoritmos pueden constituir por así decirlo en un listado de instrucciones que indican el camino a seguir
para dar solución a un problema y que puede o no ser ser resuelto por una computadora , generalmente el
algoritmo viene acompañado de un pseudocódigo y un diagrama de flujo.
Cuando el Algoritmo se ha desarrollado en forma correcta, el paso siguiente es llevar el pseudocodigo a la
codificacion del loenguaje de programacion.
Como ya se explicó, la codificacion del algoritmo(pseudocodigo) en un determinado lenguaje debe respetar
su sintaxis para que el compilador pueda traducirlo en Lenguaje Maquina y hallar la solucion al problema
planteado.
Se entiende que por verificación del algoritmo, el seguimiento del mismo con datos que se ajusten a las
característica del problema que se va a resolver.
Característica:
Los algoritmos en general deben ser:
Precisos :Los pasos a seguir en el algoritmo deben ser precisados claramente.
Definido: Debe dar siempre el mismo resultado para un conjunto de datos idénticos de entrada.
Finito : El algoritmo, independientemente de la complejidad del mismo, debe ser siempre de
longitud finita.
Metodología:
Definición de los Objetos_Datos de Entrada y Salida(Ingreso desde teclado y salida por pantalla)
Objetos_Datos de Entrada: Datos que se ingresan por teclado.
Objetos_Dato de salida: Datos u objetos de resultado.
Procesamiento de los Objetos_Datos (datos).
Visualizacion/Impresión de resultados.
Pseudocodigo
Es la parte textual del algoritmo,se podría decir que es como la receta para un paciente o también una
receta culinaria para cocinar un plato. Generalmente es la traducción del Inglés de la sintaxis del compilador
al idioma con el que estamos trabajando.
DIAGRAMA DEFINICION
INICIO - FIN
ENTRADA DE DATOS
PROCESOS/CONSTANTES
F V BIFURCACIÓN(V/F)
PROCESOS(Desde/Para)
LLAMADA A (PROCEDIMIENTOS/FUNCIONES)
ESCRITURA
PANTALLA
CONECTOR
Inicio
Accion 1
Accion 2
Accion 3
Fin
Codificación y Programación
Es el Proceso mediante el cual se traduce un algoritmo a una codificación en un lenguaje de programación
especifico.
Programa
Conjunto de instrucciones que se ha desarrollado con la finalidad de que sea ejecutado por el computador.
Objetos_Datos
Son Objetos_Datos de un programa, todos aquellos datos manipulados por las Instrucciones.
Mediante ellos, en un programa podremos realizar el almacenamiento de los datos y de los resultados de las
distintas operaciones que intervienen en la solución del problema.
Se les da este nombre solo para efectos de entrada y salida de datos en la solucion de un problema.
IDENTIFICADORES
Los identificadores son palabras creadas por el programador para dar nombre a los objetos y demás
elementos que necesita declarar en un programa: variables, constantes, tipos, estructuras de datos,
archivos, procedimientos.
Deben empezar siempre con una letra, no deben existir espacios en el nombre, no empezar con un
numero.
VARIABLES :
Una variable es un ente (objeto_dato) que almacena una posición de memoria cuyo valor puede cambiar
durante el desarrollo del algoritmo o ejecución del programa.
Una variable se identifica por los siguientes atributos:
a) nombre que le identifica.
b) tipo que describe el universo en donde se desenvuelve la variable.
Los nombres de las variables, a veces conocidos como Identificadores, suelen constar de varios caracteres
alfanuméricos de los cuales el primero debe necesariamente ser una letra.
Ejemp: int par; float num_123 ; char opc1 ; char nombre[15] ; short pequenio1 ;
par=2. unsignet sin_signo;
CONSTANTES: Son identificadores que generalmente son declarados en el programa antes de las
variables, estos identificadores por lo general asumen un valor dado por el programador, éste valor no
cambia durante el proceso del programa.
getch();
} Dando como resultado:
el valor verdadero de t es 1
el valor falso de t quivale a 0
Otra manera es usando los Interruptores (switch=sw) que sólo es usado cuando a la variable se le inicializa
a, 0 (falso) para luego cambiar a 1 (verdadero), con cualquiera de estos valores y dependiendo en la
ubicacion del programa se le cambia al valor opuesto
int sw=0; //se asume falso int i,sp=0,simp=0,sw=0; //asume falso
........do{ for(i=1;i<=100;i++)
if(a<b) if(i%2==0){
cout<<proceso1; sp=sp+i;
proceso2; sw=1; // asume verdadero }
sw=1 // asume verdadero else
else simp=simp+i;
cout<<proceso3 cout<<"La suma de los primeros 100 pares es
while(sw!=1);// mientras no sea verdadero "<<sp<<endl
................ <<"\nLa suma de los primeros 100 impares es
Ejemplo de aplicación "<<simp;
/*Programa que suma los pares y los impares de getch();
100 numeros enteros positivos*/ }
#include<iostream.h> /*Salida
#include<conio.h> La suma de los primeros 100 pares es 2550
main(){ La suma de los primeros 100 impares es 2500 */
MEMORIA
VAR1=66
SUM0
AUXVAR1*17
ACUVAR1+5 SUMSUM+AUX+ACU
SUM0+(66+17)+(66+5)
Como puede apreciar los valores son almacenados en bloque, claro que esta explicación es muy simplista,en
realidad cada valor es almacenado en caldas de memoria y tienen una direccion que determina que espacio
de memoria va a utilizar.
El espacio de memoria la determina el tipo de datos que es utilizado por la variable o identificador. Esto hace
que un lenguaje de programación difiera de un programa de aplicación.
Espero que con estas lineas se comprenda la razon por la cual es necesario que una variable tenga un tipo
de datos.
Pseudocodigo Leer R
Inicio INICIO
Leer R Calculo del Area
Calculo del Area S=pi*R*R
S=pi*R*R R
Calculo de la longitud Calculo de la longitud
L=2*pi*R L=2*pi*R S=pi*R*R
Escribir S,L
Fin Escribir S,L
L=2*pi*R
Fin
S, L
FIN
Escribir R
Fin N-S K=pi/180
INICIO
K=PI/180
F1,F2,θ
LEE F1,F2,θ
FIN
P3. Desarrolle un algoritmo que permita convertir los grados Fahrenheit a Celcius
Pseudocodigo
Inicio INICIO
Lee °F
°C = (F-32)x9/5
Escribe °C °F
Fin
°C= (°F-32)x9/5
°C
FIN
P4. Desarrolle un algoritmo que permita simular el retiro de dinero de un cajero automatico.
El cajero solo emite billetes de las siguientes denominaciones: 200,100,50,20 y 10 .
Objeto_dato de Entrada: Q //Cantidad
Objeto_dato de Salida : b200, b100, b50, b20, b10 //denominación de billetes
Pseudocodigo
Inicio
Leer Q
b200 =entero(Q/200)
Q=resto(Q/200)
FIN
Las estructuras de selección permite al usuario tener un control del programa mediante el uso de
instrucciones de control,constituyendo mecanismos para dirigir el flujo de ejecución, dentro de estas
a).Instrucción de Control Simle.
La estructura Si - Entonces
Indica a la computadora que efectúe una serie de una o mas instrucciones basadas en el resultado de
una comparación.
INICIO
Pseudocodigo
SI la condicion es verdadera, entonces V
CONDICION
Proceso de verdadero
Fin de SI F
PROCESO
DIAGRAMA NASSI_SCHNEIDERMAN(N-S)
CONDICION
VERDAD (SI)
PROCESO 1
FIN
PROCESO 2
ESCRIBIR
FIN
PROCESO_F PROCESO_V
IMPRIMIR
ESCRIBIR
FIN
FIN
Men
FIN
1.3 Ingrese una edad y decir si es mayor de edad e imprimir la edad ingresada
Objeto_Dato de Entrada: Edad
Objeto_Dato de Salida :Men y edad
Pseudocodigo INICIO
Inicio
Leer E
Si (E>=18) entonces
Men= “Mayor de Edad” E
Fin del Si
Escribir inicio
Men, E E>=18
Leer E
Fin
Si(E>=18)
Mayor de Edad
VERDAD (SI)
Men= “Mayor de Edad”
ESCRIBIR Men, E
Men,E
FIN
Fin
1.5 Se tienen cuatro mensajes para las notas obtenidas en un curso de Actualizacion; cuando la nota
obtenida es igual o mayor a 17 debe decir “Sobre Saliente”; si la nota es igual o mayor a 15 “Notable”;igual
o mayor a 13 “Aprobado”; “Asistente para el resto”.
Haga el Algoritmo
Objeto_Dato de entrada:Nota
INICIO
Objeto_Dato de Salida :Mensaje
Pseudocodigo
Inicio N
Leer Nota (N)
Si N>=17 entonces F
Men=”Sobre Saliente” N>=17
Si no V
Si N>=15 entonces
SOBRE
Men= “NOTABLE ” F N>=15 SALIENTE
Sino
Si N>=13 entonces V
Men= “Aprobado” Notable
Sino
Men= “Asistente”
Fin del Si V
N>=13
Fin del Si
Fin del Si F
Escribir Men
Fin Asistente Aprobado
Men
N-S
INICIO
LEER NOTA N
SI N>=17
NO SI
N>=15
NO SI SOBRESALIENTE
NO N>=13 SI NOTABLE
ASISTE APROB
ESCRIBIR MEN
FIN
La Var_Selectora puede ser variable, expresión, función; empero, sin embargo, el valor representado
debe ser por decir lo menos, un valor escalar es decir un dato numérico entero o un carácter . No se acepta
una cadena o un dato real.
Se debe entender que cada alternativa tiene un único valor y que va ha realizar una determinada acción o
proceso.
(b) Si halla una coincidencia que contenga el valor de la Var_Selectora, entonces ejecutara el proceso
correspondiente dando por finalizado la estructura, para luego buscar otra coincidencia, y ejecutar.
(c) Existe un termino que se usa ocasionalmente y que representa la acción cuando ninguna de las
alternativas se cumple, es el caso del “si no” , el termino no es obligatorio, pero permita clarificar una
aplicación.
INICIO
Pseudocodigo
Condicion o var_Selectora
En Caso que (Var_Selctora) sea Leer Dato
Caso 1 proceso_1
Caso 2 proceso_2
Caso 3 proceso_3 Condicion
……………………….
Caso N proceso_N
Caso X proceso_Desconocido
Var_alterna1
Fin del Caso Proceso1
Var_alterna2 Proceso2
Var_alterna3 Proceso3
Var_alternaN ProcesoN
Var_alternaX Proceso_Desco
IMPRIMIR
FIN
1 CONDICIONANTE O
VAR_SELECTORA
2
3
Proceso_1 Proceso_2 …
Proceso_3 X
.... N
Proce_N Proc_Desc
N-S
INICIO
Establecer Operandos op1,op2
Mas ‘+’; Menos ‘-‘; Por ‘*’; Entre ‘?’; Residuo ‘ ¿’; Potencia ’~’
op1+op2 -
*
op1-op2
op1*op2 ?
op2<>0 ¿
no si
error no op2<>0si ~ X
Se deja como ejercicio para que sea completado.
INICIO 1
Inicializar constantes
Mas =’+’
Menos =’-’ IMPRIMIR
Por =’*’ RESULTADO
Entre =’?’
Residuo =’¿’
Potencia =’~’
FIN
DIGITAR EL OPERADOR A
USAR
INGRESE :
OPERANDO1
OPERANDO2
OPERADOR
‘?’
Operando2
No Diferente de Si
‘¿’ RESULTADO=RESIDUO(OPER1/OPER2)
RESULTADO=(OPE1)~(OPE2)
‘~’
1
NO
CONDICION
Diagrama Nassi_Schneiderman
SI IMPRIMIR
1 1 1 1 1 FIN
D=
A A B A 2 B A 3B A N *B
A,B,N
Suma=0.
Mientras(C=N) hacer 1
AB=(A+c*B).
Inverso=1/AB.
Suma=Suma+Inverso.
C++. C<N
Fin del mientras
Escribir: Suma=Suma+1/A.
Fin SUMA=SUMA+1/A
AB=(A+C*B)
INVERSO=1/AB
SUMA=SUMA+INVERS IMPRIMIR
SUMA
C++
FIN
2. En la siguiente serie se pide hallar la suma de los elementos que ocupan las posiciones pares,y la
suma total de elementos, sabiendo que el # de termninos es igual a 50.
4 6 8
Su 2 ...
3 5 7 INICIO
Solucion:
Objetos_Datos de Entrada: N
Objetos_Datos de Salida: N
suma de posiciones pares: sp
suma total de elementos: su
Pseudocodigo i=1,su=0,sp=0
Inicio
Leer N F
Establecer variables i<-N
i=1; par=0;Su=0;
mientras(i<=N) V sp,su
si(resto (i/2=0)entonces V
Resto(i/2)=0
sp=2*i/(2*i-1)
fin del si F
su=2*i/(2*i-1) sp=2*i/(2*i-1)
i=i+1
fin del mientras
FIN
escribir su, sp
sp=2*i/(2*i-1)
i=i+1
PROCESO2
DIAGRAMA (N-S)
PROCESO1 V F
PROCESO2 Condicion
ESCRIBIR
MIENTRAS CONDICION
FIN
INICIO
Problema de Aplicación
Se ingresa un Numero de varias cifras,
y luego invertis sus cifras. LEER N
Por ejemplo 1234 invertido 4321
Objetos_datos de entrada y Salida
Inverso=0
Objeto_Dato de Entrada: Numero
Objeto_Dato de Salida:Salida numero invertido.
Leer
Pseudocodigo numero
Inicio
Leer numero
Inicializar variable : inverso 0 Inverso 0
Hacer
Digito resto(M/10)
Inverso inverso*10+digito.
M=numero/10 M=numero
Mientras(numero>0)
Escribir inverso
Fin
Digitoresto(M/10)
Inversoinverso*10
+digitoM=numero
M=numero/10
V F
Numero> 0
Inverso
FIN
Esta instrucción “hacer procesos… mientras (condicion) sea verdadera”, es utilizada para consistenciar y
controlar la repeticion de un propgrama sin necesidad de salir, dandole al usuario el control del mismo. Vea
el siguiente ejemplo:
Se desea hallar la suma de los primeros N terminos de la siguiente serie:
1 2 3 4
S ...
t 1 2t 3 3t 5 4t 7
PROCESO
desde/para de var_contador=Vi Hasta Vf
ProcesoA
ProcesoB IMPRIMIR
Fin desde/para
FIN
Aplicación
Se va a Ingresar un Numero y la tarea consiste
en mostrar todos los divisores de ese numero ingresado.
Cuando el numero Ingresado tiene por divisores
a la unidad(1) o al mismo numero mostrara un
mensaje diciendo “ El Numero es Primo ”
SOLUCION
Objetos_Datos de ENTRADA Y SALIDA
Objejo_Datos de Entrada: el Numero entero(NumeEnte)
Objeto_Dato de Salida : numero de divisores(NumeDivi),
mensaje
Fin Resto(Nume si
Ente/Divisor
no
Escribir Divisor
1
ContDivi=ContDivi+1
No si
ContDivi=2
MENSAJ 1
DIVISOR
FIN