Guia Estudio Programación

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

Guía de Estudio

Asignatura: Programación

Docente: Sergio Cardel Casiano

Objetivo: Distinguir las principales necesidades dentro del


desarrollo de una aplicación, fin de identificar la estructura de datos
en correspondencia con sus funcionalidades.

Temas:
 Unidad 1: Sistemas Operativos
 Unidad 2: Estructura general de un programa
 Unidad 3: Estructuras de flujo programático
 Unidad 4: Estructura de datos
Asignatura: Programación
Unidad # Unidad 1 Sistemas operativos
Objetivo: Distinguir algunas de las principales características de los sistemas
operativos, tales como lenguajes de programación, intérpretes y compiladores a fin de
identificar sus definiciones, características, y principales funciones.

Temas de estudio:

Sistemas operativos

Un sistema operativo es la parte más importante del software del sistema (el software
controla y gestiona los recursos de la computadora). En la práctica, el sistema operativo
es la colección de programas de computadora que controla la interacción del usuario y
el hardware de la computadora. El sistema operativo es el administrador principal de la
computadora: es el director de una orquesta, responsable de regir todas sus operaciones
gestionar sus recursos.

El sistema operativo cumple cinco funciones básicas:


● Suministra la interfaz gráfica del usuario (iconos, botones, barras y cuadros de diálogo).

● Administra recursos (memoria, dispositivos E/S y UCP).

● Administra archivos.

● Administra tareas (realizadas por medio de dispositivos, teclado o mouse).

● Da servicio de soporte y utilidades.

El sistema operativo dirige las operaciones globales de la computadora. Le instruye para


ejecutar otros programas y controla el almacenamiento y recuperación de archivos
(programas y datos). Gracias al sistema operativo, el programador puede introducir y
grabar nuevos programas, así como instruir a la computadora para que los ejecute.
Evolución de los lenguajes de programación

Un lenguaje de programación es un programa destinado a la construcción de otros


programas informáticos, compuesto por símbolos y reglas sintácticas y semánticas,
expresadas en forma de instrucciones y relaciones lógicas, mediante las cuales se
construye el código fuente de una aplicación o pieza de software determinado.

Este es un lenguaje formal, diseñado para organizar algoritmos y procesos lógicos que
serán ejecutados por un ordenador o sistema informático, permitiendo controlar así su
comportamiento físico, lógico y su comunicación con el usuario humano.

Dicho lenguaje está compuesto por símbolos y reglas sintácticas y semánticas,


expresadas en forma de instrucciones y relaciones lógicas, mediante las cuales se
construye el código fuente de una aplicación o pieza de software determinado.

La historia de los lenguajes de comunicación comenzó en la década de los cuarenta


cuando nacían las primeras computadoras digitales. El lenguaje maquina (empleado en
aquel tiempo) traducía directamente el código maquina (código binario) comprensible
para las computadoras. Las instrucciones en lenguaje máquina dependían de cada
computadora y, debido a la dificultad de su escritura, los investigadores de la época
simplificaron el proceso de programación, desarrollando sistemas de notación en los
cuales las instrucciones se representaban en formatos nemónicos (nemotécnicos) en vez
de en formatos numéricos que eran más difíciles de recordar. Por ejemplo, mientras la
instrucción:

Mover el contenido del registro 4 al registro 8

Se podía expresar en lenguaje máquina como 4048 o bien 0010 0000 0010 1000

En código nemotécnico podía aparecer como MOV R5, R6

Para convertir los programas escritos en código nemotécnico a lenguaje máquina, se


desarrollaron programas ensambladores (assemblers). Éstos son programas que
traducen otros programas escritos en código nemotécnico en instrucciones numéricas
en lenguaje máquina que son compatibles y legibles por la máquina.
Se les llama ensambladores porque su tarea es ensamblar las instrucciones reales de la
máquina con los códigos nemotécnicos e identificadores que representan las
instrucciones escritas en ensamblador. Al lenguaje empleado en este proceso se les
denominó de segunda generación, reservando el nombre de primera generación para los
lenguajes de máquina.

En la década de los cincuenta y sesenta comenzaron a desarrollarse lenguajes de


