1.
UNIVERSIDAD FERMIN TORO
VICERRECTORADO ACADÉMICO
FACULTAD DE INGENIERÍA
Chucho Briceño
Cabudare, edo. Lara
Autores:
Jimenez Ramòn CI 20.539.206
Diana Mogollòn CI 26.424.164
Algoritmos
23 de Julio del 2018
Algoritmos
Como algoritmo denominamos un conjunto ordenado y finito de operaciones simples a través
del cual podemos hallar la solución a un problema.Los algoritmos nos permiten ejecutar una
acción o resolver un problema mediante una serie
de instrucciones definidas, ordenadas y finitas.
Así, dado un estado inicial y una entrada, y
siguiendo los sucesivos pasos indicados, se llega
al estado final y se obtiene una solución.En
informática o programación, el algoritmo es la
secuencia de instrucciones mediante la cual
podemos resolver un problema o cuestión. De
hecho, todas las tareas ejecutadas por la
computadora se basan en algoritmos. Un
software o programa informático está diseñado a
base de algoritmos, de modo que podemos
introducir una tarea en él y resolverla.
2. 2
Caracterìsticas
Carácter finito. "Un algoritmo siempre debe terminar después de un número finito de pasos".
Precisión. "Cada paso de un algoritmo debe estar precisamente definido; las operaciones a
llevar a cabo deben ser especificadas de manera rigurosa y no ambigua para cada caso".
Entrada. "Un algoritmo tiene cero o más entradas: cantidades que le son dadas antes de que el
algoritmo comience, o dinámicamente mientras el algoritmo corre. Estas entradas son tomadas
de conjuntos específicos de objetos".
Salida. "Un algoritmo tiene una o más salidas: cantidades que tienen una relación específica
con las entradas".
Eficacia. "También se espera que un algoritmo sea eficaz, en el sentido de que todas las
operaciones a realizar en un algoritmo deben ser suficientemente básicas como para que en
principio puedan ser hechas de manera exacta y en un tiempo finito por un hombre usando lápiz
y papel".
A partir del carácter finito y de la salida se deduce que ante una misma situación inicial (o
valores de entrada) un algoritmo debe proporcionar siempre el mismo resultado (o salida), con
excepción de los algoritmos probabilistas.
Datos
Un dato es la expresión general que describe los objetos con los cuales opera una
computadora. Todos los datos tienen un tipo asociado con ellos. Un dato puede ser un simple
caracter, tal como "b" o un valor entero tal como 35. El tipo de dato determina la naturaleza del
conjunto de valores que puede tomar una variable.
3. 3
Tipos de Datos
En los programas cada elemento de datos debe ser de un tipo especifico. El
tipo de datos determina cómo se representaran los elementos de datos en la
computadora y qué tipo de procesamiento podrá ejecutar sobre ellos la
computadora. Los datos a procesar por una computadora pueden clasificarse
en:
a) Datos Simples: ocupan sólo una casilla de memoria, por lo tanto una
variable simple hace referencia a un único valor a la vez. Hay tres tipos
básicos de datos simples, los cuales son:
● Datos Numéricos (enteros y reales)
● Datos Alfanuméricos (carácter y cadena)
● Datos Lógicos o boléanos
b) Datos Estructurados: a diferencia de los datos simples, estos ocupan mas
de una casilla de memoria, entre ellos tenemos:
● Arreglos (Vectores y Matrices)
● Registros
● Archivos o ficheros
4. 4
● Punteros
Variables
Variables:
Son zonas de memoria cuyo contenido cambia durante la fase de
procesamiento de información.
Tipos de variables:
● Variables Numéricas (Enteras y Reales)
● Variables Alfanuméricas
a) Caracteres alfabéticos
b) Dígitos
c) Caracteres especiales
● Variables Lógicas (Boolenas)
Son las que únicamente pueden contener dos valores, los cuales son:
● Valor Verdadero ó 1
● Valor Falso ó 0
5. 5
Estos tipos de variables pueden tomar únicamente valores del mismo tipo, es
decir si la variable es entera solamente puede almacenar datos enteros.
Operadores
Los operadores aritméticos como su nombre lo indica, realizan operaciones
aritméticas entre datos de tipo numérico, y devuelven un resultado numérico.
Los operadores aritméticos utilizan operandos numéricos (ya sea en forma de
variables, constantes simbólicas o constantes numéricas) y generan un
resultado tipo numérico también. Si te lo imaginas como un proceso, la figura
2 te ayuda a entender este proceso. En la siguiente figura te muestro los
operadores aritméticos del lenguaje de programación Java
Figura 1. Operadores aritméticos del lenguaje Java
6. 6
En programación, es obligatorio usar el símbolo * cada vez que se desea realizar
una multiplicación. En programación, a diferencia de lo que sucede en
matemáticas, dos variables juntas no implican multiplicación. Por ejemplo:
y = xz
En matemáticas indica que el valor de y es igual a la multiplicación entre las
variables x, y z. En programación, tenemos que indicar explícitamente esta
operación de la siguiente forma:
7. 7
y = x * z;
Lo mismo sucede con los paréntesis. En matemáticas se utilizan tanto para
agrupar términos de una ecuación, como para multiplicarlos. En programación
ningún otro símbolo sirve para multiplicar más que el *. Como se verá más
adelante, el uso de los paréntesis en programación está reservado ya sea para
alterar la jerarquía de operadores, o para llamar a un método. Por lo tanto, una
expresión matemática de la siguiente forma:
y = 3x(2z+6)
Debe ser traducida considerando la funcionalidad de los operadores del lenguaje
que se va a utilizar para programar. En el caso de Java (y una gran mayoría de
los lenguajes de programación populares), la conversión es la siguiente:
y = 3 * x * ( 2* z + 6 );
El operador residuo.
El operador % se conoce como “módulo de la división”. Este operador obtiene el
residuo de una división entre números enteros. Si ya has olvidado las partes de
una división, te tengo una figura para que las recuerdes y puedas entender esta
operación.
8. 8
Operadores
Jerarquìa de operadores
La jerarquía o precedencia de operadores es simplemente un conjunto de
reglas que indica cuál de todos los operadores aritméticos debe realizarse
primero.
Para obtener el resultado de una expresión aritmética (o evaluar una
expresión) se deben considerar las reglas de precedencia de operadores, las
cuales son las siguientes:
1. Los operadores se evaluan de izquierda a derecha, y respetando la
jerarquía de estos.
2. La jerarquía de operadores aritméticos es la siguiente:
○ Nivel 1: * / %
○ Nivel 2: + –
3. Los únicos operadores que pueden alterar estas reglas son los
paréntesis ( ).
9. 9
Constantes
Constantes:
Una constante es un dato numérico o alfanumérico que no cambia
durante todo el desarrollo del algoritmo o durante la ejecución del
programa. Es un objeto de valor invariable. Para expresar una
constante se escribe explícitamente su valor.
10. 10
Tipos de Constantes:
● Constantes Numéricas (Enteras y Reales)
● Constantes Alfanuméricas
● Constantes Lógicas (Boolenas)
Las constantes pueden ser:
Constantes sin nombre: Es una expresión numérica donde se puede
utilizar directamente el valor.
Constantes con nombre: Se hace una reserva de memoria en la cual se
guarda el valor que será utilizado como constante.
Ejemplo:
a) PI = 3.1416
b) E = 2.718228
c) Iva = 0.13
11. 11
Contadores
Los procesos repetitivos requieren contar los sucesos y acciones internas, una
forma de hacerlo es mediante un contador. Un contador es una variable cuyo
valor se incrementa o decrementa en una cantidad constante en cada
repetición. La forma en que se construye un contador es la siguiente:
int contador = 1; //variable con valor inicial de 1
contador = contador+1;
contador += 1;
contador ++;
Acumuladores
Las variables acumuladoras tienen la misión de almacenar resultados
sucesivos, es decir, de acumular resultados, de ahí su nombre.
Las variables acumuladores también debe ser inicializadas. Si llamamos
“acum” a un acumulador, escribiremos antes de iniciar el bucle algo como
esto: acum = 0
12. 12
Por supuesto, el valor inicial puede cambiar, dependiendo de la naturaleza del
problema. Más tarde, en el cuerpo del bucle, la forma en la que nos la
solemos encontrar es: acum = acum + N
…siendo N otra variable. Si esta instrucción va seguida de otras: acum =
acum + M acum = acum + P
… estaremos acumulando en la variable “acum” los valores de las variables
M, N, P, etc, lo cual resulta a veces muy útil para resolver ciertos problemas
repetitivos.
Ejemplo: Escribir un algoritmo que pida 10 números por el teclado y los
sume, escribiendo el resultadoalgoritmo sumar10variables cont es entero
suma es entero N es entero inicio suma = 0 para cont desde 1 hasta 10 hacer
inicio leer (N) suma = suma + N fin escribir (suma) fin
En este algoritmo, cont es una variable contador típica de bucle. Se ha usado
un bucle “para”, que es lo más sencillo cuando conocemos previamente el
número de repeticiones (10 en este caso). La variable Nsuma es el
acumulador, donde se van sumando los diferentes valores que toma N en cada
repetición. se usa para cada uno de los números introducidos por el teclado, y
la variable
13. 13
Identificadores
Los identificadores representan los datos de un programa (constantes,
variables, tipos de datos). Un identificador es una secuencia de caracteres que
sirve para identificar una posición en la memoria de la computadora, que
permite acceder a su contenido.
Debe comenzar con una letra (A a Z, mayúsculas o minúsculas) y no deben
contener espacios en blanco.
Letras, dígitos y caracteres como la subraya ( _ ) están permitidos después del
primer carácter.
La longitud de identificadores puede ser de varios caracteres. Pero es
recomendable una longitud promedio de 8 caracteres.
El nombre del identificador debe dar una idea del valor que contiene.
14. 14
Condicionantes
En programación, una sentencia condicional es una instrucción o grupo de instrucciones que se
pueden ejecutar o no en función del valor de una condición.
Los tipos más conocidos de sentencias condicionales son el SI..ENTONCES (if..then), el
SI..ENTONCES..SI NO (if..then..else) y el SEGÚN (case o switch), aunque también podríamos
mencionar al manejo de excepciones como una alternativa más moderna para evitar el
"anidamiento" de sentencias condicionales.
Las sentencias condicionales constituyen, junto con los bucles, los pilares de la programación
estructurada, y su uso es una evolución de una sentencia en lenguaje ensamblador que
ejecutaba la siguiente línea o no en función del valor de una condición.
Expresiones
Las expresiones son combinaciones de constantes, variables, símbolos de
operación (operadores), paréntesis y nombres de funciones especiales. Por
ejemplo:
sqrt ((p-a)*(p-b)*(p-c));
(a+b+c) / p;
Una expresión toma un valor que se determina por el resultado de la
ejecución de las operaciones indicadas, tomando los valores de las variables y
constantes y aplicando las prioridades de las operaciones.
15. 15
Según el tipo de operadores que se emplee en la expresión. Estas se clasifican
en aritméticas, lógicas, de caracteres o mixtas.
Expresiones aritmèticas:
Este tipo de expresiones nos sirve para representar formulas matemáticas y
utilizan los operadores siguientes:
Operador Acción
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
++ Incremento
-- Decremento
16. 16
Las expresiones que tienen 2 o más operadores requieren reglas de
precedencia que permiten determinar el orden en que habrán de efectuarse
dichas operaciones. Por ejemplo:
5 + 8 * 2 //Primero se hace 8 * 2 y luego se suma 5
5+16 = 21
10%3 = 1 //Regresa el residuo de la división entera
Nota: En caso de coincidir la prioridad de varios operadores en una expresión
el orden en el que se efectúan es de izquierda a derecha.
Expresiones lógicas
Estas emplean los operadores lógicos:
Operador Acción
Operadores Relacionales
> Mayor que
>= Mayor o igual
< Menor que
17. 17
<= Menor o igual
== Igual
!= Diferente
Operadores lógicos
&& Y
|| O
!
Condicionantes
En programación, una sentencia condicional es una instrucción o grupo de
instrucciones que se pueden ejecutar o no en función del valor de una
condición.
Los tipos más conocidos de sentencias condicionales son el SI..ENTONCES
(if..then), el SI..ENTONCES..SI NO (if..then..else) y el SEGÚN (case o
switch), aunque también podríamos mencionar al manejo de excepciones
como una alternativa más moderna para evitar el "anidamiento" de sentencias
condicionales.
18. 18
Las sentencias condicionales constituyen, junto con los bucles, los pilares de
la programación estructurada, y su uso es una evolución de una sentencia en
lenguaje ensamblador que ejecutaba la siguiente línea o no en función del
valor de una condición.
Condicionantes
Un bucle o lazo (Loop) es un segmento de un algoritmo o programa, cuya
instrucciones se repiten un número determinado de veces mientras se cumple
una determinada condición (existe o es verdadera la condición). SE debe
establecer un mecanismo para determinar las tareas repetitivas. Este
mecanismo es una condición que puede ser verdadera o falsa y que se
comprueba una vez a cada paso o iteración del bucle (total de instrucciones
que se repiten en el bucle).
Un bucle consta de tres partes:
1. decisión,
2. cuerpo del bucle,
3. salida del bucle.
19. 19
El bucle de la siguiente figura es infinito, ya que las instrucciones (1), (2) y
(3) se ejecutan indefinidamente, pues no existe salida del bucle, al no
cumplirse una determinada condición.
Si tras la lectura de la variable N se coloca una condición, el bucle dejará de ser infinito y tendrá fin
cuando la condición sea verdadera.
20. 20
El diagrama de flujo escrito en pseudocódigo es aproximadamente el siguiente:
Inicio
SUMA 0
1: leer N
Si N = 0 entonces
Escribir SUMA
Ir_a fin
Si_no
Suma suma + N
FIN_SI
IR_A 1
FIN
21. 21
BUCLES ANIDADOS
Un bucle puede anidarse dentro de otro como se vio en clase con los condicionales anidados (un si
fin_si dentro de otro si Fin_si)