Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3
Contenido 2.- Problemas, Algoritmos y Programas
2.1 Algoritmos
4
Contenido 2.- Problemas, Algoritmos y Programas
2.1 Algoritmos
5
Contenido 2.- Problemas, Algoritmos y Programas
2.1 Algoritmos
1. Inicio.
2. Leer el pedido.
3. Examinar la ficha del cliente.
4. Si el cliente es solvente, aceptar pedido;
5. en caso contrario, rechazar pedido.
6. Fin.
6
Contenido 2.- Problemas, Algoritmos y Programas
2.1 Algoritmos
7
Contenido 2.- Problemas, Algoritmos y Programas
2.2.- Proceso de Creación de un Programa
1. Planteamiento y análisis del problema
⚫ Definición
⚫ Representación de los datos
⚫ Entradas
⚫ Salidas
2. Diseño del Algoritmo
⚫ Descomposición en subproblemas
⚫ Diseño descendente
⚫ Refinamientos sucesivos
⚫ Optimización y Depuración
3. Implementación
⚫ Elección del lenguaje
⚫ Adaptación al problema
⚫ Conocimientos
⚫ Disponibilidad de rutinas
⚫ Herramientas dedesarrollo
⚫ Entorno de la aplicación
⚫ Codificación (normas deestilo)
4. Ejecución
⚫ Traducción
⚫ Prueba y Depuración
8
Contenido 2.- Problemas, Algoritmos y Programas
2.3.- Datos, Tipos de Datos y Operaciones Primitivas
– Estructurados
9
Contenido 2.- Problemas, Algoritmos y Programas
2.3.- Datos, Tipos de Datos y Operaciones Primitivas
10
Contenido 2.- Problemas, Algoritmos y Programas
2.3.- Datos, Tipos de Datos y Operaciones Primitivas
11
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
Definición:
const
PI = 3.1416
12
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
Definición
var
entero: notas
13
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
14
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
var
entero: x, y
......
x 2
yx+2
var
entero : n
........
n 2
nn+1
15
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
Asignación aritmética
var
entero : x
.......
x3+4*8
16
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
Asignación lógica
var
logico: x
........
x 8< 5
Asignación de cadena
var
cadena: cad
......
cad “Hola que tal”
17
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
18
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
⚫ Expresiones Aritméticas
Operador Significado
+ suma
- resta
* multiplicación
/ división real
div división entera
mod resto (módulo)
19
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
20
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
a) 2 * 5 + 4*3 b) 3 + 2 *6 – 8 / 2 c) –4 / 2 * 2 – 3 + 5
10 + 4*3 3 + 12 – 8 / 2 –2 * 2 – 3 + 5
10 + 12 3 + 12 – 4 –4 – 3 + 5
22 15 – 4 –7 + 5
11 –2
21
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
⚫ Expresiones lógicas:
22
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.3.- Evaluación de Expresiones. Precedencia de Operadores.
⚫ Expresiones lógicas:
Operadores relacionales
Comparaciones entre valores de tipo numérico, carácter o lógico, y el
resultado será verdadero o falso. Con estos operadores se pueden
expresar condiciones en los algoritmos, de las cuales dependerá la
realización de ciertas tareas.
Formato general:
expresión1 operador_de_relación expresión2
23
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.3.- Evaluación de Expresiones. Precedencia de Operadores.
⚫Expresiones lógicas:
Operadores relacionales
Operador Significado
24
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.3.- Evaluación de Expresiones. Precedencia de Operadores.
Prioridad de los Operadores relacionales
⚫ Las comparaciones de datos de tipo numérico, siguen la ordenación habitual que se emplea en
matemáticas.
⚫ Cuando se aplican los operadores relacionales a datos de tipo lógico, la constante falso es
menor que la constanteverdadero.
⚫ Si en la expresión aparecen caracteres alfabéticos en minúsculas, éstos siguen la ordenación
alfabética: ‘a’ < ‘b’ < ‘c’ < … < ‘h’ < … < ’z’.
⚫ Si en la expresión aparecen caracteres alfabéticos en mayúsculas, éstos siguen la ordenación
alfabética: ‘A’ < ‘B’ < ‘C’ < … < ‘H’ < … < ’Z’.
⚫ Los caracteres que representan a los dígitos decimales guardan su orden. Es decir: ‘0’ < ‘1’ < ‘2’
< … < ‘8’ < ‘9’.
⚫ Pero si aparecen caracteres especiales ¿, =, *, +, ), /, &, %, $, #, \, ..., entonces habría que
consultar el código normalizado.
Estas agrupaciones se encuentran en orden decreciente, de esta formasería:
‘*’ < ‘1’ < … < ‘9’ < ‘A’ < … < ‘Z’ < ‘a’ < … < ‘z’. Sin embargo, sería recomendable consultar el código
de caracteres de su ordenador: ASCII (American Standar Code for Information Interchange) o
bien el EBCDIC (Extended Binary-Coded Decimal Interchange Code).
25
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.3.- Evaluación de Expresiones. Precedencia de Operadores.
⚫Expresiones lógicas:
Operadores lógicos
Tablas de verdad:
no:
p no p
verdadero falso
falso verdadero
26
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.3.- Evaluación de Expresiones. Precedencia de Operadores.
⚫Expresiones lógicas: Operadores lógicos
Tablas de verdad:
Y:
p q p yq
verdadero verdadero verdadero
verdadero falso falso
falso verdadero falso
falso falso falso
Ó:
p q p óq
verdadero verdadero verdadero
verdadero falso verdadero
falso verdadero verdadero
falso falso falso
27
Contenido 2.- Problemas, Algoritmos y Programas
2.4.- Variables y Expresiones
2.4.4.- Operaciones de E/S básicas.
⚫ Lectura
Leer (variable_entrada)
Ejemplo:
leer(a) leerá un valor de la entrada y lo almacenará en la variable a.
⚫ Escritura
Escribir(cadena)
Ejemplos:
escribir(“Hola, que tal”) escribirá la cadena: Hola, que tal
escribir(“El valor de la variable a es: “, a), suponiendo que el valor almacenado
en la variable a sea igual a 3, visualizará: El valor de la variable a es3.
28
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
– Lenguaje Natural.
– Pseudocódigo.
– Diagrama de Flujo.
29
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
30
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.2.- Pseudocódigo
⚫ Parecido al lenguaje natural, pero está sujeto a determinadas reglas
⚫ Estructura es similar a la de un programa, lo que facilita su traducción a
lenguaje de alto nivel.
31
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.2.- Pseudocódigo. Estructura
// Comentarios que faciliten la comprensión del algoritmo, por ejemplo, objetivos
// del algoritmo, datos del programador, datos de entrada y datos de salida.
Algoritmo Nombre_algoritmo
const
//Sección de definición deconstantes
tipos
//Sección de definición detipos
var
//Sección de declaración de variablesglobales
Principal
var
//Sección de declaración de variables locales
inicio
//Inicialización de variables
Acción 1
Acción 2
.
. //Cuerpo del algoritmo
Acción n
fin_principal
fin_algoritmo
32
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.3.- Diagrama de Flujo
⚫ Claridad en la comprensión
⚫ Dificultad en la actualización
⚫ Se usan unos símbolos que contienen las instrucciones del algoritmo,
estos símbolos se enlazan mediante flechas que indican el flujo, el orden o
secuencia en el que deben ir realizándose las operaciones.
⚫ Diagrama del Sistema u Organigrama: muestra un esquema de la
aplicación según los datos de E/S y los soportes donde se encuentran
⚫ Diagrama de Detalles u Ordinograma: Se describe toda la secuencia de
operaciones que resuelven el problema. Se debe expresar el Comienzo, el
fin, las operaciones y la secuencia.
33
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.3.- Diagrama de Flujo
34
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.3.- Diagrama de Flujo
35
Contenido 2.- Problemas, Algoritmos y Programas
2.5.- Descripción de algoritmos
2.5.3.- Diagrama de Flujo
36
Contenido 2.- Problemas, Algoritmos y Programas
2.6.- Fundamentos del lenguaje C
2.6.1 Historia
1967 – Martin Richards inventa el lenguaje BCPL
1970 - Aparece el lenguaje B escrito por Ken Thompson para el primer sistema
UNIX de la DEC PDP-7, basado en BCPL.
1972 – Dennis M. Ritchie escribe el lenguaje C y se reescribe el S.O. UNIX en C.
Inicialmente muy ligado a UNIX, posteriormente se reescriben compiladores para
todas las plataformas.
⚫ Identificadores:
– Longitud máxima de 31 caracteres
– Formado por los caracteres del alfabeto ingles, los dígitos del 0 al 9 y el
carácter de subrayado,
Tamaño de
Tipo Rango
bits
char 8 -128 a 127
int 16 –32768 a 32767
float 32 3.4E-38 a 3.4E+38
double 64 1.7E-308 a 1.7E+308
void 0 Sin valor
– double: long.
⚫ Variables
– Todas las variables deben ser declaradas antes de su uso.
– Una declaración informa al compilador del nombre identificador asociado a
cada variable así como de su tipo.
– Se puede pensar en una variable como en una posición específica de
memoria, reservada para un tipo específico de datos y con un nombre para
referenciarla fácilmente.
⚫ Variables
La plantilla general de declaración de una variables es:
Ejemplos:
int num;
int num = 2;
char c = ‘x’;
int n1,n2,n3;
⚫ Constantes:
Se pueden definir :
⚫ Constantes literales
– Numéricas:
⚫ Enteros: ejemplo: 1, - 2..
⚫ Operadores:
– De asignación
⚫ El signo igual es el operador de asignación (=).
⚫ El operando de la izquierda debe ser una variable mientras que el de la
derecha puede ser una constante, otra variable o bien una expresión.
Ejemplos:
int numero;
numero = 7;
⚫ Operadores:
– De asignación compuestos
⚫ Operadores:
– Monarios:
⚫ incremento (++) y decremento (--)
⚫ Operadores:
– Aritméticos
– Lógicos:
OPERADOR SIGNIFICADO
! Not (NO lógico)
&& And (Y lógico)
|| Or (O lógico)
– Relacionales
OPERADOR SIGNIFICADO
== Igual a
!= No igual a
> Mayor que
< Menor que
>= Mayor o igual que
<= Menor o igual que
⚫ Expresiones:
– En C el valor 0 es FALSO y cualquier valor distinto de cero es
VERDADERO.
⚫ Expresiones:
– Precedencia de operadores
Operador Asociatividad
() [] De izquierda a derecha
- ++ -- ! ~ * & sizeof(tipo) De derecha a izquierda
*/% De izquierda a derecha
+- De izquierda a derecha
<< >> De izquierda a derecha
< <= > >= De izquierda a derecha
== ¡= De izquierda a derecha
& De izquierda a derecha
&& De izquierda a derecha
|| De izquierda a derecha
?: De derecha a izquierda
= *= /= %= += -= &= <<= De derecha a izquierda
>>=
, De izquierda a derecha
⚫ Expresiones:
– Conversión de tipos:
⚫ Ímplícita: Se da cuando se mezclan expresiones aritméticas de un tipo
con las de otro.
– Sentencia de asignación: El valor del lado derecho se convierte
al tipo de la variable del lado izquierdo pudiendo haber pérdida de
información.
55
Ejemplo: 3 + 5.3 → 3.0 + 5.3 = 8.3
2.6.- Fundamentos del lenguaje C
⚫ Expresiones:
– Conversión de tipos:
Por ejemplo :
float f=0.5;
f=f +1/2 ➔ f=0.5+0 ➔ 0.5
f=f + (float) 1/2 ➔ f=0.5+0.5 ➔ 1
Código Significado
\a alarma
\b Espacio atrás
\f Salto de página
\n Salto de línea
\r Retorno de Carro
\t Tabulación Horizontal
\” Comillas dobles
\’Comilla simple
\0 Nulo
\\ Barra invertida
\v Tabulación vertical
\xdd Carácter ASCII cuyo código
hexadecimal es dd
\OOO Carácter ASCII cuyo código
octal es
OOO
60 Contenido 2.- Problemas, Algoritmos y Programas
2.6.- Fundamentos del lenguaje C
#include ..................
#define ..........
/*Definiciones de tipos*/
/*Declaración de funciones*/
/*Implementación de funciones incluida la función main:*/
int main()
{
/*Declaración de variables locales a main*/
/*Sentencias del programa*/
return 0;
}
63
2.7 Ejemplo
⚫ Descomposición en subproblemas
⚫ Diseño descendente
⚫ Refinamientos sucesivos
⚫ Optimización y Depuración
1) Inicio.
2) Leer Radio.
3) Calcular Longitud
4) Calcular Superficie
5) Calcular Volumen
6) Escribir Longitud, Superficie y Volumen.
7) Fin.
1) Inicio.
2) Leer Radio.
3) Longitud= 2*3.1416*Radio
4) Superficie = 3.1416*(Radio*Radio)
5) Volumen= 4/3*3.1416*(Radio*Radio*Radio)
6) Escribir Longitud, Superficie y Volumen.
7) Fin.
leer
(radio)
Fin