Intro_Progr_1_2011

Anuncio
Introducción a la programación (clave 115106, créditos 9)
mediante lenguaje C con elementos de C++
Profesor Dr. Georgii Khachaturov
1. Introducción
Nota importante: esa introducción
representa un complemento al Capitulo 1
del curso en SAI.
http://sai.azc.uam.mx/apoyodidactico/c1/i
ndex.html
¡Es indispensable leer este capitulo!
1.1. ¿Porque lo saben que 2+2 es 4?
¿ Cómo entienden los '2' y '4' arriba?
¿Es necesario saber que los significan para
encontrar 2+2?
¿Cuál es la diferencia entre las siguientes
interpretaciones de '2' ?:
- un digito escrito en pizarrón,
- un símbolo en el texto computarizado (es
decir, la representación interna de '2' en el
programa Word, por ejemplo)
- una representación interna en la
computadora para los cálculos numéricos
Tarea: Intenta desarrollar mediante diagrama de
bloques una arquitectura
- hipotética humana que transforma las
preguntas tipo 2+2=? escritas en el
pizarrón a las respuestas correctas.
- de medios computarizados (calculadora
programática) los cuales permiten a un
operador hacer operaciones aritméticas.
1.2. Los medios de computación pueden
tratarse como una caja negra...
...Y con su progreso de velocidad exponencial
deben tratarse como una caja negra para usuarios
ordinarios. Con este progreso en marcha, es cada
vez más y más difícil saber todos detalles de los
medios.
Pero este hecho no pone obstáculos para que los
usuarios ordinarios puedan usar computadoras
eficientemente, al revez...
1.3. Historia de computación es una evolución de:


los medios bajo la presión de las tareas a
implementar... (calculo numérico,
finanzas, bases de datos, comunicación,
control, reconocimiento, inteligencia
artificial, ...);
los medios de la interfaz de usuario;

capacidad de hardware.
Máquinas de von Neumann...(memoria operativa,
sirve tanto para las instrucciones de CPU, como
para los datos)
Lenguaje de máquina...
Sistema operativo...
A continuación se encuentran las preguntas de
autocontrol respecto unas temas relevantes no
cubiertos en clases. Es importante encontrar las
respuestas a esas preguntas mediante un trabajo
individual fuera del salón:
¿Que es un grafo?
¿Que es un árbol?
¿Que son nodos hojas de árbol?
¿Cual es la propiedad característica de árbol?
¿Como se llama la unidad atómica de los datos desde
punto de vista del sistema operativo?
¿Que organización tiene el sistema de almacenamiento
de datos con los cuales manipula el sistema operativo?
¿Donde se almacena el programa ejecutable de, por
ejemplo, aplicación Excel?
¿Que hace sistema operativo cuando usted hace doble
clic en un archivo de imagen digital?
¿Que hace sistema operativo cuando usted pide ejecutar
un programa desde menú de programas?
¿Cuales tipos de archivos sabe y que significa cada de
esos tipos?
¿Describe su idea sobre un texto que usted esta editando
mediante un procesador de textos, p.e. Word: En que
forma existe este texto mientras usted esta editándolo?
¿Que papel tiene sistema operativo durante edición de un
texto mediante Word? En que forma aparecerá el texto al
terminar la edición? Donde?
¿Que papel tienen los controladores de dispositivos de
una computadora y cómo ellos interactúan con un
sistema operativo?
¿Que es interrupcción?
Temas:
Lenguajes de programación y los medios de
desarrollo de programas...
Programas especializadas...
Representación de datos numéricos en memoria de
computadora.
Importante!!!! Preguntas de control:
¿Que es: bit, byte, palabra de la máquina?
¿Cuantas valores diferentes puede representar (codificar) un
byte? dos bytes?
¿Que diapasón de enteros no negativos se representa mediante
palabra de la máquina de longitud 32 bits?
¿Cómo representar en el sistema binario los valores decimales:
5, 7, -25, etc.?
¿Que valor decimal representa el binario 101110?
¿Cómo sumar (restar) valores binarios?
¿Cómo multiplicar/dividir un valor binario por 2, 4, 8, etc.?
1.4. "Resolver un problema =
desarrollar un lenguaje adecuado al
problema"
entrada física a los valores de las celdas
correspondientes de la memoria.
1.6.4. El mencionado esquema de ínter-actuación
permite utilizar una sola disciplina de
intercambio de datos entre un programa y el
mundo exterior para toda gran variedad de los
tipos de dispositivos usados en las computadoras
modernas.
En diferencia con muchas otros áreas, los lenguajes
usados en computación son formalizados.
1.6.5. En este proceso de intercomunicación entre
el mundo y un programa, el sistema operativo es un
agente activo, en contraste con la memoria, que es
un agente pasivo. Cumpliendo con las tareas
ordenados desde un programa, el sistema
operativo recibe, interpreta, y responde a
todas interrupciones de todos dispositivos
disponibles.
Cada de los lenguajes usados en la computación
hace énfasis o, bíen, está especializado en su propia
parte de las operaciones típicas para un área. Por
ejemplo, hay lenguajes especiales para:
 desarrollo de programas para finanzas,
 cálculo numérico,
 creación de sistemas operativos.
