0% encontró este documento útil (0 votos)
47 vistas16 páginas

Herramientas y Algoritmos en Computación

Este documento contiene varias secciones con información sobre algoritmos y programación, incluyendo preguntas para discutir sobre computadoras, la organización de una computadora, las etapas para resolver un problema, reglas para diagramas de flujo, tablas sobre operadores y tipos de datos, y más. El documento provee recursos útiles para explicar conceptos básicos de algoritmos y programación a estudiantes.

Cargado por

marianaoa2005
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
47 vistas16 páginas

Herramientas y Algoritmos en Computación

Este documento contiene varias secciones con información sobre algoritmos y programación, incluyendo preguntas para discutir sobre computadoras, la organización de una computadora, las etapas para resolver un problema, reglas para diagramas de flujo, tablas sobre operadores y tipos de datos, y más. El documento provee recursos útiles para explicar conceptos básicos de algoritmos y programación a estudiantes.

Cargado por

marianaoa2005
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

Este documento contiene varias secciones que pueden apoyar la exposición de


las clases de HCA.

Contenido
A. Preguntas para discutir e investigar en la primera clase de HCA:............................................... 2
B. Esquema de la organización de una computadora ..................................................................... 2
C. Etapas seguidas al resolver un problema:................................................................................... 3
D. Reglas para los diagramas de flujo para la elaboración de algoritmos: ...................................... 3
E. Tabla A. Jerarquía de los operadores aritméticos, relacionales, lógicos y asignación (diagramas
de flujo)ª:............................................................................................................................................. 4
F. Tabla B. Definición de los operadores lógicos............................................................................. 4
G. Convenciones para la escritura de los identificadores de variables y constantes ...................... 5
H. Tipos de valores primitivos: ........................................................................................................ 5
I. Noción de arreglo: ....................................................................................................................... 5
J. Esquema de la tabla para el mapa de memoria:......................................................................... 6
K. Implementación de los algoritmos y escritura del código: ......................................................... 6
A. Tabla C. Símbolos gráficos para diagramas de flujo de los algoritmos: ...................................... 7
B. Tabla D. Jerarquía de operadores aritméticos, relacionales y lógicos (Python): ...................... 10
C. Tabla E. Traducción del símbolo gráfico al lenguaje de programación (Python 3.x): ............... 11
D. Tabla F. Tipos primitivos (Python 3.x): ...................................................................................... 13
E. Tabla G. Definición de funciones (Python 3.x): ......................................................................... 13
F. Administración de archivos para lectura y escritura (Jupyter Python): .................................... 14
G. Documentación (Python 3.x):.................................................................................................... 15
H. Identificadores reservados o “tokens” (Python 3.x): ................................................................ 15
I. Funciones de la biblioteca math (Python 3.x): .......................................................................... 15
J. Tabla H. Colecciones o Tipos Iterables (Python 3.x): ................................................................ 16

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
2

A. Preguntas para discutir e investigar en la primera clase de HCA:


¿Qué es una computadora?
¿Qué es un bit? ¿Qué es un byte? ¿Qué es el sistema de numeración binario?
¿Qué dispositivos de almacenamiento de datos o información tiene una computadora?
¿Para qué es la memoria de una computadora? ¿Qué significan las siglas en inglés RAM?
¿De qué depende la rapidez de una computadora?
¿Qué características son relevantes al comparar las computadoras?
¿Qué tipos de computadoras existen?
¿Cuáles son las capacidades y limitaciones de las computadoras actuales?
¿Cómo se miden las capacidades de las computadoras?
¿Qué es la programación?
¿Qué es un algoritmo?
¿Qué aplicaciones se derivan de las computadoras?

B. Esquema de la organización de una computadora


(arquitectura de Von Neumann):

unidad de memoria
dispositivo de
entrada
registros, contador y acumulador
dispositivo de
procesador (CPU) salida

unidad de unidad aritmética y


control lógica

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
3

C. Etapas seguidas al resolver un problema:


1. Entender el problema. Identificar los datos de entrada y los valores de salida.
2. Diseñar una solución.
a. Identificar la sucesión de pasos (actividades y cálculos) que debe seguirse
para la solución del problema.
b. Identificar las variables y constantes que se requiere.
c. Identificar las estructuras de control necesarias para el proceso de solución.
d. Diseñar un algoritmo y representarlo mediante diagramas de flujo. Los
cálculos serán realizados por expresiones formadas por valores dados por
variables y constantes, y operadores, los cuales pueden ser aritméticos,
relacionales y lógicos.
e. Verificar que la solución propuesta cumple los requisitos de la solución
mediante una tabla o mapa de memoria.
3. Instrumentar la solución.
a. Traducir el diagrama del algoritmo al lenguaje de programación usado para
su implementación.
b. Escribir el programa del algoritmo en código.
4. Verificar la solución.
a. Establecer un grupo de casos de prueba, considerando datos de situaciones
típicas y extremas.
b. Ejecutar el programa con los casos de prueba y verificar los valores de salida
calculados por el programa.
c. Explorar opciones para simplificar el algoritmo e incrementar su eficiencia.