programación de tercera generación que diferían de las anteriores en que sus
instrucciones o primitivas derivaron a los lenguajes de alto nivel (comprensibles por el
programador, como si fueran lenguajes naturales) e independientes de la máquina.

Los ejemplos más conocidos son FORTRAN (FORmula TRANslator), desarrollado para
aplicaciones científicas y de ingeniería, y COBOL (COmmon Business-Oriented
Language), desarrollado por la U.S. Navy de Estados Unidos para aplicaciones de
gestión o administración. Tiempo después aparecieron nuevos lenguajes tales como
Pascal, BASIC, C, C++, Ada, Java, C#, HTML, XML.

Los lenguajes de programación de alto nivel se componen de un conjunto de


instrucciones o primitivas más fáciles de escribir y recordar su función que los lenguajes
máquina y ensamblador. Sin embargo, los programas escritos en un lenguaje de alto
nivel, como C o Java necesitan ser traducidos a código máquina; para ello se requiere
un programa denominado traductor. Estos programas de traducción se denominaron
técnicamente, compiladores. De este modo existen compiladores de C, FORTRAN,
Pascal, Java, etc.

También surgió una alternativa a los traductores compiladores como medio de


implementación de lenguajes de tercera generación que se denominaron intérpretes.
Estos programas eran similares a los traductores excepto que ellos ejecutaban las
instrucciones a medida que se traducían, en lugar de guardar la versión completa
traducida para su uso posterior. Es decir, en vez de producir una copia de un programa
en lenguaje máquina que se ejecuta más tarde (este es el caso de la mayoría de los
lenguajes, C, C++, Pascal, Java...), un intérprete ejecuta realmente un programa desde
su formato de alto nivel, instrucción a instrucción. Cada tipo de traductor tiene sus
ventajas e inconvenientes, aunque hoy día prácticamente los traductores utilizados son
casi todos compiladores por su mayor eficiencia y rendimiento.
Sin embargo, en el aprendizaje de programación se suele comenzar también con el uso
de los lenguajes algorítmicos, similares a los lenguajes naturales, mediante instrucciones
escritas en seudocódigo que son palabras o abreviaturas de palabras escritas en inglés,
español, portugués, etc. Posteriormente se realiza la conversión al lenguaje de alto nivel
que se vaya a utilizar realmente en la computadora, tal como C, C++ o Java. Esta técnica
facilita la escritura de algoritmos como paso previo a la programación.

Intérpretes y compiladores

El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel a un


lenguaje máquina comprensible por la computadora, se realiza mediante programas
llamados “traductores”. Los traductores de lenguaje son programas que convierten a su
vez los programas fuente escritos en lenguajes de alto nivel a código máquina. Éstos se
dividen en compiladores e intérpretes.

Intérpretes
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación,
lo ejecuta. Los programas intérpretes clásicos como BASIC, prácticamente ya no se
utilizan, más que en circunstancias especiales. El proceso de traducción del interprete
para transformar el programa fuente a ejecutable es el siguiente:

● Se traduce la primer sentencia del programa a lenguaje máquina.

● Se detiene la traducción.

● Se ejecuta la sentencia; a continuación.

● Se traduce la siguiente sentencia.

● Se detiene la traducción.

● Se ejecuta la sentencia y así́ sucesivamente hasta terminar el programa.


Unidad # Unidad 2 Estructura general de un programa
Objetivo: En esta unidad conocerás la estructura general de un programa, identificando
la zona de declaraciones y de instrucciones, diferenciando que dentro del bloque de
instrucciones se encuentran tres partes fundamentales: Entrada de datos, proceso y
salida de resultados. Además, examinarás los conceptos de: datos, constantes,
variables, expresiones, operadores y diferentes tipos de funciones como elemento clave
en el manejo de datos.

Concepto de programa
En esencia, un programa es un medio para conseguir un fin, mismo que será
probablemente definido desde la información necesaria para solucionar un problema.
(Aguilar, 2008, p.84)

Entiéndase entonces que un programa de computadora es un conjunto de instrucciones


—órdenes dadas a la máquina— que producirán la ejecución de una determinada tarea.

A la par, el proceso de programación es, por consiguiente, la puesta en marcha para


