Está en la página 1de 41

Introducción al Software

Definición
⚫ Grupo de instrucciones que forman programas y son
depositadas en la memoria del computador.
⚫ Es un componente creado por el humano.
⚫ Es el nexo de unión entre el hardware y el hombre.
⚫ Le indica al hardware en qué secuencia y bajo qué lógica
hay que hacer los cálculos y las manipulaciones de datos.
⚫ Para su desarrollo existen diversos lenguajes de
programación.
Introducción al Software
Definición
⚫ Un programa es una secuencia de instrucciones que
pueden ser interpretadas por una computadora, obteniendo
como fruto de esa interpretación un determinado resultado.
⚫ Una rutina es un subconjunto del conjunto de instrucciones
que conforman el programa. Cada una de las rutinas de un
programa realiza una determinada función dentro del mismo.
Introducción al Software
Introducción al Software
Tipos de Software
⚫ Software del sistema: es el software básico o sistema
operativo. Es un conjunto de programas cuyo objeto es facilitar el uso
del computador y conseguir que se use eficientemente. Administra y
asigna los recursos del sistema (hardware).

⚫ Software de aplicaciones: programas que son


escritos para o por los usuarios para realizar una tarea específica en la
computadora. Ejemplo: software para procesar un texto, para generar
una hoja de cálculo.

⚫ Software de usuario final: es el software que


permite el desarrollo de algunas aplicaciones directamente para los
usuarios finales.
Lenguajes de Programación
Definición
⚫ Es un lenguaje artificial que puede ser usado para controlar
el comportamiento de una máquina, especialmente una
computadora. Éstos se componen de un conjunto de reglas
sintácticas y semánticas que permiten expresar
instrucciones que luego serán interpretadas.
⚫ El programador es el encargado de utilizar un lenguaje de
programación para crear un conjunto de instrucciones que,
al final, constituirá un programa o subprograma informático.
⚫ Los lenguajes de programación pueden
clasificarse según el paradigma que usan
en: procedimentales, orientados a
objetos, funcionales, lógicos, híbridos, etc.
Lenguajes de Programación
Definición
⚫ Los lenguajes de programación proporcionan un
mecanismo de programación:
1. Independiente del microprocesador.
2. Más cercano a las habilidades de los humanos.
3. De mayor productividad en la generación de
programas.
⚫ Son ejemplos de lenguajes de programación: PHP
Prolog, ASP, Action Script, Ada, Python, Pascal, C,
C++, C#, Basic, Java, JavaScript, Visual Basic.net, etc.
Lenguajes de Alto Nivel o de
Tercera Generación
Definición
⚫ Un lenguaje de programación de alto nivel se
caracteriza por expresar los algoritmos de una
manera adecuada a la capacidad cognitiva humana, en
lugar de a la capacidad ejecutora de las máquinas.
⚫ Se requiere de ciertos conocimientos de
programación para realizar las secuencias de
instrucciones lógicas.
⚫ Se crearon para que el usuario común pudiese
solucionar un problema de procesamiento de datos
de una manera más fácil y rápida.
Lenguajes de Alto Nivel
⚫ Ventajas
1. Genera un código más sencillo y comprensible.
2. Permiten escribir un código válido para diversas
máquinas y, posiblemente, sistemas operativos.

