RESUMEN EXAMEN FINAL - Programación I
RESUMEN EXAMEN FINAL - Programación I
RESUMEN EXAMEN FINAL - Programación I
CONCEPTOS IMPORTANTES
PROBLEMA
La RAE reconoce a “PROBLEMA” como “planteamiento de una situación cuya respuesta desconocida debe
obtenerse a través de métodos científicos”. Con miras a lograr esa respuesta, un problema se puede definir
como una situación en la cual se trata de alcanzar una meta y para lograrlo se deben hallar y utilizar unos
medios y unas estrategias.
La mayoría de problemas tienen algunos elementos en común: un estado inicial; una meta, lo que se
pretende lograr; un conjunto de recursos, lo que está permitido hacer y/o utilizar; y un dominio, el estado
actual de conocimientos, habilidades y energía de quien va a resolverlo.
1. COMPRENDER EL PROBLEMA.
• Leer el problema varias veces
• Establecer los datos del problema
• Aclarar lo que se va a resolver (¿Cuál es la pregunta?)
• Precisar el resultado que se desea lograr
• Determinar la incógnita del problema
• Organizar la información
• Agrupar los datos en categorías
• Trazar una figura o diagrama.
2. TRAZAR UN PLAN.
• Escoger y decidir las operaciones a efectuar.
• Eliminar los datos inútiles.
• Descomponer el problema en otros más pequeños.
ALGORITMO
Un algoritmo es un método para resolver un problema.
Es una secuencia de instrucciones, pasos o procesos que llevan a la solución de un determinado problema,
tienen un tiempo de ejecución y que para la cual consume una serie de recursos identificados.
En el ámbito de la computación, son una herramienta que permite describir
claramente un conjunto finito de instrucciones, ordenadas secuencialmente y libres
de ambigüedad, que debe llevar a cabo un computador para lograr un resultado
previsible.
Debe cumplir las siguientes características:
• Ser preciso: esto significa que tiene que resolver el problema sin errores.
• Ser definido: el algoritmo se desarrolla como paso fundamental para desarrollar un programa, el
computador sólo desarrollará las tareas programadas, con los datos suministrados; no puede improvisar ni
inventar el dato que necesite para realizar un paso.
Por ello, si se ejecuta varias veces, los datos de salida serán siempre los mismos.
• Ser finito: el número de pasos de un algoritmo, por grande y complicado que sea el problema que
soluciona, debe ser limitado. Todo algoritmo incluye los pasos inicio y fin.
• Ser legible: cualquier persona que vea el algoritmo debe ser capaz de comprenderlo.
• Presentación formal: el algoritmo debe estar expresado en alguna de las formas comúnmente aceptadas.
Las formas de presentación de algoritmos son, entre otras: el pseudocódigo, diagrama de flujo.
• Corrección: el algoritmo debe satisfacer la necesidad o solucionar el problema para el cual fue diseñado.
Para garantizar que el algoritmo logre el objetivo, es necesario ponerlo a prueba; a esto se le llama
verificación o prueba de escritorio.
• Eficiencia: En cuanto menos recursos requiere será más eficiente el algoritmo. Este concepto se aplica,
entre otros puntos, las formas de almacenar los datos, de leerlos, etc
El programador debe, constantemente, resolver problemas de manera algorítmica, lo que significa plantear
el problema de forma tal que queden indicados los pasos necesarios para obtener los resultados pedidos, a
partir de los datos conocidos.
Lo anterior implica que un algoritmo básicamente consta de tres elementos: Datos de Entrada, Procesos
y la Información de Salida.
• Las salidas de datos se presentan en dispositivos periféricos de salida, que pueden ser pantalla, impresora,
discos, etc. Este proceso se lo conoce como salida de datos, operación de escritura o acción de escribir
DISEÑO DE ALGORITMO
Los métodos más eficaces para el proceso de diseño se basan en el conocido divide y
vencerás. Es decir, la resolución de un problema complejo se realiza dividiendo el
problema en sub-problemas y así sucesivamente. Este método se conoce técnicamente
como diseño descendente (top-down) o modular.
El proceso de romper el problema en cada etapa y expresar cada paso en forma más
detallada se denomina refinamiento sucesivo.
Cada subprograma es resuelto mediante un módulo (subprograma) que tiene un solo
punto de entrada y un solo punto de salida.
Los módulos pueden ser planeados, codificados, comprobados y depurados independientemente (incluso
por diferentes programadores) y a continuación combinarlos entre sí.
El proceso implica la ejecución de los siguientes pasos hasta que el programa se termina:
1. Programar un módulo.
2. Comprobar el módulo.
3. Si es necesario, depurar el módulo.
4. Combinar el módulo con los módulos anteriores.
El proceso que convierte los resultados del análisis del problema en un diseño modular
con refinamientos sucesivos que permitan una posterior traducción a un lenguaje se
denomina diseño del algoritmo.
REPRESENTACIÓN DE ALGORITMOS
Tras los pasos anteriores (diseño descendente y refinamiento por pasos) es preciso representar el algoritmo
mediante una determinada herramienta de programación: diagrama de flujo, pseudocódigo o diagrama N-S.
Para representar un algoritmo se debe utilizar algún método que permita independizar dicho algoritmo del
lenguaje de programación elegido. Ello permitirá que un algoritmo pueda ser codificado indistintamente en
cualquier lenguaje. Para conseguir este objetivo se precisa que el algoritmo sea representado gráfica o
numéricamente
PSEUDOCÓDIGO
El pseudocódigo es un lenguaje de especificación (descripción) de algoritmos. El uso de tal lenguaje hace el
paso de codificación final (esto es, la traducción a un lenguaje de programación) relativamente fácil. El
pseudocódigo no puede ser ejecutado por una computadora.
Un diagrama de flujo es un diagrama que utiliza los símbolos (cajas) estándar y que tiene los pasos de
algoritmo escritos en esas cajas unidas por flechas, denominadas líneas de flujo, que indican la secuencia en
que se debe ejecutar.
PROGRAMA
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. En esencia, un programa es un medio para conseguir un fin. El fin será
probablemente definido como la información necesaria para solucionar un problema. El proceso de
programación es, por consiguiente, un proceso de solución de problemas y el desarrollo de un programa
requiere las siguientes fases:
Solamente las instrucciones sintácticamente correctas pueden ser interpretadas por la computadora y los
programas que contengan errores de sintaxis son rechazados por la máquina. Los elementos básicos
constitutivos de un programa o algoritmo son:
• Contadores
• Acumuladores
• Interruptores
• Estructuras:
1. Secuenciales
2. Selectivas
3. Repetitivas.
VARIABLES
El valor de una variable puede cambiar en algún paso del algoritmo o permanecer invariable; por lo tanto, el
valor que contiene una variable es el del último dato asignado a esta.
CONSTANTES
Luego de ser asignados, no cambian en ninguna instrucción del algoritmo.
IDENTIFICADORES
Las variables y constantes además de tener un Nombre (identificador) para poder referirnos a ellas en los
procedimientos.
DATOS
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 algoritmos y los
programas correspondientes operan sobre esos tipos de datos.
TIPOS DE DATOS:
● Números (1 2 4,5 -8 0,4).
❖ ENTERO: son sólo números enteros: 1, 0, 28, 30, 5, también los enteros
negativos (-1, -40, etc.), pero siempre sin decimales.
❖ REAL: son los enteros más los números decimales (3/4, 0.45 , -8 , - 95.45 ,
etc.)
● Lógico: sólo hay dos posibilidades, verdadero y falso, un valor lógico es un valor de verdad.
ASIGNACIÓN
La utilizamos cuando a un variable determinada le queremos dar un valor específico, ya sea
producto de una operación matemática o no. Ej: unNombre = ”Ana”. Esto significa que al campo
unNombre, le asignamos el valor “Ana”.
Directa: asignar un valor directamente que ya conocíamos a priori.
Indirecta: el valor de estas variables vendrá dado una vez que se ejecuta el programa, y se produzcan datos
de entrada.
EXPRESIONES
Las expresiones son combinaciones de constantes, variables, símbolos de operación, paréntesis y nombres
de funciones especiales.
EXPRESIONES ARITMÉTICAS
Las expresiones aritméticas son análogas a las fórmulas matemáticas. Las variables y constantes son
numéricas (real o entera) y las operaciones son las aritméticas.
EXPRESIONES LÓGICAS
Un segundo tipo de expresiones es la expresión lógica o booleana, cuyo valor es siempre verdadero o falso.
OPERADORES DE RELACIÓN
Los operadores relacionales o de relación permiten realizar comparaciones de valores de tipo numérico o
carácter. Los operadores de relación sirven para expresar las condiciones en los algoritmos.
OPERADORES LÓGICOS
Los operadores lógicos o booleanos básicos son not (no), and (y) y or (o).
ACUMULADOR
Se implementan como una estructura de programación ( A = A + B )
Consiste en almacenar en una variable (A) el valor de ella misma (= A) más otro valor variable (B). Es muy
útil para calcular sumatorias.
CONTADOR
Se implementan como una estructura de programación ( A = A + 1)
Consistente en almacenar en una variable (A) el valor de ella misma (= A) más un valor constante (1). Es
muy útil para controlar el número de veces que debe ejecutarse un grupo de instrucciones.
PROGRAMACIÓN
En Informática, decimos que es el proceso de codificar, depurar (detectar y eliminar errores) y mantener el
código fuente de programas de computadora.
El código fuente es escrito por un programador en un lenguaje de programación determinado.
El propósito de la programación es crear programas que exhiban un comportamiento deseado y puedan ser
ejecutados por una computadora.
La programación se rige por reglas que definen la estructura de un programa y un conjunto de instrucciones
que permiten transformar un algoritmo en código ejecutable en una computadora.
Cada lenguaje de programación tiene un léxico propio del lenguaje, así como sus propias reglas semánticas
y sintácticas.
PYTHON
¿QUE ES?
Python es un lenguaje de programación flexible y diseñado para ser fácil de leer. Es un lenguaje orientado a
objetos y de alto nivel. Gracias a su sintaxis sencilla es un muy buen lenguaje para aprender a programar.
ESTRUCTURA SECUENCIAL
Una estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas
se suceden de tal modo que la salida de una es la entrada de la siguiente y así sucesivamente hasta el final
del proceso.
● Asignación (ejemplo: a=3 , o , a=a+1)
● Entrada (ejemplo: a=input("ingrese valor")
● Salida (ejemplo: print "hola")
ESTRUCTURAS SELECTIVAS
Este es el caso cuando existen un número de posibles alternativas resultantes de la evaluación de una
determinada condición. Las estructuras selectivas se utilizan para tomar decisiones lógicas; de ahí que se
suelen denominar también estructuras de decisión o alternativas.
ESTRUCTURAS REPETITIVAS
Las estructuras que repiten una secuencia de instrucciones un número determinado de veces se denominan
bucles y se denomina iteración al hecho de repetir la ejecución de una secuencia de acciones.
WHILE
Se repite un bloque mientras la condición lógica devuelva True. Ej:
contador = 0
while contador < 5:
print(contador)
contador += 1
contador = 0
while contador < 5:
print(contador)
contador += 1
else:
print(“Dejó de contar”)
IMPRIME:
0
1
2
3
4
“Dejó de contar”
contador = 0
while contador < 5:
contador += 1
if (contador == 4)
print(“Se rompió”)
break
print(contador)
IMPRIME:
1
2
3
“Se rompió”
IMPRIME:
1
2
4
FOR
En PYTHON, el bucle “for” es un “bucle definido”, es decir, que preestablece las condiciones de la iteración
por adelantado. Mientras que en el while la condición era evaluada en cada iteración para decidir si volver a
ejecutar o no el código, en el for no existe tal condición, sino un iterable que define las veces que se
ejecutará el código.
● Los iterables son aquellos objetos que como su nombre indica pueden ser iterados, lo que dicho de
otra forma es, que puedan ser indexados. Ej: lista, diccionarios, strings.
● Los iteradores son objetos que hacen referencia a un elemento, y que tienen un método next que
permite hacer referencia al siguiente.
FUNCIONES
Cualquier función tendrá un nombre, unos argumentos de entrada, un código a ejecutar y unos parámetros de
salida.
Para llamar o activar esta función ponemos el nombre de la función seguido de paréntesis.
LISTAS
Es una colección de datos.
a = [1, “lista”, 2, 3]
Las listas son mutables y se accede a ellas mediante un index. El primer elemento de una lista está en el
índice 0.
print(a[0]) #1
print(a[1]) #lista
print(a[2]) #2
ITERAR LISTAS
a = [1, “lista”, 2, 3]
for elemento in a:
print(a)
#1
#”lista”
#2
#3
a = [1, “lista”, 2, 3]
for elemento in range(0, len(a)):
print(a[i])
#1
#”lista”
#2
#3
MÉTODOS LISTAS
● El método .append() añade un elemento al final de la lista.
a = [1, “lista”, 2, 3]
a.append(5)
print(a) #[1,”lista”, 2, 3, 5]
● El método .pop([i]) quita el ítem de la posición dada y si no se especifica un índice, quita el último
elemento de la lista.
a = [1, “lista”, 2, 3]
a.pop([1])
print(a) #[1, 2, 3]
● El método .remove(x) quita el primer ítem de la lista cuyo valor sea x. Lanza un ValueError si no
existe tal ítem.
a = [1, “lista”, 2, 3]
a.remove(1)
print(a) #[“lista”, 2, 3]
Un diccionario en Python es una colección de elementos, donde cada uno tiene una llave key y un valor
value. Los diccionarios se pueden crear con paréntesis {} separando con una coma cada par key: value.
d1 = {
"Nombre": "Sara",
"Edad": 27,
"Documento": 1003882}
ACCEDER Y MODIFICAR
Se puede acceder a sus elementos con [] o también con la función get()
print(d1['Nombre']) #Sara
print(d1.get('Nombre')) #Sara
Para modificar un elemento basta con usar [] con el nombre del key y asignar el valor que queremos.
d1['Nombre'] = "Laura"
print(d1)
#{'Nombre': Laura', 'Edad': 27, 'Documento': 1003882}
ITERAR DICCIONARIO
Los diccionarios se pueden iterar de manera muy similar a las listas u otras estructuras de datos. Para
imprimir los key.
MÉTODOS DICCIONARIOS
JSON
¿QUE ES?
Es un formato ligero de intercambio de datos. Leerlo y escribirlo es simple para humanos, mientras que para
las máquinas es simple interpretarlo y generarlo. Es un formato de texto que es completamente
independiente del lenguaje pero utiliza convenciones que son conocidas por los programadores de distintos
lenguajes. Estas propiedades hacen que JSON sea un lenguaje ideal para el intercambio de datos.
Para leer un archivo .json se debe colocar with open (‘nombre del archivo que queremos abrir’, ‘la forma de
apertura’), en el siguiente caso el “w” representa la escritura, pero también se puede utilizar “r” para
solamente realizar una lectura.
.DUMP
Serializa obj como una secuencia con formato JSON, proceso de codificación de un objeto en un medio de
almacenamiento.
.LOAD
Deserializa un documento JSON a un objeto Python.