D. Reglas para los diagramas de flujo para la elaboración de algoritmos:


1. Los diagramas de flujo se usan para representar algoritmos que son independientes
del lenguaje de programación que los implementa.
2. Un diagrama de flujo contiene instrucciones dadas por símbolos gráficos en
sucesión que parten de un inicio y llegan a un fin. El diagrama se construye de
manera vertical (top-down) y puede usar conectores.
3. Los diagramas de flujo constan de instrucciones para el ingreso de los datos de
entrada, su proceso y almacenamiento en la memoria, y el despliegue de los
resultados de salida.
4. Con excepción de los símbolos de inicio y fin, cada instrucción dada por uno o
varios símbolos gráficos debe tener una línea de flujo de entrada y una línea de flujo
de salida.

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
4

E. Tabla A. Jerarquía de los operadores aritméticos, relacionales,


lógicos y asignación (diagramas de flujo)ª:
Símbolo Operación
() Paréntesis para agrupar operaciones
Aritméticos ^, ** Potencia
+, - Signos de número, positivo y negativo
*, /, div, mod Multiplicación, división, cociente o división
entera, resto o residuo
+, - Suma y resta
Relacionales <, ≤, >, ≥, =, ≠, Menor, menor o igual, mayor, mayor o
igual, equivalencia, no equivalencia
Lógicos ϵ, ϵ Pertenencia y no pertenencia
~, no Negación
˄, y Conjunción
˅, o Disyunción
Asignación Asignación de valor a una variable
ªNota: Operadores binarios de igual jerarquía, de izquierda a derecha; operadores unarios
de igual jerarquía, de derecha a izquierda (3^3^3 es 3^27).

F. Tabla B. Definición de los operadores lógicos


Si a y b son dos proposiciones o condiciones, pueden crearse las
proposiciones de conjunción, disyunción y negación, siguientes:
a b ayb aob no a no b
V V V V F F
V F F V F V
F V F V V F
F F F F V V

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
5

G. Convenciones para la escritura de los identificadores de variables y