⚫ Inconvenientes
1. Reducción de velocidad al ceder el trabajo de bajo
nivel a la máquina.
2. Algunos requieren que la máquina cliente posea una
determinada plataforma.
Ejemplos de lenguajes de alto nivel
⚫ Ada
⚫ ALGOL
⚫ BASIC
⚫ C++
⚫ C#
⚫ COBOL
⚫ Fortran
⚫ Java
⚫ Lisp
⚫ Modula-2
⚫ Pascal
⚫ Perl
⚫ PHP
⚫ PL/SQL
⚫ Python
Lenguajes de Bajo Nivel o de
Segunda Generación
Definición
⚫ También llamados lenguajes ensambladores, permiten
al programador escribir instrucciones de un programa
usando abreviaturas del inglés, llamadas palabras
nemotécnicas, tales como: ADD, DIV, SUB, etc.
⚫ Un programa escrito en un lenguaje ensamblador
tiene el inconveniente de que no es comprensible
para la computadora, ya que, no está compuesto por
ceros y unos. Para traducirlo al lenguaje máquina hay
que utilizar un programa llamado ensamblador.
Lenguajes de Bajo Nivel
Definición
⚫ Están íntimamente vinculados al hardware.
⚫ Estos lenguajes están orientados a procesos. Los
procesos se componen de tareas. Contienen tantas
instrucciones como la arquitectura del hardware así
haya sido diseñada.
⚫ Este tipo de lenguajes se utiliza para programar
controladores de dispositivos.
⚫ Un programador de lenguaje ensamblador debe
conocer la arquitectura del microprocesador (como
por ejemplo las particularidades de sus registros o
su conjunto de instrucciones).
Lenguaje de Máquina o de
Primera Generación
Definición
⚫ Es el sistema de códigos directamente
interpretable por un circuito micro-programable,
como el microprocesador de una computadora.
⚫ Está compuesto por un conjunto de
instrucciones que determinan acciones a ser
tomadas por la máquina. Orientado a las tareas.
Lenguaje de Máquina o de
Primera Generación
Definición
⚫ Los circuitos micro-programables son sistemas
digitales lo que significa que trabajan con dos únicos
niveles de tensión. Dichos niveles, por abstracción, se
simbolizan con el cero, 0, y el uno, por eso el lenguaje
de máquina sólo utiliza dichos signos (lenguaje
binario). Ej: invocaciones a memoria, procesos
aritmético lógicos.
Compiladores e intérpretes

Con todo lo visto anteriormente, nos encontramos


dos extremos:

⚫ El lenguaje de alto nivel, que es un texto escrito


en pseudoinglés y más o menos comprensible
por seres humanos.
⚫ El lenguaje binario que es propio del
microprocesador, que es lo que entiende dicho
microprocesador, pero que es prácticamente
ilegible por un ser humano.

¿Cómo se salta la distancia entre ambos? El


proceso se intenta esquematizar en la siguiente
figura:
Compiladores e intérpretes
Compiladores e intérpretes
¿En qué se diferencia un compilador de un intérprete?. La
diferencia fundamental es la siguiente:

⚫ Los compiladores realizan la traducción en tiempo de


desarrollo. Es decir, el programa aún no se está
ejecutando. El compilador recibe todo el código fuente,
lo analiza, lo optimiza y lo traduce a lenguaje máquina
dejando un programa completo listo para su ejecución.
Típicos lenguajes compilados son el C o el PASCAL.

⚫ Los intérpretes realizan la traducción en tiempo de


ejecución. Es decir, a medida que el programa se va
ejecutando, el intérprete va traduciendo instrucciones
al lenguaje máquina. Un típico lenguaje interpretado es
el BASIC.
Elementos de un
lenguaje de programación
⚫ Un lenguaje de programación no deja de ser un
conjunto acotado de ‘palabras’ y signos y unas reglas de
combinación de esas palabras y signos.
⚫ Son un ‘pseudoinglés’ reducido.
⚫ Palabras que aparecen en lenguajes de programación
son, por ejemplo ‘if…then…else’ para establecimiento
de condiciones, ‘integer’, ‘real’, etc para denominar a
variables de tipo numérico, ‘print’ para imprimir o
volcar a pantalla.
⚫ También se utilizan signos como los paréntesis o las
operaciones matemáticas como ‘+’, ‘-‘, ‘*’, ‘/’ u
operadores booleanos como ‘and’ y ‘or’.
Elementos de un
lenguaje de programación

De una forma muy genérica, podemos decir


que un lenguaje de programación ofrece
los siguientes elementos fundamentales:

⚫ Tipos y Estructuras de datos