solución de problemas. Para lograr dicho fin, el desarrollo de un programa requiere las
siguientes fases:

1. Definición y análisis del problema

2. Diseño de algoritmos:

Diagrama de flujo, • diagrama N-S


Seudocódigo
3. Codificación del programa

4. Depuración y verificación del programa

5. Documentación

6. Mantenimiento
Tipos de datos y operadores

2.2.1 Datos
Un dato es la expresión general que describe los objetos con los cuales opera una
computadora. La mayoría de las computadoras pueden trabajar con varios tipos (modos)
de datos.

Los datos de entrada se transforman por el programa, después de las etapas


intermedias, en datos de salida.

Un programa de computadora opera sobre datos (almacenados internamente en la


memoria almacenados en medios externos como discos, memorias USB, memorias de
teléfonos celulares, etc., o bien introducidos desde un dispositivo como un teclado, un
escáner o un sensor eléctrico). El tipo de datos determina cómo se representan los datos
en la computadora y los diferentes procesos que dicha computadora realiza con ellos.

A continuación, se muestra como estan divididos por tipos:

Básicos
Numéricos (entero, real)

Operadores lógicos, aritméticos y de asignación


Un operador es un carácter o grupo de caracteres que actúa sobre una, dos o más
variables para realizar una determinada operación con un determinado resultado.
Ejemplos comúnes de operadores son la suma (+), la diferencia (-), el producto (*), etc.
Los operadores pueden ser unarios, binarios y ternarios, según actúen sobre uno, dos o
tres operandos, respectivamente.

Operadores aritméticos

Los símbolos +, –, *, ^ (↑ o **) y las palabras clave div y mod se conocen como operadores
aritméticos. En la expresión

5+3

Los valores 5 y 3 se denominan operandos. El valor de la expresión 5 + 3 se conoce


como resultado de la expresión.
Los operadores se utilizan de igual forma que en matemáticas. Por consiguiente, A ∙ B
se escribe en un algoritmo como A * B y 1/4 ∙ C como C/4. Al igual que en matemáticas
el signo menos juega un doble papel, como resta en A – B y como negación en –A.
(Aguilar, 2008, p.96)

Funciones de entrada y salida

Cuando nos referimos a entrada/salida estándar (E/S estándar) queremos decir que los
datos o bien se están leyendo del teclado, ó bien se están escribiendo en el monitor de
video.

En C no existe ninguna palabra clave para realizar la entrada y salida de datos (E/S). Se
realizan a través de funciones de biblioteca específicamente stdio.h.

Las funciones principales que realizan la entrada y salida sin formato son:

getchar(): Lee un carácter del teclado, espera hasta que se pulsa una tecla y entonces
devuelve su valor. Putchar(): Imprime un carácter en la pantalla en la posición actual del
cursor.

gets(): Lee una cadena de caracteres introducida por el teclado y la sitúa en una dirección
apuntada por su argumento de tipo puntero a carácter.

puts(): Escribe su argumento de tipo cadena en la pantalla seguida de un carácter de


salto de línea.

Funciones con y sin argumentos

Se denomina funciones sin argumentos a aquellas que, dentro de los paréntesis, no


tienen el nombre de la función (ningún parámetro –variable-). Este tipo de funciones no
devuelven ningún valor al programa principal. En otras palabras, el programa principal
no recibe ningún resultado para mostrarlo en su ejecución.

Entonces, los programas que incorporan funciones que no tienen argumentos, solo
realizan sus líneas y, al momento de mandar llamar a la función realizan todo lo que este
dentro de éstas, para después devolver el mando al programa principal y, así, que éste
continúe con sus propias líneas.
Unidad # Unidad 3 Estructuras de flujo programático
Objetivo: Distinguir y aplicar de acuerdo con una problemática planteada las estructuras
de control que permitan resolverla (utilizando el lenguaje de programación C).

Estructuras de decisión

Al igual que en la vida diaria tenemos que tomar una decisión con base en algún
escenario específico, en la programación tenemos estructuras de decisión que nos
permiten ejecutar una serie de instrucciones para un escenario específico.

Las instrucciones comienzan a ejecutarse de forma secuencial (en orden). Cuando se