constantes
Los nombres o identificadores de las variables, los cuales permiten almacenar datos o
valores en memoria, deben escribirse con palabras o términos descriptivos del uso o
significado de la variable. La escritura del identificador debe hacerse con letra minúscula y
sin espacios o símbolos especiales (%, $, (), #, /, *, etc.), pero pueden contener números,
después de la letra inicial. Si se utiliza varias palabras o términos, éstas pueden distinguirse
con una letra inicial en mayúscula.
Los identificadores de constantes deben escribirse en letra mayúscula y si se usan varias
palabras o términos para el identificador, deberán separarse con guion bajo.

H. Tipos de valores primitivos:


 Numéricos: enteros y valores de punto flotante para la representación decimal.
 Lógicos
 Caracteres o símbolos y cadenas de caracteres

I. Noción de arreglo:
El tipo denominado arreglo es una sucesión de variables (localidades de la memoria) del
mismo tipo, las cuales están identificadas por el valor de un índice. El nombre de cada
variable del arreglo es escrito con el identificador o nombre del arreglo seguido de un
índice o subíndice entre corchetes. El identificador del arreglo está sujeto a la convención
de escritura de los identificadores de variables antes expuesta. Los arreglos de variables
pueden generalizarse para incluir dos o más índices independientes a manera de
dimensiones. Las n variables de un arreglo unidimensional a pueden visualizarse, por
ejemplo, de cualquiera de las siguientes dos maneras:
a[0] a[1] a[2] … a[n-1] a0 a1 a2 … an-1

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
6

J. Esquema de la tabla para el mapa de memoria:


Para validar el algoritmo representado en el diagrama de flujo, construya la tabla siguiente.
Después de identificar las variables y el tipo de cada una de ellas; así como numerar las
instrucciones donde se asigna o cambia el valor de las variables en el diagrama de flujo
(lectura y asignación), constrúyase la siguiente tabla, registrando los valores de las
variables de acuerdo a los datos iniciales de entrada:
número de variable 1 variable 2 … variable n
instrucción (tipo) (tipo) (tipo)


Anote los datos de entrada y los valores impresos de salida:

Datos: Imprime:

K. Implementación de los algoritmos y escritura del código:


La base de la solución de un problema es el algoritmo descrito con diagramas de flujo que
parte de una entrada, sigue un proceso de cálculo y un uso de memoria, entregándose una
salida. Siempre se parte de un algoritmo, pero en ocasiones los problemas se separan en dos
o tres sub-problemas, por claridad o facilidad. Cada sub-problema puede resolverse a su
vez con un algoritmo, tratándose la solución del problema de origen de una manera
modular, pero enfatizando que cada módulo es a su vez un algoritmo descrito por un
diagrama de flujo completo. Una vez dado el diagrama o diagramas escribimos el código,
notándose que las entradas pueden hacerse desde pantalla, archivo o como el valor del
argumento de una función, los módulos se convierten en funciones, los arreglos son
implementados mediante sucesiones o colecciones de variables y las salidas pueden ser de
pantalla, archivo o la salida entregada por la función.

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
7

A. Tabla C. Símbolos gráficos para diagramas de flujo de los


algoritmos:

diagrama descripción

inicio o fin

líneas y direcciones de
flujo

entrada de datos/input
(lectura)

despliegue de
salida/output
(escritura)

evaluación de la
identificador expresión expresión a partir de
cálculo de las
operaciones y
asignación del valor al
identificador

evaluación de una
proposición proposición o
expresión lógica

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
8

diagrama descripción

selector evaluación de selector

conectores
(continuación/módulo)

f
proposición

Selección Simple
v Tipo I
bloque de
instrucciones

v f
proposición

Selección Simple
bloques de Tipo II
instrucciones

otro valor
selector
v1
v2 vn
selección múltiple con
v3
selector
bloques de
instrucciones

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
9

diagrama descripción

acción inicial
(contador/iterador) Ciclo Tipo I:
ciclo de repetición for
determinado para un
proposición o condición contador o un iterador
f
de control del ciclo
(contador/iterador)
(Nota: el ciclo for con
un contador numérico
v se generaliza en los
bloque de leguajes orientados a
instrucciones
objetos (OOL) al ciclo
acción de
con un iterador para
actualización los objetos de una
(contador/iterador) colección o agregado)

Ciclo Tipo II:


f ciclo de repetición
proposición
while indeterminado y
controlado por una
v proposición
bloque de
instrucciones

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
10

B. Tabla D. Jerarquía de operadores aritméticos, relacionales y lógicos


(Python):
Tipo Operadores en Python Explicación
paréntesis () Agrupa operaciones y
puede modificar la jerarquía
de los operadores
operadores aritméticos ** Potencia
+,- Signos positivo y negativo
de número:
-1**2 → -1,
10**-1 → 0.01
*,/,//,% Multiplicación, división,
cociente y resto
+,- Suma y resta
operadores relacionales <,<=,>,>=,==, != Operadores relacionales:
menor, menor o igual,
mayor, mayor o igual,
equivalencia y no
equivalencia
(!= es la negación de la
equivalencia)
operadores lógicos in, not in Pertenencia y no
pertenencia
not Negación
and Conjunción
or Disyunción
operadores de asignación =, +=, -=, *=, /=, **=, Asignación y operaciones
%=,//= seguidas de la asignación

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
11

C. Tabla E. Traducción del símbolo gráfico al lenguaje de


programación (Python 3.x):

diagrama descripción código


input()
idArch.readline()
lectura
idArch.read()
idArch.readlines()

print()
escritura
idArch.write()
idArch.writelines()

operación y
identificador expresión asignación identificador =
ón del valor de expresión
una
expresión

f
proposición if proposición:
bloque de
Selección intrucciones
v Simple I
bloque de
instrucciones

if proposición:
v f
proposición
bloque de
instrucciones
Selección
bloques de else:
instrucciones
Simple II
bloque de
instrucciones

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
12

f
proposición

Ciclo II:
v
bloque de ciclo de
instrucciones while proposición:
repetición
while con el bloque de
control de intrucciones
una
proposición

acción inicial
(contador/iterador)

Ciclo I:
proposición o condición f ciclo de
de control del ciclo for variable in
(contador/iterador)
repetición for colección:
para un
contador o bloque de
v intrucciones
iterador
bloque de
instrucciones

acción de
actualización
(contador/iterador)

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
13

D. Tabla F. Tipos primitivos (Python 3.x):


valor o dato tipo en Python descripción
número entero int entero con cantidad de
cifras ilimitada
número con punto decimal float número de punto
flotante de 64 bits
(53 cifras significativas/signo
+
11 exponente/signo base 2)
cadena de caracteres (string) str cada carácter
codificado, ASCII
(American Standard
Code, 8 bits), Unicode
valor lógico bool False/True
número complejo complex número con parte
imaginaria en unidades
de j

E. Tabla G. Definición de funciones (Python 3.x):


Definición o creación de la función Aplicación de la función
def nombre(sucesión de variables):
bloque de instrucciones identificador=nombre(sucesión de valores)
return expresión

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
14

F. Administración de archivos para lectura y escritura (Jupyter Python):

I. Comandos del sistema operativo útiles:

pwd (print working directory, listar la dirección de la carpeta de trabajo)


ls (list files, listar los archivos del directorio o carpeta de trabajo)
cd (change directory, cambiar a otro directorio o carpeta)
who (lista los identificadores creados en memoria para variables y objetos)
whos (lista los valores y objetos, y tipos de los identificadores creados en
memoria)

II. Funciones para el manejo de archivos:

1) Creación del identificador: para abrir el archivo, debe usarse un