1.6.6. Por otro lado, desde el punto de vista del
sistema operativo, todos los datos almacenados
en la computadora, independientemente del
dispositivo físico que los almacena, están
organizados en un sistema especifico. Este
sistema manipula con las unidades
especificas llamados archivos (files)
Mientras tanto un sistema operativo, como cada
programa funcional (procesador de textos, o editor
de imagenes, etc.) tienen propios lenguajes para su
uso.
1.6.6. Sistema operativo se encarga de
mantenimiento de los archivos y su
interpretación. La interpretación incluye dos
opciones: ejecutar un archivo ejecutable, o llamar
un programa especial dedicada interpretar este tipo
de los archivos. Mantenimiento incluye abrir
nuevos archivos, copiar, eliminarlos, etc., y
garantizar su integridad.
Todos conocimientos especiales en cualquier área
son unos lenguajes orientados al área.
Tarea: Analiza cuál es el leguaje que distingue los
conocimientos profesionales de tu carrera.
1.5. "Programa = estructura de datos +
algoritmo"
La mayor parte restante del curso se dedica a lo
que los alumnos puedan implementar este moto
para desarrollo de sus programas
1.6. Resumen de arquitectura de computadoras
desde punto de vista de un programador
1.6.1. Cada programa de usuario debe tener unos
datos de entrada, hacer procesamiento de esos
datos, y mandar resultados a una salida.
1.6.2. Físicamente, el programa de usuario
siempre interactúa con el mundo exterior, es
decir manda hacía fuera y recibe desde fuera los
datos, únicamente a través de la memoria de
computadora.
1.6.3. El sistema operativo manipulando con
unos programas específicos (llamados
controladores o drivers) se encarga de
interpretar algunos partes de la memoria para
generar salida física, o al revés, transformar la
1.7. ¿Cómo lo mencionado en p.1.6 funciona en
práctica?
1.8. Ciclo tecnológico de desarrollo de un
programa real y uso de los medios de desarrollo.
 Editores de texto
 Compiladors
 Enlace de modulos
 Ejecución
 Detección de errores.
