Está en la página 1de 13

1- ¿Qué es un algoritmo?

En informática, se llaman algoritmos el conjunto de instrucciones


sistemáticas y previamente definidas que se utilizan para realizar
una determinada tarea. Estas instrucciones están ordenadas y
acotadas a manera de pasos a seguir para alcanzar un objetivo.
2- ¿Como nacen los algoritmos?
Escribió el primer algoritmo informático de la Historia. Ella misma
fue capaz de introducirlo, por primera vez, en una máquina. Con
esto pudo explicar los primeros conceptos informáticos que,
todavía hoy, persisten en la actualidad. Hablamos de Augusta Ada
King, más conocida como Ada Lovelace. Pionera en el mundo de
la informática y uno de los nombres científicos más importantes
del siglo XIX.
3- Características de algoritmos
Independientemente del uso que se le dé a los algoritmos, todos
guardan en común las siguientes características:
Inicio y fin: parten de un estado inicial desde el cual ejecutan una
serie de instrucciones para llegar a un estado final de salida o
finalización.
Exactitud: deben indicar un orden claro, específico y lógico de
instrucciones para la ejecución de cada paso, sin que exista
espacio para la ambigüedad.
Secuencia: deben seguir una serie de pasos ordenados,
entendibles y previamente establecidos.
Completos: deben tener en cuenta todas las posibilidades y
presentaciones del problema para ejecutar la solución exacta.
Finitos: el número de pasos para ejecutar la tarea debe ser finito
para darla por concluida.
Abstractos: representan una guía o modelo para ordenar
procesos.

4- Ventajas y desventajas de algoritmos


Ventajas
1.-Los algoritmos son la esencia de la informática, son uno de los
centros de interés de muchas, si no todas, de las áreas del campo
de la informática.
2.-Puedes trabajar en orden.
3.-Te redacta en orden paso a paso lo que hay que hacer.
4.- Ayuda a resolver más fácil y rápido los problemas.
5.-Disminuye sensiblemente el riesgo de errores.
6.-Favorece el obtener el máximo de información.
Desventajas
1.- Hay textos que desarrollan los algoritmos, mediante diversos
tipos de programas, por ejemplo: el lenguaje de programación C+
+, pero para comprender las letras deben poseer al menos un
año de experiencia en ese lenguaje de programación de alto y
bajo nivel.
2.- Muchos algoritmos interesantes llevan implícitos complicados
métodos de organización de los datos utilizados en el calendo.
3.- Con frecuencia sucede que muchos de los algoritmos que se
van a utilizar son fáciles de implementan una vez que se ha
descompuesto el programa, sin embargo, en la mayor parte de
los casos, existen unos pocos algoritmos cuya elección es crítica
porque su ejecución ocupara la mayoría de los recursos del
sistema.
4.- La elección del mayor algoritmo para una tarea particular
puede ser un proceso muy complicado y con frecuencia
conllevara un análisis matemático sofisticado.
5.- Actualmente se está estudiando en la informática, como
seleccionar el algoritmo que conduzca a la mejor
implementación pues para la mayoría de los problemas existen
varios algoritmos diferentes.

5- Principales herramientas para desarrollar algoritmos y


defina cada uno de ellos.
Diagramas de FLUJO
Un diagrama de flujo (flowchart) es una de las técnicas de
representación de algoritmo más antigua y a la vez más utilizada,
aunque se empleo ha disminuido considerablemente, sobre todo
desde la aparición de lenguajes de programación estructurados.
Un diagrama de flujo es un diagrama que utiliza los símbolos
(cajas) estándar mostrados en la figura 1 y que tiene los pasos del
algoritmo escritos en esas cajas unidas por flechas, denominadas
líneas de flujo, que indican la secuencia en que se deben
ejecutar.
PseudoCódigo
El pseudocódigo es una forma de representar código, como
algoritmos, funciones y otros procesos, utilizando una
combinación de lenguaje natural y elementos similares al
lenguaje de programación.
Diagrama N-S
Un diagrama N-S (Nassi-Shneiderman) es una representación
gráfica de un algoritmo. A diferencia del diagrama de flujo no
utiliza flechas para indicar el orden, en lugar de eso usa bloques
pegados y su orden se establece de arriba hacia abajo.