identificador de archivo y la función open(), indicando el modo de operación
(lectura, escritura o creación, o añadir información al archivo). Los modos
son los siguientes
- 'r': leer (read)
- 'w': escribir o crear (write)
- 'a': añadir información (append)
2) Modo de operación: Una vez abierto el archivo se crea un objeto
identificador (idA) al que se aplica la operación dada por un método:
- Métodos de lectura,
idA.read(): una sola cadena de caracteres de todo el archive;
idA.readline(): una cadena de caracteres para un solo renglón (‘\n’)
idA.readlines(): una lista de cadenas de caracteres con cada renglón (‘\n’)
- Métodos de escritura o creación, o añadidura:
idA.write(cadena): una sola cadena de caracteres
idA.writelines(lista): una lista de cadenas de caracteres, donde cada cadena
de la lista es un reglón.
3) Cierre: Término del uso y cierre del archivo con el método idA.close().

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
15

G. Documentación (Python 3.x):


https://docs.python.org/3.9/reference/
https://docs.python.org/3.9/library/
https://docs.python.org/3/reference/lexical_analysis.html

Funciones predefinidas (Python 3.x):


https://docs.python.org/3.9/library/functions.html

H. Identificadores reservados o “tokens” (Python 3.x):


False, await, else, import, pass, None, break, except, in, raise, True, class, finally,
is, return, and, continue, for, lambda, try, as, def, from, nonlocal, while, assert, del,
global, not, with, async, elif, if, or, yield

I. Funciones de la biblioteca math (Python 3.x):


Algunas funciones predefinidas (del lenguaje de programación C estándar) se agrupan en la
biblioteca math:
Raíz cuadrada, potencia y factorial: sqrt(), pow(), factorial()
Trigonométricas: sin(), cos(), tan(), degrees(), radians()
Trigonométricas inversas: asin(), acos(), atan()
Hiperbólicas: sinh(), cosh(), tanh(), asinh(), acosh(), atanh()
Logaritmo en base 10, logaritmo natural y exponencial: log10(),log(), exp()
Valor absoluto: fabs(), abs()
Máximo y mínimo: max(), min()
Suma: fsum(), sum()
Funciones numéricas: round(), floor(), ceil(), trunc()
Comparación numérica: cmp()
Evaluación y transformación de tipo: type(), int(), float(), str(),bool()
Constantes: pi, e

Los nombres de las funciones que componen la biblioteca math, así como los de cualquier otra
biblioteca, se pueden listar. Por ejemplo, en la consola o en un notebook, importe la biblioteca
math y despliegue la lista de funciones de math. (con punto), oprimiendo Tab:

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022
16

J. Tabla H. Colecciones o Tipos Iterables (Python 3.x):


descripción símbolo
(estructura tipo agrupador y propiedades o características
de datos) función
generadora
sucesión o tuple () inmutable, ordenada y acceso directo al elemento
tupla paréntesis por un índice con valor entero; generación por
tuple() comprehension con la función generadora
cadena de str '' inmutable, ordenada y acceso directo al elemento
caracteres o apóstrofos por un índice con valor entero
texto (string) str()
rango o patrón range start, stop, step inmutable, ordenada y acceso directo al elemento
de una range() por un índice con valor entero
progresión
aritmética
lista de list [] mutable, ordenada y acceso directo al elemento por
variables corchetes un índice con valor entero; generación por
list() comprehension
conjunto o set {} mutable, no ordenada y sin índice; generación por
agregado sin llaves comprehension
orden set()
diccionario con dict {} mutable, no ordenada y acceso directo al valor por
elementos, llaves llave, la cual es de tipo inmutable; generación por
llave:valor dict() comprehension

Herramientas Computacionales y Algoritmos Departamento Académico de Computación (ITAM)


5/10/2022

También podría gustarte