llega a una estructura condicional (asociada a una condición) se decide qué camino
tomar, dependiendo siempre del resultado de la condición, sea ésta falsa o verdadera.

Por lo tanto, las estructuras de decisión, permitirán seleccionar la próxima sentencia a


ejecutarse sobre la base de una decisión (expresión lógica o variable lógica). Los tipos
de estructuras de decisión que podemos encontrar son Simple o Ramificada.

Las sentencias de decisión (también llamadas de control de flujo) son estructuras de


control que realizan una pregunta, la cual retorna en verdadero o falso (evalúa una
condición) y selecciona la siguiente instrucción a ejecutar, dependiendo la respuesta o
resultado.

Simple

Se aplican las estructuras de control simple, cuando sólo se requiere de una pregunta.
Su sintaxis es la palabra Si, seguida de una pregunta o condición (la cual va encerrada
en medio de paréntesis) y, por último, si la condición es verdadera, se ejecuta la
sentencia que se encuentra después de la condición, o se ejecuta el bloque de
sentencias que se encuentran después de la condición (siempre y cuando estén
encerradas entre llaves). Las estructuras de decisión terminan o tiene su fin, con la llave
final del bloque de sentencias.
Ramificada

Para hacer estructuras condicionales más laboriosas, podemos anidar sentencias if,
(colocar estructuras if dentro de otras estructuras if). A este proceso se le llama
estructuras de decisión ramificadas.

Con un solo if podemos evaluar y realizar una acción u otra según dos posibilidades,
pero, si tenemos más posibilidades que evaluar, debemos anidar Ifs para crear el flujo
de código necesario para decidir correctamente.

Por ejemplo, si deseo comprobar si un número es mayor, menor o igual que otro, tengo
que evaluar tres posibilidades distintas. Primero puedo comprobar si los dos números
son iguales. Si lo son, ya he resuelto el problema, pero si no son iguales todavía, tendré́
que ver cuál de los dos es mayor. En situaciones como ésta es cuando tenemos que
utilizar y apoyarnos de estructuras anidadas o ramificadas.

Pre y Post condicional


El nombrar pre – condicional a un ciclo quiere decir que primero va a evaluar la condición,
para ver si realiza luego el bloque de sentencias. Si esta condición es verdadera o se
cumple, entonces entramos a realizar el bloque de sentencias de dicho ciclo, pero, si
esta condición es falsa desde el inicio, nunca entramos a realizar ninguna tarea del
bloque de sentencias. Esto es un ciclo pre – condicional, el cual va a evaluar la condición
antes de realizar el bloque de sentencias. Un ejemplo claro de esto es un ciclo while, y
cuando se habla de un ciclo post – condicional se dice que es cuando la condición se
evalúa al final del bloque de sentencias.

Una vez que ya se realizó el bloque de sentencias en la parte final se encuentra la


condición, en ese momento se evalúa y si es falsa deja de repetir el bloque de sentencias,
pero, si es verdadera continúa repitiendo el bloque de sentencias; por lo tanto, un ejemplo
de este ciclo es el do – while; el cual primero realiza el bloque de sentencias sin importar
la condición y al final evalúa la condición.

En este caso el ciclo do – while por fuerza siempre realiza al menos una vez todas las
sentencias que se encuentran dentro de él sin importar que la expresión de la condición
sea falsa desde un principio, mientras que el ciclo while, si su condición es falsa, en un
principio nunca se ejecuta el bloque de sentencias ni una sola vez, solo cuando esta sea
verdadera.
En un ciclo de repetición como lo es el do-while, primero se ejecuta el cuerpo del bucle
siempre al menos una vez. Cuando este se ejecuta lo primero que se realiza es el bloque
de sentencias, para al final evaluar la expresión booleana resultante de la condición, si
dicha condición es falsa se ejecuta al menos una vez el bloque y si la condición se evalúa
a verdadera se regresa el control al inicio del bloque de sentencias y se vuelven a
ejecutar todas para llegar de nueva cuenta a la evaluación de la condición; si esta sigue
siendo verdadera se vuelve a repetir y así́ sucesivamente hasta que la condición resulte
ser falsa y da por terminado el proceso.

Estructuras de Control

Las estructuras de control de un lenguaje de programación se refieren a él orden en que