IDE- Integrated Development Environment
=Entorno Integrado de Desarrollo;
DJGPP, WindowsStudio.Net, etc.
2. Programas simples
2.1. Hola mundo y sus
modificaciones simples
2.1.1 "Hello World" – Hola Mundo
Temas a aprender: uso de IDE,
estructura de un programa simple,
comentarios, archivos-cabeceras,
operadores de pre-compilador,
función "printf"
El ejemplo estándar del programa primitivo es el
programa que no adquiere ningunos datos desde
fuera, solo mandando a imprimir un mensaje.
Presentamos un programa de este tipo y en este
ejemplo entenderemos unas cosas básicas.
/** INTRODUCCION A
COMPUTACION**/
//
saludo.c
# include <stdio.h>
main()
{
printf("Hola mundo !!!\n");
}
Primeras líneas son comentarios.
stdio.h
(los archivos encabezados se indican mediante
extención "h" del nombre) de la librería eSTanDar
de Itput-Output. En el archivo stdio.h se encuentra
la definición de la función printf entre los demás.
Sin este archivo encabezado la instrucción "printf"
a continuación no puede ser interpretada por
compilador. Mientras sin esa librería de ANSI, el
programa-objeto no puede transformarse a un
archivo ejecutable.
Cada programa en C tiene uno y solo uno módulo
principal de la estructura
main()
{
....
}
con algunos instrucciones adentro de {...}.
El único operador del nuestro programa manda al
sistema operativo el orden de imprimir la cadena
de símbolos adentro del par de comillas. Sin
embargo
\n
no son símbolos a imprimir, sino el símbolo de
control de la impresión que ordena después de la
impresión posicionar el cursor al inicio de la
siguiente línea.
El compilador entiende que inicia el primer
comentario al leer " /* ". Al recibir " */ " él va a
saber que el comentario ya terminó.
El símbolo
El segundo comentario inicia con "//" y está valido
hasta fin del renglón que se indica para compilador
mediante símbolo "enter", el cual no aparece en
texto, pero se presenta de manera invisible.
frente del "n" indica al compilador que "n" no debe
ser impreso, sino interpretado como un símbolo de
control.
La diferencia de las dos maneras es la siguiente:
- la primera permite tener tanto los
comentarios largos, es decir escritos en
varias líneas, como cortas intercalando el
texto de las instrucciones de programa en
una sola línea
- mientras la segunda permite tener
comentarios que no saltan de una línea,
solo después de las instrucciones del
renglón
2.1.2. Extenciones de "Hola
Mundo".
Luego sigue el orden
# include
al compilador de incluir en el texto compilado el
archivo encabezado
"\"
Temas a aprender: operación de
intercambio, más detalles del
operador "printf", constantes
enteros, variables, variables del tipo
entero, operador de asignación:
Tareas para hacer en clase:
1. Modificar programa "Hola mundo!" de tal
manera que el nuevo programa
a. contenga dos variables A y B de
tipo entero cuyos valores
iniciales sean 1 y 2 relativamente
b. el programa imprima esos valores
con el texto: "A= ... B= ..."
2. Modificar programa del punto anterior de
tal manera que el nuevo programa
a. contenga dos variables A y B de
tipo entero cuyos valores
iniciales sean 1 y 2 relativamente
b. el programa imprima esos valores
con el texto: "inicialmente A=
... B= ..."
c. luego el programa hace
intercambio de los valores de A y
B entre si.
d. el programa imprima esos valores
con el texto: "luego A= ... B=
..."
-
-
Un soporte especial "Project" para
mantenimiento de muchos módulos de un
solo proyecto;
Un soporte especial "Debug" de control de
todas variables en proceso de las pruebas
de los módulos ejecutables;
Control de varias ventanas en la pantalla
necesarias para desarrollo;
y algunos otros
3.4. Demostración del proceso de
transformación de un programa en C al modulo
ejecutable a través de los medios integrados de
desarrollo: DJGPP +RHIDE (es similar al trabajo
en TurboC versión 3 o 2 )
En la ventana de comandos de MS-DOS, hay que
ejecutar el programa de los medios integrados de
desarrollo RHIDE:
3. Los medios de desarrollo de
programas y las formas de su ínter
actuación con el sistema operativo
3.1. Las operaciones tecnológicas para
transformar un programa en C a un archivo
ejecutable representan una cadena de llamadas de
los archivos ejecutables de un sistema de desarrollo
mandándoles los archivos para transformar.
En resultado aparece la ventana de RHIDE:
Los pasos básicos de esta cadena son
- compilación de los archivos-fuentes con
extensiones "c", transformándolos a otros
archivos de objetos, con extensiones "o"
en esta fase el compilador revisa sintaxis de cada fuente.
-
Enlazamiento de los archivos de
objeto en un archivo ejecutable
en esta fase, se revisan todas las referencias de cada
módulo-objeto a las variables definidas en otros
módulos.
3.2. Los medios integrados de desarrollo
sirven para automatización de los pasos básicos.
3.3. La automatización toca a los dos
siguientes puntos:
-
-
-
Interfaz amigable de usuario para las
operaciones generales con archivos (en
lugar del uso directo de los comandos de
MS-DOS o otro sistema operativo);
Editor de textos de los archivos en C
enfocado en buena presentación de las
construcciones especificas de C;
Bién desarrollada utilería para navegación
(Help) en las construcciones de lenguaje,
librerías de programas estándares,
mensajes de errores, etc...
Entrando (p.e. mediante "Alt+E") en Editor, se
puede teclear el archivo con el programa
presentado. Luego entrando en "Save as" de menú
"File" (Alt+F y luego con flechas del teclado
escoger "Save as") guardar el texto como archivo
"saludo.c".
Luego, entrando al menú "Run" (Alt+R) escoja en
sub-menú la línea "Run" y obtiene la ventana:
Oprima "enter" aceptando los resultados de
compilador y luego entra al menú "Windows"
(Alt+W) y allá escoge la ventana "User Screen"
que enseñara los resultados de ejecutación del
programa así:
Pero, al tener el archivo "saludo.c" guardado en el
directorio de C:\djgpp hay otra opción ejecutarlo
desde ventana de comandos directamente, es decir,
sin usar RHIDE.
Eso se demuestra en la ventana siguiente:
Descargar