⚫ Instrucciones
⚫ Instrucciones de control de flujo
Elementos de un
lenguaje de programación
Tipos y Estructuras de Datos
⚫ Permiten definir variables o elementos de
datos donde se almacenan valores de tipo
numérico (enteros, números reales, etc.),
textual (cadenas de caracteres), y estructuras
complejas que combinan algunas de las
anteriores:
vectores, matrices,
estructuras, etc.
Elementos de un lenguaje de
programación
Instrucciones
⚫ Los lenguajes ofrecen instrucciones ya
predefinidas que van desde operadores
básicos (algebraicos, boleanos, etc.) con los
tipos de datos propios del lenguaje, hasta
instrucciones de procesamiento como puede
ser, por ejemplo, la instrucción para volcar a
pantalla un texto.
Elementos de un lenguaje de
programación
Control de Flujo
⚫ Los lenguajes ofrecen instrucciones de control de
flujo, que permiten alterar el camino de ejecución
del programa en función del valor de ciertas
variables.
⚫ Instrucciones de control de flujo típicos son las
estructuras condicionales como el típico
‘if…then…else’ (si sucede algo ejecutar el
siguiente conjunto de instrucciones y si sucede lo
contrario ejecutar otro conjunto de
instrucciones), bucles (instrucciones del tipo
‘for’ o ‘while’), o estructuras selectivas que son
una generalización de la condicional pero para
muchos cursos de acción posibles.
Código Fuente
⚫ Texto escrito en un lenguaje de programación específico y
que puede ser leído por un programador
⚫ Debe traducirse a lenguaje máquina para que pueda ser
ejecutado por la computadora o a bytecode para que pueda
ser ejecutado por un intérprete. Este proceso se denomina
compilación.
⚫ Acceder al código fuente de un programa significa acceder a
los algoritmos desarrollados por sus creadores.
⚫ Liberar un código fuente significa compartir ese texto con
cualquier persona que lo desee, esto implica que cualquiera
puede analizarlo, copiarlo o modificarlo. Las aplicaciones que
liberan sus códigos suelen ser gratuitas.
Comentarios: definición
⚫ Es una construcción del lenguaje de
programación destinada a integrar información
adicional en el código fuente de un programa y
no tiene ningún efecto en la ejecución.
⚫ El código fuente se puede dividir
conceptualmente en código fuente (consistente
en instrucciones inteligibles por la computadora)
y comentarios (que consisten en notas inteligibles
por el ser humano, además de ciertas
anotaciones para dar soporte al código fuente).
Las reglas y sintaxis de ambos están descritas en
la especificación del lenguaje de programación.
Comentarios: tipos

⚫ De "bloque" (también denominado de


"prólogo"): delimita una zona del código fuente
compuesta por varias líneas de texto. Esta región se
reconoce por un delimitador de inicio y un delimitador de
final del comentario
⚫ De "línea" (también denominado "inline"):
comienza con un delimitador y continúa hasta el final de la
línea de texto (es decir, no es necesario un segundo
delimitador).
Comentarios: ejemplos
⚫ Java y Javascript
//comentario de línea
/*comentario de bloque*/
⚫ Python
#comentario
PHP
//comentario en línea # este también
/*comentario en bloque */
⚫ HTML:
<!-- -->
⚫ Visual Basic
'comentario
Comentarios: usos
⚫ Para resumir el código o para explicar la
intención del programador.
⚫ Para explicar por qué un bloque de código no
se ajusta a las convenciones o las buenas
prácticas.
⚫ Para explicar la metodología utilizada en la
solución del problema.
⚫ Para indicar avisos de derechos de autor, fecha
de creación, versión del producto, contacto con
el propietario y/o creador, etc.
⚫ Para la documentación del programa.
ALGORITMOS
Una serie de pasos, procedimientos o
acciones que nos permiten alcanzar
un resultado o resolver un problema
ALGORITMOS: tipos
⚫ Cualitativos: Estos resuelven problemas de la vida
cotidiana, ejemplos: cebar mate, utilizar una guía
telefónica, cocinar siguiendo una receta, buscar una
palabra en el diccionario, etc.

⚫ Cuantitativos: Estos resuelven problemas