6- Enumere los pasos para desarrollar soluciones


computaciones
Pasos para desarrollar soluciones computacionales:
1. Definición del problema:

Comprender el problema:
¿Cuál es la necesidad o el problema que se busca resolver?
¿Qué información se tiene disponible?
¿Cuáles son los resultados esperados?
Delimitar el problema:
¿Qué aspectos del problema se abordarán en la solución
computacional?
¿Qué se excluirá del alcance de la solución?

2. Análisis del problema:


Descomponer el problema en partes más pequeñas:
Identificar los subproblemas que componen el problema
principal.
Definir las relaciones entre los subproblemas.
Identificar los datos y la información:
¿Qué datos se necesitan para resolver el problema?
¿En qué formato se encuentran los datos?
¿Cómo se recopilarán y almacenarán los datos?
3. Diseño de la solución:
Desarrollar un algoritmo:
Secuencia de pasos para resolver el problema.
Debe ser preciso, definido y finito.
Elegir las herramientas y tecnologías:
Lenguaje de programación.
Entorno de desarrollo.
Bibliotecas o frameworks.
4. Implementación de la solución:
Codificar el algoritmo:
Escribir el código fuente en el lenguaje de programación elegido.
Seguir las buenas prácticas de programación.
Pruebas y depuración:
Ejecutar la solución con diferentes casos de prueba.
Identificar y corregir errores.
5. Evaluación y documentación:
Evaluar la solución:
¿La solución cumple con los requisitos?
¿Es eficiente la solución?
¿Es fácil de usar la solución?
Documentar la solución:
Manual de usuario.
Guía técnica.
Documentación del código.
6. Mantenimiento y evolución:

Corregir errores:
Solucionar los errores que se encuentren en la solución.
Mejorar la solución:
Agregar nuevas funcionalidades.
Optimizar el rendimiento.
Herramientas y técnicas adicionales:

