Fundamentos de Computación y Programación
Fundamentos de Computación y Programación
Capítulo 1
computadora
es una palabra inglesa que como no posee una traducción adecuada, fue admitida por
la Real Academia Española
es el conjunto de los componentes que integran la parte material y tangible de una
computadora
por ejemplo: chips, circuitos, cables, periféricos de todo tipo y cualquier otro
elemento físico involucrado
software
es una palabra inglesa qie como no posee una traducción adecuada, fue admitida por
la Real Academia Española
usado por primera vez en 1958 por John W. Tukey
es el conjunto de todos los programas de cómputo, documentación y también los
datos asociados que forman parte de un sistema de computación
bit
1
es un planteamiento de una situación cuya respuesta desconocida debe obtenerse a
través de métodos científicos
no resulta evidente el camino a seguir, no se dispone de fórmulas o métodos para
aplicar
existen varios caminos para resolverlo
requiere aplicar y vincular conocimientos previos
ejercicio
2
si <condición> entonces <opción 1> de lo contrario <opción 2>
se puede omitir el "de lo contrario"
se pueden anidar
tablas de verdad
verdadero y falso
expresiones lógicas
repetición condicional
repetir <número> veces
permiten expresar de forma abreviada una secuencia repetitiva de
operaciones
repetición condicional
repetir mientras <condición>
se repite siempre que la condición sea verdadera
puede que no se repita ni una sola vez
repetir hasta <condición>
se repite hasta que la condición sea verdadera
puede no repetirse ni una sola vez
"Primero un caso particular, luego generalizar"
Capítulo 2
lenguaje de programación
3
pasos para crearlo:
interpretación del problema
usando ejemplos
diseño del algoritmo
verificación del algoritmo
implementación del algoritmo en un lenguaje de programación
edición, compilación y ejecución
verificación del programa
código fuente
4
write
writeln
read
definidos por el programador
el significado lo establece la persona que escribe el programa
ese significado puede cambiarse
ejemplos:
nombres de variables y funciones declaradas en el programa
restricciones
solo pueden contener letras, números y guiones bajos
no pueden ser iguales a una palabra reservada
no pueden utilizarse vocales con acentos ni la letra ñ
deben comenzar con una letra o guion bajo
programas en Pascal
case insensitive
encabezado
program nombre_programa;
bloque de declaraciones
bloque ejecutable
begin
write('Hello World!');
end.
separadas por ;
declaración de datos en Pascal
el valor de las constantes no cambia durante el programa, como si lo pueden hacer las
variables
tanto las constantes como las variables deben tener un tipo de dato definido
cuando se declara una variable aún no posee ningún valor inicial
para inicializar el valor de una variable se puede utilizar la primitiva read y la
primitiva de asignación :=
primitiva de asignación
5
<variable> := <expresión>
primero se evalúa la expresión de la derecha, obteniendo un valor
luego se modifica el valor de la variable perdiendo el valor anterior
errores en los programas
error de compilación
es un error detectado por el compilador al momento que se está realizando la
compilación de un código fuente. Son los más fáciles de encontrar y resolver
error de ejecución
ocurre cuando durante la ejecución del programa hay una situación anormal
que provoca que la ejecución se corte abruptamente
error de programación
es un error en la lógica del algoritmo o programa el cual causa que no se
resuelva correctamente la tarea que debe hacer el programa
diagramas sintácticos
hacer comentarios que permitan explicar la intención de escribir ciertas partes del
programa
usar nombres significativos para los identificadores
tipos de datos
6
funciones predefinidas
sqr(), abs()
representación interna
?
real
subconjunto finito de los números reales
tiene mínimo y máximo
tiene precisión máxima -> no se cumple el hecho de que entre dos
reales existe siempre otro número real
se expresa en notación científica
?
operaciones
+, -, *, /
=, <>, >, <, >=, <=
funciones predefinidas
abs(), exp() (e elevado a la X), ln(), round(), sqr(), sqrt(),
trunc()
round()
si la parte decimal es 0.5 y la parte entera es par, redondea
"para abajo", si la parte entera es impar, redondea "para
arriba"
representación interna
en general 6 bytes, pero siempre más rango que integer
char
los 256 símbolos del código ASCII
operaciones
=, <>, >, <, >=, <=
funciones predefinidas
chr(), ord(), succ(), pred()
representación interna
1 byte
boolean
7
true, false
operaciones
and, or, not
=, <>, >, <, >=, <=
representación interna
1 byte (podría ser un 1 bit)
expresiones
read
lee un elemento del buffer y se lo asigna a una variable que tiene como
parámetro
si no hay un elemento en el buffer espera a que se carguen valore y se presione
enter
readln
tiene la misma función que read, pero además busca el enter en el buffer, por lo
que, como efecto colateral, lo vacía
readln(variable) es lo mismo que read(variable); readln;
asociado a la ejecución de un programa en Pascal hay un buffer dedicado a almacenar
lo que se escribe por teclado
buffer (amortiguador)
Capítulo 3
if-then-else
sintaxis
8
if <expresión booleana> then
<sentencia>
else
<sentencia>;
sentencia compuesta
permite que una secuencia de sentencias sea considerada como una sola sentencia
se construye encerrando las sentencias deseadas, separadas por punto y coma, entre
un begin y un end
permite anidar distintas estructuras de control
pautas de buena programación
Capítulo 4
for
sintaxis
semántica general
9
al ejecutarse esta sentencia for primero se evalúan las expresiones, se le asigna
el resultado de inicio a foo
luego se ejecuta una cantidad fija de veces la sentencia, que puede ser simple
o compuesta, dependiendo de los valores de inicio y fin
en el caso de to
Capítulo 5
while
sintaxis
while expresion_booleana do
sentencia;
semántica
se evalúa expresion_booleana
en el caso en el que la expresión sea true, se ejecuta la sentencia y se
vuelve a ejecutar el propio while, repitiendo el proceso
en el caso en el que la expresión sea false no se ejecuta la sentencia y
se continúa con la ejecución del programa
similitudes y diferencias entre while y for
similitudes
ambos permiten repetir cero o más veces una sentencia compuesta
diferencias
el while es una repetición condicional, mientras que el for es una repetición
incondicional
10
no todo lo que se puede hacer con un while se puede hacer con un for, esto se
debe a que con el while no es necesario conocer de antemano la cantidad de
veces se debe repetir
todo lo que se puede hacer con un for sí se puede hacer con un while, porque
se puede implementar el incremento o decremento de la variable de control
con un for no se puede caer en un ciclo infinito, mientras que con un while sí
ciclo infinito
sintaxis
repeat
sentencias
until expresion_booleana
semántica
similitudes
ambas son repeticiones condicionales
ambas dependen de una expresión lógica para determinar si se continúa
repitiendo o no
no se conoce al cantidad de veces que se repetirá la sentencia
todo lo que se puede hacer con un while se puede hacer con un repeat-
until
diferencias
usan identificadores reservados distintos (no se si es necesario incluir esto en
una potencial respuesta)
la condición del while se evalúa al principio, mientras que la del repeat se
evalúa al final, por lo que al menos una vez se va a ejecutar
las condiciones del while y el repeat son inversas: un while se repite si la
condición es verdadera y un repeat se repite si la condición es falsa
el while se repite 0 o más veces mientras que el repeat 1 o más veces
comparación entre el for y el repeat
11
las diferencias se mantienen similares a las que tiene el for con el while, pero se le
agrega el hecho de que el repeat se ejecuta una vez sí o sí, no como el for que puede
no ejecutarse
debugging
Capítulo 6
case
sintaxis
case expresion of
opciones1: sentencia1;
opciones2: sentencia2;
else sentencia3
end
semántica
case vs if-then-else
Capítulo 7
funciones
12
definición de la función
nombre
parámetros formales
tipo de dato de la función
bloque ejecutable
asignación del resultado de la función
el nombre de una función no es una variable y se usa solo para darle valor de retorno
a la función, si se usa en la parte derecha de una asignación se está llamado a la
propia función
procedimientos
similitudes
ambos pueden declarar constantes y variables propias
tienen un bloque ejecutable
permiten la implementación de primitivas
requieren ser parte de un programa para ser ejecutadas
pueden tener 0 o más parámetros
diferencias
la mayor diferencias es como se realiza la llamada a cada uno
una función se debe llamar dentro de una expresión y cuando se retorna
de su llamada se sigue ejecutando la misma sentencia en donde fue
llamada
un procedimiento se llama como una sentencia y al retornar de la
ejecución del procedimiento se ejecuta la sentencia siguiente a la llamada
la función tiene un tipo asociado
la función aunque no tenga parámetros devuelve un valor
creación de primitivas
si se quiere llamar a la primitiva desde una expresión, entonces la primitiva tiene que
ser una función
si se quiere llamar a la primitiva como una sentencia, entonces la primitiva tiene que
ser un procedimiento
13
si la primitiva no va a retornar ningún resultado, entonces conviene usar un
procedimiento
parámetros
formales
son aquellos que están en la definición de la primitiva, reciben ese nombre
porque le dan "forma"
pueden ser de dos tipos
por valor
reciben una copia del valor del parámetro efectivo, se los utiliza
solamente como entrada de datos
por referencia
se les antepone el identificador var y se crea una referencia entre el
parámetro formal y el parámetro efectivo, todo cambio que se
realice en el parámetro formal afectará al parámetro efectivo
efectivos
son aquellos valores que se le introducen a las primitivas al momento de llamar
su ejecución
si corresponde a un parámetro formal por valor este parámetro puede ser un
valor, una expresión o una variable del mismo tipo que el parámetro formal
si corresponde a un parámetro formal por referencia este parámetro debe ser
una variable del mismo tipo que el correspondiente parámetro formal
ventajas de la implementación de primitivas
Capítulo 8
estrategias para resolver problemas
descomposición/"top-down"
consiste en dividir un problema en distintas partes que se pueden resolver por
separado denominadas sub-problemas
composición/"bottom-up"
consiste en comenzar por las primitivas ya disponibles y con esas ir
construyendo y componiendo partes más complejas que pueden ser usadas
como nuevas primitivas
modificación de la metodología propuesta
14
para cada sub-problema implementar primitivas
integrar todo en un programa y verificar
bloques
un identificar puede ser usado en un determinado bloque si está declarado dentro del
entorno de referencia de dicho bloque
el entorno de referencia de un bloque esta formado por cuatro entornos
entorno local
conjunto de identificadores declarados dentro del bloque (parámetros
formales, constantes, variables, procedimientos y funciones)
entorno global
conjunto de identificadores declarados en el bloque del programa
principal
entorno no-local
conjunto de identificadores declarados en los bloques que contienen a
dicho bloque, exceptuando el global
entorno predefinido
conjunto de identificadores predefinidos por el compilador, disponibles
para todo el programa
cuando se hace referencia a un identificar dentro de un bloque primero se busca en el
entorno local, luego en el no-local, luego el global y, por último, el entorno
predefinido
un identificador oculta a otro si en la búsqueda del identificador es encontrado antes
que otro en un entorno distinto, siguiendo el orden expuesto en el punto anterior
el alcance de un identificador lo conforman todas aquellos bloques donde el
identificador es visible
es un error de programación que un procedimiento o función utilice o modifique una
variable que no pertenezca a su entorno de referencia local
Capítulo 9
15
recursión
16