las instrucciones de un algoritmo se ejecutarán. El orden de ejecución de las sentencias
o instrucciones determina el flujo de control.

Estas estructuras de control son por consiguiente fundamentales en los lenguajes de


programación y en los diseños de algoritmos especialmente los pseudocódigos.

Las tres estructuras de control básico son:

• secuencia • selección • repetición

Unidad # Unidad 4 Estructura de datos


Objetivo: Distinguir las principales necesidades dentro del desarrollo de una aplicación,
fin de identificar la estructura de datos en correspondencia con sus funcionalidades.

Arreglos unidimensionales
El arreglo es un tipo de dato estructurado formado por un conjunto de elementos de un
mismo tipo de datos, el cual se define como una colección finita, homogénea y ordenada
de elementos. Es finita porque todo arreglo tiene un límite, es decir se sabe determinar
cuál será el número máximo de elementos que podrán formar parte del arreglo.

Un dato de tipo estructurado como el arreglo, puede almacenar a más de un elemento


(valor) a la vez, con la condición de que todos los elementos deben ser del mismo tipo
de dato, es decir, que se puede tener un arreglo de datos enteros, flotantes, etc.
Arreglos en una dimensión

Los arreglos se clasifican de acuerdo con el número de dimensiones que tienen. Así, se
tienen los arreglos unidimensionales (una dimensión), los bidimensionales (dos
dimensiones) y los multidimensionales ( de más de dos dimensiones ), etc.

Arreglos numéricos y de caracteres


Arreglos numéricos

Cómo hemos dicho antes, el arreglo es un tipo de dato estructurado formado por un
conjunto de elementos de un mismo tipo de datos, el cual se define como una colección
finita, homogénea y ordenada de elementos.

En los arreglos numéricos hablamos de untipo de dato cuyos valores se definen por una
lista de constantes de tipo entero (int). Un arreglo númerico es muy similar a una lista de
constantes declaradas. Los tipos enumerados pueden definir sus propias secuencias de
modo que se puedan declarar variables con valores en esas secuencias.

Operaciones con apuntadores

Los arreglos y apuntadores están fuertemente relacionados. El nombre de un arreglo es


simplemente un apuntador constante al inicio del arreglo. Se pueden direccionar arreglos
como si fueran apuntadores y apuntadores como si fueran arreglos.6

Preguntas de Reflexión:
De las siguientes preguntas analiza y responde cada una de ellas para su estudio

1. Como describirías a las Estructuras de Decisión.


2. Cuándo se nos permite utilizar un Arreglo Unidimensional
3. Describe qué es un Apuntador.
4. Escribe tipos de Datos primitivos
5. Como describes el concepto de lo que es un Dato
6. Define un Sistema Operativo Multitarea
7. Define algunos Lenguajes de Programación
8. Si debemos almacenar nombres, debemos de declarar una variable de tipo..
9. Describe lo que es un Arreglo Bidimensional.
10. Con qué tipos de datos se pueden hacer operaciones aritméticas
11. Para qué nos sirve una Estructura de Decisión
12. Describe que es un acumulador
Fuentes de consulta:

Joyanes Aguilar, L. (2008). Fundamentos de programación (1st ed.). España:


McGraw Hill/Interamericana.

Mihaela Juganaru, M. (2014). Introducción a la Programación (1st ed.). México:


Grupo Editorial Patria.

Urquía Moraleda, Martín Villalba, (2011). Lenguajes de Programación (1st ed.).


España: UNED

https://librosgeniales.com/ebooks/fundamentos-de-programacion -4ta-luis-
joyanes-aguilar-pdf/

https://www.academia.edu/14865567/Lenguajes_de_programacion_
Historia_y_Evolucion?auto=download

Joyanes Aguilar, L. (2008). Fundamentos de programación (1st ed.). España:


McGraw Hill/Interamericana.

Langsam, Y. & Martínez Sarmiento, M. (1997). Estructuras de datos con C y C ++ (1st


ed.). México: Prentice-Hall Hispanoamericana.

Gutierrez Reyes, A. , Martínez Roldán E. (2011). Fundamentos de Programación


Estructurada . ESIME Zacatenco IPN.

También podría gustarte