Diagramas de flujo:
Visualizar el algoritmo de forma gráfica.
Pseudocódigo:
Escribir el algoritmo en un lenguaje natural
Entornos de desarrollo integrados (IDE):
Facilitar la escritura, compilación y ejecución del código.
7- Datos y tipos de datos
En informática, los datos son representaciones simbólicas (vale
decir: numéricas, alfabéticas, algorítmicas, etc.) de un
determinado atributo o variable cualitativa o cuantitativa, o sea:
la descripción codificada de un hecho empírico, un suceso, una
entidad.
Algunos tipos de datos son:
Caracteres. Dígitos individuales que se pueden representar
mediante datos numéricos (0-9), letras (a-z) u otros símbolos.
Caracteres Unicode. Unicode es un estándar de codificación que
permite representar más eficazmente los datos, permitiendo así
hasta 65535 caracteres diferentes.
Numéricos. Pueden ser números reales o enteros, dependiendo
de lo necesario.
Booleanos. Representan valores lógicos (verdadero o falso).
8- Variables y Constantes
Qué es una variable
Las variables se emplean para almacenar información en un
programa y pueden llamarse símbolos, etiquetas o constantes.
Una variable es el tipo de dato más básico en un lenguaje de
programación. En los lenguajes de programación se pueden usar
variables para almacenar diferentes tipos de datos como
números, palabras y cadenas en la memoria del ordenador.
Qué es una constante
Las constantes son tipos de datos que no son mutables. Como en
toda declaración de tipo, es necesario asignar un valor a la
constante en el momento de la declaración.
A las constantes se les debe asignar un valor cuando se declaran.
La única excepción es si la constante se declara como “final”.
Declarar una variable final como constante significa que no
puede ser reasignada, incluso si tiene un valor inicial.
Algunos lenguajes de programación como C utilizan const para
declarar constantes y permiten asignarles valores en el momento
de la declaración. Esto puede hacer que el código sea más legible
y eficiente de usar porque elimina la necesidad de declarar e
inicializar por separado.
9-Compiladores
Un compilador es un programa informático que traduce todo el
código fuente de un proyecto de software a código máquina
antes de ejecutarlo. Solo entonces el procesador ejecuta el
software, obteniendo todas las instrucciones en código máquina
antes de comenzar. De esta manera, el procesador cuenta con
todos los componentes necesarios para ejecutar el software,
procesar las entradas y generar los resultados. No obstante, en
muchos casos, durante el proceso de compilación tiene lugar un
paso intermedio fundamental: antes de generar la traducción
final en código máquina, la mayoría de los compiladores suelen
convertir el código fuente en un código intermedio (también
llamado código objeto) que, a menudo, es compatible con
diversas plataformas y que, además, también puede ser utilizado
por un intérprete.
Al producir el código, el compilador determina qué instrucciones
van a enviarse al procesador y en qué orden. Si las instrucciones
no son interdependientes, incluso es posible que puedan
procesarse en paralelo.
10- Interpretes
Un intérprete es un programa informático que procesa el código
fuente de un proyecto de software durante su tiempo de
ejecución, es decir, mientras el software se está ejecutando, y
actúa como una interfaz entre ese proyecto y el procesador. Un
intérprete siempre procesa el código línea por línea, de modo
que lee, analiza y prepara cada secuencia de forma consecutiva
para el procesador. Este principio también se aplica a las
secuencias recurrentes, que se ejecutan de nuevo cada vez que
vuelven a aparecer en el código. Para procesar el código fuente
del software, el intérprete recurre a sus propias bibliotecas
internas: en cuanto una línea de código fuente se ha traducido a
los correspondientes comandos legibles por máquina, esta se
envía directamente al procesador.
El proceso de conversión no finaliza hasta que se ha interpretado
todo el código. Solo se interrumpe prematuramente si se
produce un fallo durante el procesamiento, lo que simplifica
mucho la resolución de los errores, ya que la línea de código
problemática se detecta inmediatamente después de ocurrir el
fallo.
11- Lenguajes de programación y sus generaciones
Primera generación: lenguaje máquina
Cada computadora tiene sólo un lenguaje de programación que
su procesador puede ejecutar; pues bien, éste es su lenguaje
nativo o lenguaje de máquina.
Los programas en lenguaje máquina se escriben en el nivel más
básico de operación de la computadora. Las instrucciones se
codifican como una serie de unos (1) y ceros (0). Estos programas
son complicados de leer y difíciles de escribir.
Segunda generación: lenguaje ensamblador
Para evitar que los programadores tuvieran que programar
directamente en código binario o máquina, se desarrollaron unos
programas para traducir instrucciones a código de máquina.
Estos programas se llamaron ensambladores, puesto que leían
las instrucciones que las personas podían entender en lenguaje
ensamblador y las convertía al lenguaje máquina.
El lenguaje ensamblador también es de bajo nivel, ya que cada
instrucción de este lenguaje corresponde a una instrucción de
lenguaje maquinal.
Cada procesador posee su propio lenguaje ensamblador. Éste
traduce el código fuente, línea por línea, a código de máquina y
crea el archivo ejecutable del programa.
Tercera generación: lenguajes de alto nivel
Estos lenguajes son parecidos al inglés y facilitan el trabajo de los
desarrolladores de software.
Existen muchos lenguajes de tercera generación como, por
ejemplo, COBOL, BASIC, FORTRAN, C, PASCAL, etc.
Con estos lenguajes, los programadores pueden escribir en una
sola instrucción lo equivalente a varias instrucciones complicadas
de bajo nivel. De esta manera, no tienen que concentrarse en la
operación interna del procesador, como sucede en los lenguajes
de las generaciones anteriores, y pueden ocuparse mejor de la
aplicación que están programando. Por ejemplo: un sistema de
gestión de RR.HH., un sistema de nóminas, un sistema gestor de
proyectos, etc.
Independientemente del lenguaje de alto nivel en que se escriba
un programa, un compilador deberá traducirlo al lenguaje de
máquina para que, de este modo, el procesador pueda
ejecutarlo.
Cuarta generación: lenguajes orientados al usuario (4GL)
El software de estos lenguajes genera de forma automática la
mayor parte de los procedimientos de un programa. Así pues, el
programador indica lo que se debe hacer, no cómo hacerlo. Un
programador que trabaje con un lenguaje de tercer nivel, como
por ejemplo Pascal, escribe instrucciones de lo que se debe hacer
y de cómo hacerlo.
En cambio, con los lenguajes 4GL, los usuarios finales escriben
sus programas de manera sencilla para consultar una base de
datos y para crear sistemas de información personales o
departamentales.
Muchos de estos lenguajes disponen de una interfaz gráfica y
sólo obligan al usuario o programador a usar instrucciones
sencillas y fáciles de manejar.
Estos lenguajes convierten las citadas especificaciones en:
Lenguajes de tercer nivel que posteriormente un programador
puede refinar.
Lenguaje máquina, directamente.
Contenido complementario
Ejemplos de lenguaje 4GL son la mayoría de las herramientas
CASE de diseño de bases de datos, modelado de procesos, etc.
Quinta generación: lenguajes naturales
Los lenguajes naturales se asemejan más al lenguaje humano
que sus antecesores, los lenguajes 4GL. Incluso algunos
productos comerciales han empezado a incluir características del
lenguaje natural. Cada vez hay más programas de bases de datos
que pueden ser consultados utilizando herramientas de consulta
en lenguaje natural.
Aunque estos lenguajes se encuentran en sus inicios, la mayoría
de las herramientas de uso y trabajo con el ordenador tenderán a
este tipo de lenguajes.
12- Estructura secuenciales, selectivas y repetitivas.
Estructuras Secuenciales, Selectivas y Repetitivas: Estas son
estructuras básicas de control de flujo utilizadas en
programación.
Secuenciales: Las instrucciones se ejecutan una tras otra en
secuencia.
Selectivas (o decisiones): Se basan en condiciones que
determinan qué ruta de ejecución seguir. Por ejemplo, if-else en
muchos lenguajes.
Repetitivas (o bucles): Permiten repetir un conjunto de
instrucciones varias veces según una condición. Ejemplos
incluyen for, while, y do-while.
13- Sintaxis: Se refiere a la estructura gramatical y las reglas que
rigen la combinación de símbolos y palabras en un lenguaje de
programación o en cualquier otro lenguaje formal. Una sintaxis
correcta es crucial para que un programa sea comprensible para
la computadora.
La sintaxis tiene como principal función analizar el orden correcto
de las palabras a fin de que las frases, oraciones, textos e ideas
sean expresados de manera correcta.
En informática, sintaxis se refiere al conjunto de reglas que
establecen cómo deben estar dispuestos los símbolos que
componen el lenguaje de programación o instrucción ejecutable
del ordenador.
Similar en Software, la sintaxis se entiende como el grupo de
normas que marcan las secuencias correctas de los elementos
propios de un lenguaje de programación.
14- Semántica: Se refiere al significado de las construcciones
válidas en un lenguaje de programación. La semántica define
cómo se comportan las expresiones y las instrucciones en un
programa. Incluye detalles sobre el comportamiento esperado de
las operaciones, tipos de datos, y estructuras del lenguaje.
La semántica describe el proceso que una computadora sigue
cuando ejecuta un programa en ese lenguaje específico. Esto se
puede mostrar describiendo la relación entre la entrada y la
salida de un programa, o una explicación de cómo el programa se
ejecutará en cierta plataforma, y consecuentemente creando un
modelo de computación.
15- Ciclo de Vida de un Software: Este término describe las
diferentes fases por las que pasa un software desde su
concepción hasta su obsolescencia. Las etapas típicas incluyen:
Requisitos: Captura de las necesidades del software.
Diseño: Planificación de cómo se construirá el software.
Implementación: Codificación y desarrollo del software.
Pruebas: Verificación de que el software cumple con los
requisitos.
Despliegue: Lanzamiento y distribución del software.
Mantenimiento: Actualizaciones, correcciones de errores y
mejoras continuas.
Entender estos conceptos es esencial para comprender y
desarrollar software de manera efectiva y eficiente.

También podría gustarte