matemáticos aplicados a cualquier rama de la ciencia,
ejemplos: matemática (solución de una ecuación de
segundo grado, encontrar el mínimo común
multiplicador), física (calcular velocidad, masa, fuerzas,
tiempo, distancia), química (características de los
elementos de la tabla periódica, conversión de
unidades de temperatura).
ALGORITMOS CUALITATIVOS
Escriba un algoritmo que le permita
cocinar un puré de papas.
ALGORITMOS CUALITATIVOS
Escriba un algoritmo que le permita
preparar un té. Si no dispone de un
saquito de té debe preparar un
mate cocido. Considere que seguro
existe el saquito de mate cocido.
Tenga en cuenta que la preparación
de las dos infusiones tienen
muchos pasos en común.
ALGORITMOS CUALITATIVOS
Un niño quiere ir a una plaza, para llegar a la
misma debe seguir el siguiente recorrido.
Debe salir de su casa, caminar 5 cuadras
hacia la izq, si en la esquina hay un kiosco
debe doblar a la izquierda y caminar tantas
cuadras hasta encontrar la plaza. Por el
contrario si en la esquina hay un ciber debe
doblar a la derecha y caminar hasta
encontrar la plaza. En el último caso si no
encuentra ni kiosco ni ciber debe seguir
caminando hasta encontrar la plaza.
ALGORITMOS: fases
⚫ Análisis del problema: se debe analizar toda la información útil disponible
del problema en cuestión.
⚫ Desarrollo de la solución: una vez definido el problema y teniendo cierta
idea de cómo resolverlo se puede utilizar alguna de las técnicas conocidas de
diseño de algoritmos.
⚫ Codificación de la solución: el algoritmo se traduce utilizando las reglas
sintácticas y semánticas de un lenguaje de programación.
⚫ Verificación y análisis de la solución: con la verificación se trata de
comprobar que el algoritmo codificado en la etapa anterior es correcto, es
decir, produce resultados correctos para todos los conjuntos posibles de
datos válidos.
ALGORITMOS: características
⚫ Ser definido: sin ambigüedad, cada paso del algoritmo debe
indicar la acción a realizar sin criterios de interpretación.
⚫ Ser finito: un número específico y numerable de pasos debe
componer al algoritmo, el cual deberá finalizar al completarlos.
⚫ Tener cero o más entradas: datos son proporcionados a un
algoritmo como insumo (o estos son generados de alguna forma)
para llevar a cabo las operaciones que comprende.
⚫ Tener una o más salidas: debe siempre devolver un resultado;
de nada sirve un algoritmo que hace algo y nunca sabemos que fue.
Por salida de resultados debe entenderse todo medio o canal por
el cual es posible apreciar los efectos de las acciones del algoritmo.
⚫ Ser Efectivo: en el uso de memoria y tiempo de procesamiento.
⚫ Ser Verificable: los resultados obtenidos por las ejecuciones del
algoritmo, para determinadas entradas, concuerdan con las
especificaciones formalmente definidas. De no ser así es necesario
depurarlo.
⚫ Ser fácil de depurar: comprobar repetidamente un algoritmo
con el objetivo de encontrar y eliminar errores
ALGORITMOS: secciones
⚫ Datos de entrada: ¿qué datos pertinentes
necesito para resolver este problema?
⚫ Proceso: ¿qué operación o conjunto de
operaciones secuenciales me permitirán obtener
la solución de mi problema?
⚫ Datos de salida: ¿qué es lo que el problema
solicita obtener como salida, qué resultados debo
mostrar?.
ALGORITMOS:
medios de expresión
Se hace en tres niveles:
1) Descripción de alto nivel:
A través de un diagrama de flujo:
símbolos con un significado
conectados con flechas para
indicar la secuencia de
instrucciones y regidos por ISO.
Son descripciones gráficas de
algoritmos.
ALGORITMOS:
medios de expresión
2) Descripción formal: Se usa
pseudocódigo para describir la
secuencia de pasos que encuentran la
solución.
El pseudocódigo es una descripción
más formal de un algoritmo que
emplea una mezcla de lenguaje natural
con algunas convenciones sintácticas
propias de lenguajes de programación.
ALGORITMOS:
medios de expresión
3) Implementación: Se muestra el
algoritmo expresado en un lenguaje de
programación específico.
ALGORITMOS:
Recomendaciones para un buen diseño
⚫ Se deben usar solamente líneas de flujos horizontales y/o
verticales.
⚫ El sentido de un diagrama de flujo generalmente es de arriba
hacia abajo y/o de izquierda a derecha.
⚫ En un símbolo solo puede entrar una flecha de flujo si varias
líneas se dirigen al mismo símbolo, se deben unir en una sola
flecha.
⚫ Los símbolos de decisión tendrán siempre una sola flecha de
entrada y dos o más flechas de salida según la cantidad de
alternativas que se presentan.
⚫ Se debe evitar el cruce de líneas utilizando los conectores.
⚫ Se deben usar conectores sólo cuando sea necesario.
⚫ No deben quedar líneas de flujo sin conectar.
⚫ Todo texto escrito dentro de un símbolo deberá ser escrito
claramente, evitando el uso de muchas palabras.
ALGORITMOS:
Simbología y significado
ALGORITMOS:
Simbología y significado
ALGORITMOS:
Simbología y significado

También podría gustarte