Este documento presenta los objetivos y requisitos de dos cursos de algoritmia. Los cursos enseñan el uso de algoritmos y su implementación en lenguajes de programación para resolver una variedad de problemas reales. Los estudiantes aprenderán técnicas algorítmicas, manejo de al menos dos lenguajes de programación, y conceptos de sistemas operativos y hardware.
UNIVERSIDAD NACIONAL ALTIPLANO PUNO - FACULTAD DE INGENIERIA MECANICA ELECTRICA.
Introduccion.ppt
1. Ingeniería de Sistemas E informática
Algoritmica I
Universidad Nacional Mayor de San Marcos
(DECANA DE AMERICA)
Prof.: BERNABE BERROSPI
ELOY ENRIQUE
2. Ingeniería de Sistemas E Informática Algoritmica II
2
PRESENTACIÓN
Estos cursos está diseñado para entrenar a los
alumnos en el uso de los algoritmos para luego
implementar en los lenguajes de programación
más actuales, de esta manera, el estudiante estará
preparado para entender y resolver una amplia
gama de problemas del mundo real.
3. Ingeniería de Sistemas E Informática Algoritmica II
3
requisitos
Objetivo de los cursos
El uso correcto de las técnicas Algoritmicas y Disponer de
una herramienta y técnicas de programación. Con los
cuales podrá afrontar con éxito los problemas reales que se
le presentaran en un ambiente de investigación o laboral.
Al final de los cursos el alumno podrá ejercer y
desempeñarse como programador de computadoras.
Manejo de técnicas Algoritmicas
Manejo de al menos dos lenguaje de programación
Manejo y un entendimiento Lógico de:
Sistemas Operativos, hardware PC,Compilador
Manejo de Proyectos
4. Ingeniería de Sistemas E Informática Algoritmica II
4
Abstraction Problem fundamental
Problema
Modelo
Interfa
Operaciones
estructura de datos
5. Ingeniería de Sistemas E Informática Algoritmica II
5
Sistema Computacional
“El modelado captura las
partes esenciales del sistema”
Abstracción - Modelado Visual
Mundo Real
Interface de Usuar
(Visual Basic,
Java, ..)
Lógica del Negocio
(C++, Java, ..)
6. Ingeniería de Sistemas E Informática Algoritmica II
6
Algoritmo
Conjunto de reglas para resolver un
problema. Su ejecución requiere
unos recursos.
ALGORITMO
0 ó más
entradas
1 ó más
salidas
Memoria E/S Comunicaciones
7. Ingeniería de Sistemas E Informática Algoritmica II
7
REQUISITOS
Es recomendable que el alumno este familiarizado con el
manejo de un computadora y tener sólidos conocimientos en
matemáticas. Debe tener amplios conocimientos y criterios
que le permita comprender con rapidez sistemas reales para
poder programar comprender en sus diferentes contextos.
Manejo adecuado del álgebra de boole y manejo de sistemas
de numeración en base 2.
Además debe comprender lógicamente como trabaja
•hardware de computadora básico
•Manejo de sistema operativo
•Manejo de un compilador
8. Ingeniería de Sistemas E Informática Algoritmica II
8
Lógica de un Computador
Entrada
Salida
ORDENADOR
UNIDAD CENTRAL DE PROCESO
UNIDAD DE
CONTROL
UNIDAD
ARITMÉTICO
LÓGICA
MEMORIA PRINCIPAL
MEMORIA MASIVA
Instrucciones Datos
Datos e Instrucciones
9. Ingeniería de Sistemas E Informática Algoritmica II
9
Que es unComputador?
Un computador es una maquina de entradas
y salidas
Entiende términos de tipo
– 101011110001010001000101111010010101010
En cambio nosotros
– “Sumar gastos de hoy a gastos semanales”
10. Ingeniería de Sistemas E Informática Algoritmica II
10
ModeloBásico deun Computador
Pentium
Atlhon
Cyrix …. Almacenami
ento
Secundario
Procesador
Central
Salida
Ram
Memoria
Principal
Entrada Disc
o
Dur
o
11. Ingeniería de Sistemas E Informática Algoritmica II
11
Users
System software
Programa
Hardware
Sistemas Operativos
uso y comprencion logica
Systema Operativo
Windows
98
windows
2000
DOS
LINUX
UNIX
UNIX
BSD
12. Ingeniería de Sistemas E Informática Algoritmica II
12
LENGUAJE DE PROGRAMACION
•Los Algoritmos encontradas en el diseño se tendrá que
implementar en un lenguaje de programación ya sea
C++,JAVA, Object Pascal etc...
•Aprender un lenguaje de programación es como
aprender un idioma . Se debe practicar constantemente.
•Un Lenguaje de Programación es el intermediario entre
el computador y el programador.
13. Ingeniería de Sistemas E Informática Algoritmica II
13
Algoritmos vs. Programa
Un algoritmo es una secuencia de pasos
finitos, no ambiguos necesarios para
resolver un problema.
La implementación de un algoritmo que
puede correr en un computador es llamado
programa
Sistemas Operativos, Browser, juegos son
ejemplos de programas.
14. Ingeniería de Sistemas E Informática Algoritmica II
14
Queesprogramar?
Mecanismo artificial necesario para decirle al
computador qué hacer.
La programación no requiere talento inherente
Pre-requisitos:
– Atención a detalle: los detalles cuentan en programación. No se
puede ser vago.
– Manejo de Estupidez: ellos hacen exactamente lo que les dices,
ni más ni menos. Depende del tipo de LP el nivel de
especificación.
– Buena Memoria: sintaxis del lenguaje, conjunto de funciones
prescritas disponibles para ser llamadas, parámetros a ser
aceptados, las variables y funciones definidas, y la experiencia
del pasado para ser aplicada cuando se reconocen los
síntomas.
– Habilidad de pensar abstractamente: Sólo si es posible pensar
en pequeñas piezas aisladas será posible trabajar con un gran
programa.
15. Ingeniería de Sistemas E Informática Algoritmica II
15
Code Size
400,000
Solaris 7
17 million
Netscape
40 million
Space Station
10 million
Space Shuttle
7 million
Boeing 777
35 million
NT5
Under 5 million
Windows 95
1.5 million
Linux
Lines of Code
Program/Application
16. Ingeniería de Sistemas E Informática Algoritmica II
16
Resolución de un Problema
Start w ith problem
statement
Analyze problem&
develop algorithm
Write source code
Run & test program
Is there more
problemsolving to
be done?
End
y es
no
Use program
Respuesta
= ‘2’
Problema
a Resolver
Ordenamie
ntode las
Ideas
Creación
del
Algoritmo
Codificació
n
Compilació
n
Ejecución
y
obtención
de
Análisis
Test
Correccion
es
Fin
17. Ingeniería de Sistemas E Informática Algoritmica II
17
Las actividades del aprendizaje se encadenan
en una mini-cascada con un alcance limitado
por los objetivos de la iteración al aprender.
Ciclo del proceso de aprendizaje en la
programacion es Iterativo e Incremental
Análisis
Diseño
Codific.
Pruebas e
Integración
n veces
18. Ingeniería de Sistemas E Informática Algoritmica II
18
Curva de aprendizaje
Incomodidad
tiempo
El aprendizaje incluye tres aspectos:
-Manejo de Algoritmos en forma eficiente
- Metodología de programación.
- Conocimiento de un lenguaje Programación y
- Experiencia
19. Ingeniería de Sistemas E Informática Algoritmica II
19
MECANISMODE ENSEÑANZA-APRENDIZAJE
Cada lenguaje se estudiará mediante la realización de prácticas de laboratorio. En
estas prácticas el alumno aprenderá a utilizar el ambiente operativo de los lenguajes y
revisará código ejemplar. El curso incluye la resolución de ejercicios del texto que no
involucran la utilización de la computadora y los conceptos que se explicaran y
definirán en la teoria.
EVALUACIÓN
Se recomienda la realización de un examen por unidad. Es conveniente la
elaboración de al menos un proyecto final en alguno de los lenguajes estudiados. La
calificación consistirá de lo siguiente.
Exámenes 40%
Tareas 20%
Laboratorio 30%
Proyecto 10%
20. Ingeniería de Sistemas E Informática Algoritmica II
20
Uso del Internet Para agilizar y traspasarlas fronteras del
aprendizaje
El mundo se
tornó complejo y
difícil…
La Internet
– “Siempre encendida”
– No tiene dueño
– Múltiples aplicaciones
– La WWW
– El Doctor WEB
Internet
22. Ingeniería de Sistemas E Informática Algoritmica II
22
Fases en la solución de un problema
Problema
Análisis
Especificación
Diseño
Algoritmo
Programación
Programa
Prueba
23. Ingeniería de Sistemas E Informática Algoritmica II
23
Diseño
Esta etapa consiste en el diseño de
la solución al problema planteado.
Esta solución se desarrolla en
función de un algoritmo.
El algoritmo es un conjunto finito de pasos, en
secuencia, que indican como se resuelve un
determinado problema.
24. Ingeniería de Sistemas E Informática Algoritmica II
24
Diseño
Un algoritmo es una fórmula, un
conjunto de pasos para resolver
un problema.
Los algoritmos se pueden
expresar en cualquier lenguaje,
desde lenguajes naturales como
Español hasta lenguajes de
programación como Java,
pasando por los Diagramas de
Flujo.
25. Debe ser finito.
Debe ser definido (sin
ambigüedades)
Debe ser efectivo y eficiente.
Características de un Algoritmo
26. Ingeniería de Sistemas E Informática Algoritmica II
26
1.1. Definición y propiedades.
Algoritmo: Conjunto de reglas para resolver un problema.
Propiedades
– Definibilidad: El conjunto debe estar bien definido, sin dejar
dudas en su interpretación.
– Finitud: Debe tener un número finito de pasos que se ejecuten
en un tiempo finito.
ALGORITMO
0 ó más
entradas
1 ó más
salidas
27. Ingeniería de Sistemas E Informática Algoritmica II
27
1.1.Definición y propiedades.
Algoritmos deterministas: Para los mismos datos de
entrada se producen los mismos datos de salida.
Algoritmos no deterministas: Para los mismos datos de
entrada pueden producirse diferentes de salida.
ALGORÍTMICA: Estudia técnicas para construir
algoritmos eficientes y técnicas para medir la eficacia
de los algoritmos.
Objetivo: Dado un problema concreto encontrar la
mejor forma de resolverlo.
28. Ingeniería de Sistemas E Informática Algoritmica II
28
1.1.Definición y propiedades.
Proceso clásico de desarrollo de programas.
– Especificación de requisitos del problema.
– Análisis del problema.
– Diseño de la solución.
– Implementación del diseño.
– Pruebas.
Refinamiento por pasos sucesivos.
– Escribir la estructura de la solución en
pseudocódigo, de manera muy genérica.
– Especificar los pasos de forma cada vez más
detallada, y precisa.
– Repetimos el refinamiento hasta llegar a una
implementación.
29. Ingeniería de Sistemas E Informática Algoritmica II
29
1.1.Definición y propiedades.
Diseño mediante abstracciones.
– Identificar los subproblemas.
– Especificación abstracta de cada uno de ellos.
– Implementar cada abstracción.
– Verificación del programa.
Proceso de resolución propuesto por Aho.
Modelo
matemático
Algoritmo
informal
Tipos de datos
abstractos
Programa en
pseudolenguaje
Estructuras
de datos
Programa
en Pascal
30. Ingeniería de Sistemas E Informática Algoritmica II
30
Resolución
de un
problema
Análisis del
problema
Diseño del
algoritmo
Programación
del algoritmo
•definición del problema
•especificaciones de
entrada
•especificaciones de salida
•diseño modular o
descendente
•refinamiento por pasos
•codificación del
programa
•ejecución del programa
•comprobación
31. El Algoritmo , resultado de la fase de
Diseño, pasa a la fase de
Programación para ser traducido a
un lenguaje de programación.
Class Programa {
...........
Public static void
main() {
....
}
}
En general es una tarea
totalmente mecánica.
Diseño
32. Ingeniería de Sistemas E Informática Algoritmica II
32
¿Cómo generar un Algoritmo?
Los pasos que se deben seguir para la obtención de un
algoritmo a partir del problema en estudio son los siguientes:
1. Determinación del Objetivo del problema.
2. Estipulación escrita del problema
3. Identificación de los datos de entrada y salida.
4. Determinación del proceso y de los datos integrantes del algoritmo.
5. Identificación de las variables interna.
6. Dividir el proceso en acciones atómicas
7. Determinación de los cursos de acción
8. Determinación de la secuencialidad de las acciones en cada uno de los
cursos de acción.
9. Incorporación de estructuras de control para la unificación de los cursos de
acción.
10. Generación del algoritmo
33. Ingeniería de Sistemas E Informática Algoritmica II
33
Algoritmos vs. Programa
Un algoritmo es una secuencia de pasos
finitos, no ambiguos y finitos necesarios
para resolver un problema.
La implementación de un algoritmo que
puede correr en un computador es llamado
programa
Sistemas Operativos, Browser, juegos son
ejemplos de programas.
34. Ingeniería de Sistemas E Informática Algoritmica II
34
1.- Funcionamiento del programa
2.- Claridad
- indentado, sangrías
- comentarios (al usuario y al corrector)
3.- Estilo de programación
- buen y correcto uso de variables
- algoritmos usados
- uso de funciones y procedimientos
Partes importantes en la
realización de un programa
36. Ingeniería de Sistemas E Informática Algoritmica II
36
Es un lenguaje bastante coloquial en español ó
inglés.
Consta de un conjunto de frases con restricciones
que pueden utilizarse en la especificación de
programas.
Su objetivo es un balance razonable entre la
precisión formal de un lenguaje de programación y
la informalidad y legibilidad del lenguaje natural.
Pseudocódigo
Desarrollo de Algoritmos
37. Ingeniería de Sistemas E Informática Algoritmica II
37
Los verbos a utilizar para
describir los pasos a seguir en la
solución de un problema son:
• CALCULAR
• OBTENER
• LEER
• MOSTRAR
• ESCRIBIR
Pseudocódigo
38. Ingeniería de Sistemas E Informática Algoritmica II
38
Veamos un
ejemplo..
MOSTRAR “Hola”
ESCRIBIR “Hola”
Pseudocódigo
39. Ingeniería de Sistemas E Informática Algoritmica II
39
Otro ejemplo..
CALCULAR X A + B
2500
Para lograr esto debemos primero
conocer los elementos que
componen un programa.
Pseudocódigo
40. Ingeniería de Sistemas E Informática Algoritmica II
40
•Son elementos de un programa todos aquellos
manipulados por instrucciones.
•Mediante ellos podemos hacer almacenamient
de datos obtener resultados de las distintas
operaciones necesarias para la solución del
problema.
Tenemos tres tipos de elementos de programa
Constantes
Variables
Expresiones
Elementos de un programa
41. Ingeniería de Sistemas E Informática Algoritmica II
41
Constantes
Están almacenadas en la memoria
del computador y su valor NO
cambia a lo largo del programa.
Poseen tres atributos:
Nombre, Tipo y Valor.
Pi Nombre
Elementos de un programa
3.14 Valor
Tipo
(Numérico)
42. Ingeniería de Sistemas E Informática Algoritmica II
42
Variables
edad Nombre nombre
Elementos de un programa
Están almacenadas en la memoria
del computador y su valor puede
cambiar a lo largo del programa.
Poseen tres atributos:
Nombre, Tipo y Valor.
(Numérico)
Tipo
(Alfanumérico)
Valo
r
21 “Juan Perez
43. Ingeniería de Sistemas E Informática Algoritmica II
43
Variables
Las variables pueden ser de dos tipos :
Variables sencillas:
edad
nombre
2.Variables subindicadas o con
subíndices.
44. Ingeniería de Sistemas E Informática Algoritmica II
44
Variables subindicadas o con subíndices
Las variables con subíndice sirven para representar
un tipo de dato denominado arreglos.
Arreglos:
Conjunto de valores agrupados todos bajo un solo
identificador. Este conjunto de valores deben ser
todos del mismo tipo
45. Ingeniería de Sistemas E Informática Algoritmica II
45
Tipos de arreglos:
De una dimensión
Variables subindicadas o
con subíndices
0 2 3 4 5 6
1
Posición
Para determinar en que posición del
arreglo se encuentra un determinado
valor se utiliza un índice.
46. Ingeniería de Sistemas E Informática Algoritmica II
46
Arreglos de una dimensión
María Luis Alejandro Karla
nombres
Para hacer referencia a un elemento del
arreglo se escribe
nombres (1)
Nombre
de la
Posición dentro
del arreglo
0 1 2 3
47. Ingeniería de Sistemas E Informática Algoritmica II
47
Arreglos de dos
dimensiones
Petare
venezolano
Luis
Los
Chorros
venezolano
Carlos
Los
Naranjos
venezolana
María
En un arreglo de
dos dimensiones o
matriz, para ubicar
la posición de un
elemento se
requiere de dos
subindices: uno
para indicar la fila y
otro para indicar la
columna.
datos
datos
(0,0)
= Maria
0 1 2
1
0
2
48. Ingeniería de Sistemas E Informática Algoritmica II
48
Para cambiar el valor a una
variable decimos:
ASIGNAR edad 15
Elementos de un programa
Variables
Donde el símbolo indica que se
dará el valor 15 a la variable edad.
ASIGNAR datos(0,0) Loren
49. Ingeniería de Sistemas E Informática Algoritmica II
49
Elementos de un programa
Los nombres de constantes y /o variables
deben seguir las siguientes reglas:
Usar nombres significativos. La primera
letra del nombre deberá ser minúscula.
•Edad
•Cada nombre estará compuesto por
dos ó mas sílabas. Pueden usarse
varias palabras para el nombre.
hora horaLlegada
50. Ingeniería de Sistemas E Informática Algoritmica II
50
Expresiones
Elementos de un programa
Son conjuntos de variables y/o
constantes unidas o relacionadas por
operadores.
Hay tres tipos de expresiones:
- Numéricas
- Alfanuméricas
- Lógicas
51. Ingeniería de Sistemas E Informática Algoritmica II
51
Expresiones Numéricas
Las que producen resultados de
tipo numérico.
X Y + 5 – 7 + C
Para su construcción se utilizan los
Operadores aritméticos.
( ) Paréntesis
^
Potencia
*
Multiplicaci
Elementos
de un
programa
52. Ingeniería de Sistemas E Informática Algoritmica II
52
Al evaluar expresiones numéricas
debemos tomar en cuenta el
orden de precedencia de las
operaciones:
1. Paréntesis
2. Potencias
3. Multiplicación y División
4. Suma y Resta
Expresiones Numéricas
Elementos
de un
programa
53. Ingeniería de Sistemas E Informática Algoritmica II
53
Calcular suma var1 +
var2 + var3
Supongamos tres variables con
sus valores.
8
var 2
5
var1
3
var3
¿Cómo expresaríamos el darle a una
variable suma el valor resultado de
sumar los tres valores?
Expresiones Numéricas
Elementos
de un
programa
16
suma
54. Ingeniería de Sistemas E Informática Algoritmica II
54
Calcular suma (var1 + var2) * var3 +
( var 2 / 2 )
43
suma
Expresiones Numéricas
Elementos
de un
programa
Otros ejemplos:
8
var 2
5
var1
3
var3
55. Ingeniería de Sistemas E Informática Algoritmica II
55
Calcular suma var1 + ( var2 * var3)
+ ( var 2 / 2 )
33
suma
Expresiones Numéricas
Elementos de
un programa
Otros ejemplos:
8
var 2
5
var1
3
var3
56. Ingeniería de Sistemas E Informática Algoritmica II
56
Elementos de
un programa
Expresiones Numéricas
Otros ejemplos:
120.000,0
0
1400000,
00
98.000,00
178.999,0
0
sueldos
Calcular sueldoTotal sueldos( 0 ) + sueldos( 1) + sueldos
(2) + sueldos (3)
1.796.999,00
57. Ingeniería de Sistemas E Informática Algoritmica II
57
Las que producen resultados de
tipo alfanumérico.
Ejemplo:
(Alfanumérico)
“Pedro”
nombre
(Alfanumérico)
“Perez”
apellido
(Alfanumérico)
????
nombreCompleto
Expresiones Alfanuméricas
Elementos
de un
programa
58. Ingeniería de Sistemas E Informática Algoritmica II
58
Son las que producen resultados
de tipo lógico, es decir, Verdadero
o Falso. (True – False)
(A > 0)
(B < 5)
(C = D)
(F != E)
Expresiones Lógicas
Elementos de un programa
59. Ingeniería de Sistemas E Informática Algoritmica II
59
Para su construcción se utilizan los
Operadores Relacionales.
= Igual
< Menor que
<= Menor o igual que
> Mayor que
>= Mayor o igual que
!= Distinto a
Expresiones Lógicas
Elementos
de un
programa
60. Ingeniería de Sistemas E Informática Algoritmica II
60
( 5 > 2 ) Verdadero (
True )
( 6 < 2 ) Falso ( False
)
Expresiones
Lógicas
Elementos
de un
programa
Por
ejemplo
61. Ingeniería de Sistemas E Informática Algoritmica II
61
( var2 > var1 )
Verdadero
( var2 < var3 )
Supongamos tres variables con
sus valores.
Veamos el resultado de evaluar las
siguientes expresiones lógicas
Expresiones Lógicas
Elementos
de un
programa
8
var 2
5
var1
3
var3
62. Ingeniería de Sistemas E Informática Algoritmica II
62
Podemos combinar varias
expresiones lógicas utilizando los
operadores booleanos.
Por ejemplo:
(var1 > 0) AND (var2 < 5)
AND
Conjunció
n
OR
Disjunció
n
Expresiones Lógicas
Elementos
de un
programa
63. Ingeniería de Sistemas E Informática Algoritmica II
63
( 5 > 2) AND ( 6 < 2)
Falso
( 5 > 2) AND ( 6 > 2)
Cierto
Elementos
de un
programa
Ejempl
os
Expresiones Lógicas
64. Ingeniería de Sistemas E Informática Algoritmica II
64
(( var2 > var1 ) AND (var2
> var3))
Supongamos tres variables con
sus valores.
Veamos el resultado de evaluar las
siguientes expresiones lógicas
Expresiones Lógicas
Elementos de un programa
8
var 2
5
var1
3
var3
Verdadero
Falso
Verdadero
(( var2 < var3 ) AND (var1
< var2))
(( var1 = var3 ) OR (var1
65. Ingeniería de Sistemas E Informática Algoritmica II
65
Es un lenguaje bastante coloquial en español ó inglés.
Consta de un conjunto de frases con restricciones que
pueden utilizarse en la especificación de programas.
Su objetivo es un balance razonable entre la precisión
formal de un lenguaje de programación y la informalidad
y legibilidad del lenguaje natural.
Pseudocódigo
Resumen
66. Ingeniería de Sistemas E Informática Algoritmica II
66
Escribir un algoritmo que permita
calcular el área de un triángulo
1.Inicio CalculoArea
2.base, altura,area: numérico
3.Leer base, altura
4. Calcular area (base * altura)/2
6. Terminar CalculoArea
Entrada: base, altura : numérico
Salida: area: numérico
5. Mostrar (“El area del triangulo es” , area)
67. Ingeniería de Sistemas E Informática Algoritmica II
67
Algoritm
1.Inicio CalculoMonto
2.precio,monto: numérico
3.Leer precio
4.Si (precio > 10.000) entonces
Decisión
4.1 Calcular monto (precio – (precio * 0.06))
4.2 Calcular monto (precio – (precio * 0.05))
sino
5. Mostrar (“El monto a pagar es:” , monto)
6. Terminar CalculoMonto
Entrada: precio: numérico
Salida: monto: numerico
68. Ingeniería de Sistemas E Informática Algoritmica II
68
Escribir un programa que lea tres números y los imprima.
Algoritmo
1. Inicio TresNúmeros num1,num2,num3: numérico
2. Leer num1,num2,num3
3. Mostrar (“Los números son: “ num1,num2,num3)
4. Terminar TresNúmeros
Entrada:num1, num2, num3: numérico
Salida:
num1, num2, num3: numérico
69. Ingeniería de Sistemas E Informática Algoritmica II
69
Escribir un programa que lea tres números, los sume e imprima el resultado de la
suma.
Entrada:num1, num2, num3: numérico
Salida:
suma: numérico
Ejemplo
Algoritmo
1. Inicio TresNumeros
2. num1,num2,num3,suma: numérico
3. Leer num1,num2,num3
4. Calcular suma num1+num2+num3
5. Escribir(“La suma es: “ suma)
6. Terminar TresNumeros
70. Ingeniería de Sistemas E Informática Algoritmica II
70
Escribir unprograma queleatres números,lossume y multipliquee imprima el resultadomayor.
Entrada:
num1, num2, num3:
numérico
Salida:
suma, multi: numérico
Ejercicio
Algoritmo
1.Inicio TresNumeros
2.num1,num2,num3,suma, multi: numérico
3.Leer num1,num2,num3
4.Calcular suma num1+num2+num3
5.Calcular multi num1*num2*num3
6.Si suma > multi entonces
6.1 Escribir (“El resultado mayor es :” suma)
Sino
6.2 Escribir (“El resultado mayor es :” multi)
7. Terminar TresNumeros
72. Ingeniería de Sistemas E Informática Algoritmica II
72
Acerca de C
C fue desarrollado por Brian Kernighan y Dennis
Ritchie en los laboratorios Bell.
Valores son guardados en Variables
Programas son estructurados por funciones.
Flujo de Control es controlado usando loops,
sentencias y llamadas a funciones.
Entrada y Salida son dirigidas a archivos o al
terminal.
Datos son almacenados juntos en arreglos o
estructuras.
C permite un control mas preciso de entradas y
salidas Programas pequenos mas eficientes
C es un lenguaje amigable
ANSI C es proclamado la versión estándar del
lenguaje.
73. Ingeniería de Sistemas E Informática Algoritmica II
73
Historia
1967, Martin Richard crea el lenguaje BCPL
1970, Ken Thompson crea el lenguaje B.
– Transportable.
– Lenguaje evolucionado e independiente de la máquina.
1972, Dennis Ritchie y Brian Kernighan en los Laboratorios
Bell de AT&T crea el lenguaje C modicando el lenguaje B.
Reescribe Unix en C.
– Se diseñan tipos y estructuras de datos.
– Incluye punteros y funciones.
– Riqueza de operadores.
1983, el instituto de estándares americano (ANSI) crea un
estándar que definiera el lenguaje C.
1990, el estándar es adoptado.
74. Ingeniería de Sistemas E Informática Algoritmica II
74
UNIX
Sistema UNIX fue escrito en C.
C fue inventado específicamente para
implementar UNIX.
Todos los comandos de UNIX mas todas las
facilidades tales como “revision de
password”, “colas de impresión”, o
controladores de devices son escritos en C.
Poderosos sistemas pueden ser creados al
escribir en C y utilizando las librerías del
sistema UNIX.
75. Ingeniería de Sistemas E Informática Algoritmica II
75
Usando C y UNIX
Conocimiento previo.
Ciclo:
– Escribir el programa en un archivo
– Compilar el programa
– Ejecutar el programa
Durante el desarrollo del programa, el
programador puede repetir el ciclo
muchas veces, refinando, testeando, y
haciendo debugging hasta alcanzar la
refinación deseada.
76. Ingeniería de Sistemas E Informática Algoritmica II
76
Escribir, Compilar, ejecutar el Programa
UNIX espera que su programa sea
guardado en un archivo cuyo nombre
finaliza en “.c”
Para editar, utilizar un editor como “jed”,
“emacs”, o “vi”
– >> jed prueba.c
Para Compilar se utiliza un compilador de
la forma:
– >>cc prueba.c –o prueba
Para ejecutar bajo UNIX solo se debe
escribir:
– >>prueba o >>./prueba
Compilador de
UNIX
77. Ingeniería de Sistemas E Informática Algoritmica II
77
Traductores
Traducen el lenguaje de alto nivel a
lenguaje de máquina.
Se refieren a la forma en que se ejecuta el
programa
– Interpretes: lee el código de un programa línea
a línea realizando las instrucciones.
– Compiladores: lee el programa entero y lo
convierte en código objeto que puede ser
ejecutado por la maquina directamente.
78. Ingeniería de Sistemas E Informática Algoritmica II
78
Ejemplo
/* Programa Hola Mundo*/
#include <stdio.h>
int main( )
{
printf(“Hola
Mundo!!!");
return ( ) ;
}
pincoya>>gcc -Wall
hello.c
pincoya>> ./a.out
a.out
Compilar
Compila
dor(gcc)
Progra
ma
hola.o
Códig
o
Objet
Enlace
Enlaza
dor
hola.c
Ejecutable
79. Ingeniería de Sistemas E Informática Algoritmica II
79
Programa ejecutable
Los siguientes pasos hay que seguir
para obtener un programa ejecutable:
Programa
Fuente
Compilado
rPrograma
Objeto
Enlace
Librerías
Programa
Ejecutabl
e
80. Ingeniería de Sistemas E Informática Algoritmica II
80
Compiladores C
Para el sistema operativo Linux:
– lcc
– gcc
Para el sistema operativo Windows:
– Turbo C/C++
– Borland C/C++
– Visual C++
Editores de texto para Linux:
– jed, emacs.
81. Ingeniería de Sistemas E Informática Algoritmica II
81
Declaraciones globales
f1()
{
variables locales
secuencia de sentencias
}
.
..
fN()
{ variables locales
secuencia de sentencias
}
main(){
variables locales
secuencia de sentencias
}
Estructura de un programa
82. Ingeniería de Sistemas E Informática Algoritmica II
82
Estructura de un programa
Todos los programas en C consisten en
una o más funciones.
La única función que debe estar
absolutamente presente es la denominada
main() , siendo la primera función que es
llamada cuando comienza la ejecución del
programa.
83. Ingeniería de Sistemas E Informática Algoritmica II
83
Estructura de memoria de Turbo C
Pila
Montón
Variable Globales
Código del
programa
86. Ingeniería de Sistemas E Informática Algoritmica II
86
Introducción
Variables y Constantes son los objetos de
datos básicos manipulados en un
programa.
Las declaraciones establecen las
variables a ser usadas, su tipo y su valor
inicial.
Operadores especifican que se hace con
las variables.
Expresiones combinan variables y
constantes para producir nuevos
resultados.
87. Ingeniería de Sistemas E Informática Algoritmica II
87
Nombres de Variables
Nombres son hechos de letras y dígitos.
El símbolo underscore “_” cuenta como
letra.
Letras mayúsculas y minúsculas son
diferentes.
Tradicionalmente se utiliza letras
minúsculas para nombres de variables y
letras mayúsculas para nombres de
constantes.
Nombres de palabras reservadas no
pueden ser utilizadas:
Palabras Reservadas
88. Ingeniería de Sistemas E Informática Algoritmica II
89
Tipos de Variables
En C una variable debe ser declarada antes de
ser usada.
Pueden ser declaradas al comienzo de cualquier
bloque de código, pero la mayoría son
encontradas al comienzo de la función.
Una declaración comienza con un tipo, seguido
por el nombre de una o mas variables.
– int num=4, cel[20];/*Ver Tipos*/
Tipo Nombre
Asignación
Comentari
o
89. Ingeniería de Sistemas E Informática Algoritmica II
91
Constantes
Son valores fijos que no pueden ser alterados por
el programa. Pueden ser de cualquier tipo de
datos.
Una constante en C es solo la versión escrita de
un numero.
Ejemplo: 4, 3e5
Un carácter constante usualmente es solo un
carácter encerrado entre cremillas ‘a’
Valor de un carácter constante es el valor
numérico en el conjunto de caracteres de la
maquina.
90. Ingeniería de Sistemas E Informática Algoritmica II
92
Constantes
Expresión Constante es una expresión
que involucra solo constantes
Son evaluadas en tiempo de compilación
– Ejemplo: #define MAX 1000
String constante es una secuencia de cero
o mas caracteres encerrado entre
cremillas tal como “Lenguaje de
Programacion en C”
Las cremillas son delimitadores.
El carácter nulo ‘0’ es automaticamente
colocado al final de tal string
91. Ingeniería de Sistemas E Informática Algoritmica II
93
Declaración de constantes
Son valores fijos que no pueden ser
alterados por el programa. Pueden ser de
cualquier tipo de datos.
– Ejemplo ‘a’ ‘n’ ‘9’ 1 123 35000 123.23
Para declarar constantes se puede utilizar
la directiva #define.
– Ejemplo
#define Maximo 1000
92. Ingeniería de Sistemas E Informática Algoritmica II
94
Tipo
lista_de_variable
s;
Declaración de variables
Todas las variables han de ser declaradas
antes de ser usadas y pueden cambiar su
valor durante la ejecución del programa.
Forma:
– tipo: debe ser un tipo de datos válido de C-
– lista_de_variables : puede consistir en uno o
más identificadores separados por comas.
93. Ingeniería de Sistemas E Informática Algoritmica II
95
Declaraciones
Todas las variables deben ser declaradas
antes de ser usadas.
Una declaración especifica un tipo y lista
una o mas variables de ese tipo.
int a,b,c;
int a;
int b;
int c;
94. Ingeniería de Sistemas E Informática Algoritmica II
96
Variables Locales vs. Globales
Variables locales son declaradas dentro
del cuerpo de una función y solo pueden
ser usadas dentro de esa función.
Estará disponible para otras funciones
solo si al ser llamadas desde la función
actual, son pasados los valores de las
variables.
Una variable global estará disponible para
todas las funciones.
Practicas Modernas de Programación
recomiendan no abusar del uso de estas
variables.
95. Ingeniería de Sistemas E Informática Algoritmica II
97
Nombre_de_variable =
constante;
Inicialización de variables
La asignación se realiza usando el signo
‘=‘, donde la constante del lado derecho
se asigna al lado izquierdo.
96. Ingeniería de Sistemas E Informática Algoritmica II
98
Comentarios
Los comentarios en C va entre los
símbolos /* y */.
Pueden ir ubicados en cualquier parte del
programa.
– Ejemplo:
…
/* Este es un
comentario */
...
97. Ingeniería de Sistemas E Informática Algoritmica II
99
Variables Externas
Cuando se utiliza desde una función en un
archivo A una variable declarada en un archivo B,
debe declararse en la función del archivo A como
variable externa.
Archivo A Archivo B
f0(){
extern int a;
...}
f1(){…}
int main(){…}
int a;
g1(){
a=4;
...
}
g2(){
…
}
int main(){…}
98. Ingeniería de Sistemas E Informática Algoritmica II
100
Variables Estáticas
Son declaradas como Variables locales,
pero su declaración es precedida por la
palabra static
Puede ser accesada solo desde la función
en que fue declarada.
Inicializada solo una vez. No es destruida
a la salida de la función, sino su valor es
preservado, y estará disponible en la
próxima llamada a la función
int f1(){…
static int a;
…}
int main(){…
f1();
…}
100. Ingeniería de Sistemas E Informática Algoritmica II
102
Operaciones y Expresiones
Una de las Potencias de C es su amplio rango de
operadores necesarios.
Un operador es una función que es aplicada a
valores para dar un resultado.
Existen operadores aritméticos, comparación de
valores, combinación de estados lógicos y
manipulación de dígitos individuales unitarios.
Los operadores y valores son combinados para
formar expresiones.
Sentencia de Asignación:
– Una expresión es evaluada y el resultado es guardado
en una variable y= a*x+b
101. Ingeniería de Sistemas E Informática Algoritmica II
103
Operadores Aritméticos
Acción
Operador
Resto de división
entera
%
Incremento
++
Decremento
--
División
/
Multiplicación
*
Substracción
-
Adición
+
102. Ingeniería de Sistemas E Informática Algoritmica II
104
Operadores Relacionales
Acción
Operador
Igual
==
No igual
!=
Menor que o igual
<=
Menor que
<
Mayor que o igual
>=
Mayor que
>
103. Ingeniería de Sistemas E Informática Algoritmica II
105
Operadores Lógicos
Acción
Operador
Y
&&
NO
!
O
||
Y
&&
0
1
0
0
1
0
1
1
1
1
1
1
0
1
0
1
0
0
0
0
!p
p||q
p&&q
q
p
Tabla de Verdad
104. Ingeniería de Sistemas E Informática Algoritmica II
106
Valores booleanos?
Los valores lógicos o booleanos no tienen
un tipo especial.
Se puede utilizar cualquier tipo integral
que tenga un valor 0 representando falso
y cualquier otro valor representando el
verdadero.
105. Ingeniería de Sistemas E Informática Algoritmica II
107
Precedencias
Si existen más de un
operador perteneciente a
un mismo nivel, la
prioridad va de izquierda a
derecha.
,
=, +=, -=, *=, /=
||
&&
==, !=
<, <=, >, >=
+, -
*, /, %
!, ++, --, -, (tipo)
()
(x>=10 && x<20) || x<5
If(!NULL) printf(“…”);
106. Ingeniería de Sistemas E Informática Algoritmica II
108
Conversión de tipos
Cuando en una expresión se mezclan
constantes y variables de un mismo tipo y
variables de distinto tipos, se convierten a
un tipo único.
El compilador C convierte todos los
operandos al tipo del mayor operando.
107. Ingeniería de Sistemas E Informática Algoritmica II
109
Conversión de Tipos
Se pueden mezclar los tipos de valores en
expresiones aritméticas
Valores pasados a funciones como argumentos
debe ser del tipo correcto
Si los tamaños son diferentes:
– El resultante adoptara el tamaño mayor
No hay problema en asignar un valor a una variable
de diferente tamaño.
Excepciones:
– La variable es demasiado pequeña para sostener el valor.
CORRUPTO
– Si la variable es tipo entera y se le asigna un valor real, el
valor es redondeado.
108. Ingeniería de Sistemas E Informática Algoritmica II
110
Conversión de tipos
Regla:
– Cualquier char y long int es convertido a int. Cualquier
float es convertido a double.
– Para todos los pares de operandos, si uno de los
operandos es long double, el otro operando se
convierte a long double.
– Si no, si un operando es double, entonces el
otro se convierte a double.
– Si no, si un operando es long, entonces el otro
se convierte a long.
– Si no, si un operando es unsigned, entonces el
otro se convierte a unsigned.
109. Ingeniería de Sistemas E Informática Algoritmica II
111
Conversión de tipos, Ejemplo
char ch;
int i;
float f;
double d;
result= ( ch / i) + (f * d) - ( f + i );
int double double
int double double
double
110. Ingeniería de Sistemas E Informática Algoritmica II
112
Sirven para forzar que una variable sea de
un cierto tipo.
Forma general:
Ejemplo:
(tipo)expresi
ón
int i;
float x;
…
x=(float)
i/1;
Moldes
111. Ingeniería de Sistemas E Informática Algoritmica II
113
Shorthand
i=i%10
i%=10
i=i/10
i/=10
i=i*10
i*=10
i=i+10
i+=10
i=i-1
i-- o --i
i=i+1
i++ o ++i
Equivalente
Shorthand