Unidad 1

En esta sección se abarcan de los Subtemas 1.1 al 1.10 


CLASIFICACIÓN DEL SOFTWARE

El software de una computadora es un conjunto de instrucciones de programa detalladas que controlan y coordinan los componentes hardware de una computadora y controlan las operaciones de un sistema informático.

Las operaciones que debe realizar el hardware son especificadas por una lista de instrucciones, llamadas programas, o software. Un programa de software es un conjunto de sentencias instrucciones al computador. El proceso de escritura o codificación de un programa se denomina programación y las personas que se especializan en esta actividad se denominan programadores.

Existen dos tipos importantes de software: software del sistema y software de aplicaciones.

Software del sistema es un conjunto generalizado de programas que gestiona los recursos del computador, tal como el procesador central, enlaces de comunicaciones y dispositivos periféricos. Los programadores que escriben software del sistema se llaman programadores de sistemas.

Software de aplicaciones son el conjunto de programas escritos por empresas o usuarios individuales o en equipo y que instruyen a la computadora para que ejecute una tarea específica. Los programadores que escriben software de aplicaciones se llaman programadores de aplicaciones.

Los dos tipos de software están relacionados entre sí, de modo que los usuarios y los programadores
pueden hacer así un uso eficiente del computador. En la siguiente figura se muestra una vista organizacional de un computador donde muestran los diferentes tipos de software a modo de capas de la computadora desde su interior (el hardware) hasta su exterior (usuario): Las diferentes capas funcionan gracias a las instrucciones específicas (instrucciones máquina) que forman parte del software del sistema y llegan al software de aplicación, programado por los programadores de aplicaciones, que es utilizado por el usuario que no requiere ser un especialista.

         



TIPO DE SOFTWARE
CARACTERÍSTICAS
CLASIFICACIÓN
SOFTWARE
DE
SISTEMA

El software del sistema coordina las diferentes partes de un sistema de computadora y conecta e interactúa entre el software de aplicación y el hardware de la computadora.


El software del sistema que gestiona y controla las actividades del computador se denomina sistema operativo.

Software del sistema que controla las actividades de la computadora y realiza tareas de proceso comunes, se denomina utility utilidades (utilerías).

 Los programas traductores o de traducción de lenguajes de computador que convierten los lenguajes de programación, entendibles por los programadores, en lenguaje máquina que entienden las computadoras, también son software del sistema.





CARACTERÍSTICAS
CLASIFICACIÓN
SOFTWARE
DE
APLICACIONES
El software de aplicación tiene como función principal asistir y ayudar al usuario de una computadora para ejecutar tareas específicas.




Los programas de aplicación se pueden desarrollar con diferentes lenguajes y herramientas de software. Por   ejemplo, una aplicación de procesamiento de textos (word processing) tal como Word  que ayuda a crear documentos, una hoja de cálculo como Excel que ayudan a automatizar tareas tediosas o repetitivas de cálculos matemáticos, a generar gráficospresentaciones visuales como PowerPoint, o a crear bases de datos con programas como Access.
En general existe una gran
diversidad de programas de aplicación para todo tipo de actividades tanto de modo personal, como de
negocios, navegación y manipulación en Internet, gráficos y presentaciones visuales, etc.


ALGORITMO

Un algoritmo es un conjunto de pasos ordenados para resolver un problema.

 Aunque la popularización del término ha llegado con la aparición de la era informática, algoritmo proviene de Mohammed al-Khowârizmi, matemático persa que vivió durante el siglo IX y alcanzó gran reputación por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir números decimales; la traducción al latín del apellido en la palabra algorismus derivó posteriormente en algoritmo. Euclides, el gran matemático griego (del
siglo IV antes de Cristo) que inventó un método para encontrar el máximo común divisor de dos números, se considera con Al-Khowârizmi el otro gran padre de la algoritmia (ciencia que trata de los algoritmos).
El profesor Niklaus Wirth —inventor de Pascal, Modula-2 y Oberon— tituló uno de sus más famosos libros, Algoritmos + Estructuras de datos = Programas, significándonos que sólo se puede llegar a realizar un buen programa con el diseño de un algoritmo y una correcta estructura de datos.

La resolución de un problema exige el diseño de un algoritmo que resuelva el problema propuesto.


Resolución de un problema

Los pasos para la resolución de un problema son:

  1. Diseño del algoritmoque describe la secuencia ordenada de pasos —sin ambigüedades    que conducen a la solución de un problema dado. (Análisis del problema y desarrollo del algoritmo.)
  2. Expresar el algoritmo como un programa en un lenguaje de programación adecuado. (Fase decodificación.)
  3. Ejecución y validación del programa por la computadora.


Para llegar a la realización de un programa es necesario el diseño previo de un algoritmo, de modo que sin algoritmo no puede existir un programa.

Los algoritmos son independientes tanto del lenguaje de programación en que se expresan como de la computadora que los ejecuta. En cada problema el algoritmo se puede expresar en un lenguaje diferente de programación y ejecutarse en una computadora distinta; sin embargo, el algoritmo será siempre el mismo.
En la ciencia de la computación y en la programación, los algoritmos son más importantes que los lenguajes de programación o las computadoras. Un lenguaje de programación es tan sólo un medio para expresar un algoritmo y una computadora es sólo un procesador para ejecutarlo. Tanto el lenguaje de programación como la computadora son los medios para obtener un fin: conseguir que el algoritmo se ejecute y se efectúe el proceso correspondiente.

El diseño de la mayoría de los algoritmos requiere creatividad y conocimientos profundos de la técnica de la programación. En esencia, la solución de un problema se puede expresar mediante un algoritmo.

Características de los algoritmos
Las características fundamentales que debe cumplir todo algoritmo son:

  •         Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
  •        Un algoritmo debe estar definido. Si se sigue un algoritmo dos veces, se debe   obtener el mismo resultado cada vez.
  •        Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.


La definición de un algoritmo debe describir tres partes: Entrada, Proceso Salida.

Ejemplo 2
Se desea diseñar un algoritmo para saber si un número es primo o no.
Un número es primo si sólo puede dividirse por sí mismo y por la unidad (es decir, no tiene más divisores que él mismo y la unidad). Por ejemplo, 9, 8, 6, 4, 12, 16, 20, etc., no son primos, ya que son divisibles por números distintos a ellos mismos y a la unidad. Así, 9 es divisible por 3, 8 lo es por 2, etc. El algoritmo de resolución del problema pasa por dividir sucesivamente el número por 2, 3, 4, etc.

  1.  Inicio.
  2. Poner X igual a 2 (x = 2, x variable que representa a los divisores del número que se busca N).
  3. Dividir N por X (N/X).
  4. Si el resultado de N/X es entero, entonces N es un número primo y bifurcar al punto 7; en caso contrario, continuar el proceso.
  5. Suma 1 a X (X ← X + 1).
  6. Si X es igual a N, entonces N es un número primo; en caso contrario, bifurcar al punto 3.
  7. Fin.





Por ejemplo, si N es 131, los pasos anteriores serían:
1.         Inicio.
2.         X = 2.
3 y 4. 131/X. Como el resultado no es entero, se continúa el proceso.
5.         X ← 2 + 1, luego X = 3.
6.         Como X no es 131, se bifurca al punto 3.
3 y 4. 131/X resultado no es entero.
5.         X ← 3 + 1, X = 4.
6.         Como X no es 131 bifurca al punto 3.
3 y 4.  131/X..., etc.
7.         Fin.

Ejemplo 2
Realizar la suma de todos los números pares entre 2 y 1.000.
El problema consiste en sumar 2 + 4 + 6 + 8 ... + 1.000. Utilizaremos las palabras SUMA y NUMERO (variables, serán denominadas más tarde) para representar las sumas sucesivas (2+4), (2+4+6), (2+4+6+8),etc. La solución se puede escribir con el siguiente algoritmo:

  1. Inicio.
  2. Establecer SUMA a 0.
  3. Establecer NUMERO a 2.
  4. Sumar NUMERO a SUMA. El resultado será el nuevo valor de la suma (SUMA).
  5. Incrementar NUMERO en 2 unidades.
  6. Si NUMERO =< 1.000 bifurcar al paso 4;
  7. En caso contrario, escribir el último valor de SUMA y terminar el proceso.
  8. Fin.


Programación
La programación es el proceso de escribir programas para computadora. Generalmente, los programas para computadora se escriben en lenguajes de alto nivel o en lenguaje ensamblador (bajo nivel).

Lenguaje de programación
El algoritmo se ha de expresar en un formato que se denomina programa, ya que el pseudocódigo o el diagrama de flujo no son comprensibles por la computadora, aunque pueda entenderlos cualquier programador.

Un programa se escribe en un lenguaje de programación y las operaciones que conducen a expresar un algoritmo en forma de programa se llaman programación. Así pues, los lenguajes utilizados para escribir programas de computadoras son los lenguajes de programación y programadores son los escritores y diseñadores de programas.

El proceso de traducir un algoritmo en pseudocódigo a un lenguaje de programación se denomina codificación, y el algoritmo escrito en un lenguaje de programación se denomina código fuente.
En la realidad la computadora no entiende directamente los lenguajes de programación sino que se requiere un programa que traduzca el código fuente a otro lenguaje que sí entiende la máquina directamente, pero muy complejo para las personas; este lenguaje se conoce como lenguaje máquina y el código correspondiente código máquina. Los programas que traducen el código fuente escrito en un lenguaje de programación —tal como C++— a código máquina se denominan traductores. El proceso de conversión de un algoritmo escrito en pseudocódigo hasta un programa ejecutable comprensible por la máquina.
Algunos lenguajes de programación son C++, C, C#, Java, Visual Basic, XML, HTML, Perl, PHP, JavaScript, etc.

 Estos lenguajes se denominan lenguajes de alto nivel y permiten a los profesionales resolver problemas convirtiendo sus algoritmos en programas escritos en alguno de estos lenguajes de programación.


Compiladores e intérpretes
El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel a un lenguaje máquina comprensible por la computadora, se realiza mediante programas llamados “traductores”. Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código máquina. Los traductores se dividen en compiladores e intérpretes.



Intérpretes
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación, lo ejecuta. El sistema de traducción consiste en: traducir la primera sentencia del programa a lenguaje máquina, se detiene la traducción, se ejecuta la sentencia; a continuación, se traduce la siguiente sentencia, se detiene la traducción, se ejecuta la sentencia y así sucesivamente hasta terminar el programa.


Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel a lenguaje máquina. La traducción del programa completo se realiza en una sola operación denominada compilación del programa; es decir, se traducen todas las instrucciones del programa en un solo bloque.
El programa compilado y depurado (eliminados los errores del código fuente) se denomina programa ejecutable porque ya se puede ejecutar directamente y cuantas veces se desee; sólo deberá volver a compilarse de nuevo en el caso de que se modifique alguna instrucción del programa.
El programa ejecutable no necesita del compilador para su ejecución. Los lenguajes compiladores típicos más utilizados son: C, C++, Java, C#, Pascal, FORTRAN y COBOL.

Paradigmas de  programación
El paradigma se concibe como una forma aceptada de resolver un problema en la ciencia, que más tarde es utilizada como modelo para la investigación y la formación de una teoría. También, el paradigma debe ser admitido como un conjunto de métodos, reglas y generalizaciones utilizadas conjuntamente por aquellos entrenados para realizar el trabajo científico de investigación. 

Programación por procedimientos
Es el paradigma original de programación y quizá todavía el de uso más común. En él, el programador se concentra en el procesamiento, en el algoritmo requerido para llevar a cabo el cómputo deseado.
C, Pascal y FORTRAN, y lenguajes similares, se conocen como lenguajes procedimentales (por procedimientos). Es decir, cada sentencia o instrucción señala al compilador para que realice alguna tarea: obtener una entrada,  producir una salida, sumar tres números, dividir por cinco, etc. En resumen, un programa en un lenguaje procedimental es un conjunto de instrucciones o sentencias. En el caso de pequeños programas, estos principios de organización (denominados paradigma) se demuestran eficientes.
Los lenguajes apoyan este paradigma proporcionando recursos para pasar  argumentos a las funciones y devolviendo valores de las funciones. Fortran es el lenguaje de procedimientos original, Pascal y C son inventos posteriores que siguen la misma idea. La programación estructurada se considera como el componente principal de la programación por procedimientos.

Programación modular
Con los años, en el diseño de programas se dio mayor énfasis al diseño de procedimientos que a la organización de la información. Entre otras cosas esto refleja un aumento en el tamaño de los programas. La programación modular surge como un remedio a esta situación. A menudo se aplica el término módulo a un conjunto de procedimientos afines junto con los datos que manipulan. Así, el paradigma de la programación modular consiste en:
  a) Establecer los módulos que se requieren para la resolución de un problema.
  b) Dividir el programa de modo que los procedimientos y los datos queden ocultos en módulos.
Este paradigma también se conoce como principio de ocultación de procedimientos y datos. Aunque C++ no se diseño específicamente para desarrollar la programación modular, su concepto de clase proporciona apoyo para el concepto de módulo.

Abstracción de datos
Los lenguajes como ADA y C++ permiten que un usuario defina tipos que se comporten casi de la misma manera que los tipos definidos por el lenguaje. Tales tipos de datos reciben a menudo el nombre de tipos abstractos  o tipos definidos por el usuario. El paradigma de programación sobre este tipo de datos consiste en:
   a) Establecer las características de los tipos de datos abstractos se desean definir.
   b) Proporcionar un conjunto completo de operaciones válidas y útiles para cada tipo de dato.
Cuando no hay necesidad de más de un objeto de un tipo dado, no es necesario este estilo y basta con el estilo de programación de ocultamiento de datos por medio de módulos.

Programación orientada a objetos (OOP)
En el paradigma orientado a objetos, el programa se organiza como un conjunto finito de objetos que contiene datos y operaciones que llaman a esos datos y que se comunican entre sí mediante mensajes.
El problema con la abstracción de datos es que no hay ninguna distinción entre las propiedades generales y las particulares de un conjunto de objetos. Expresar esta distinción y aprovecharla es lo que define a la OOP a través del concepto de herencia.  El paradigma de la programación orientada a objetos es, entonces,
  a) Definir que clases se desean
  b) Proporcionar un conjunto completo de operaciones para cada clase
  c) Indicar explícitamente lo que los objetos de la clase tienen en común empleando el concepto de herencia
En algunas áreas las posibilidades de la OOP son enormes. Sin embargo, en otras aplicaciones, como las que usan los tipos aritméticos básicos y los cálculos basados en ellos, se requiere únicamente la abstracción de datos y/o programación por procedimientos, por lo que los recursos necesarios para apoyar la OOP podrían salir sobrando.

Editores de texto
Un editor de texto es un programa que permite crear y modificar archivos digitales compuestos únicamente por texto sin formato, conocidos comúnmente como archivos de texto o texto plano. El programa lee el archivo e interpreta los bytes leídos según el código de caracteres que usa el editor. Hoy en día es comúnmente de 7- ó 8-bits en ASCII o UTF-8, rara vez EBCDIC.
Los editores de textos "planos" se distinguen de los procesadores de texto en que se usan para escribir sólo texto, sin formato y sin imágenes, es decir sin diagramación.
  • El texto plano es representado en el editor mostrando todos los caracteres presentes en el archivo. Los únicos caracteres de formateo son los caracteres de control del respectivo código de caracteres. En la práctica, éstos son: salto de línea, tabulación horizontal y retorno de carro. El código de caracteres más usado en el año 2007 es el ASCII.
  • Los documentos creados por un procesador de texto generalmente contienen más caracteres de control para darle al texto un formato o diagramación particular, a menudo protegidos de ser copiados por una marca registrada como por ejemplo negrilla, cursiva, columnas, tablas, tipografía, etc. En un comienzo se utilizaron tales formatos sólo en autoedición, pero hoy se utilizan incluso en el procesador de texto más sencillo.
  • Los procesadores de texto pueden en la mayoría de los casos almacenar un texto plano en un archivo de texto plano, pero se le debe ordenar explícitamente que se desea esa opción, de otra manera podría guardarlo con algún formato especial.

Consola de línea de comandos
Interfaz de Línea de Comandos (CLI), por su acrónimo en inglés de Command Line Interface(CLI), es un método que permite a las personas dar instrucciones a algún programa por medio de una línea de texto simple.
Las CLI pueden emplearse interactivamente, escribiendo instrucciones en alguna especie de entrada de texto, o pueden utilizarse de una forma mucho más automatizada (batch), leyendo comandos desde un archivo de scripts.



BIBLIOGRAFÍA



FUNDAMENTOS DE LA PROGRAMCIÓN
JOYANES AGUILAR, LUIS
MCGRAW-HILL / INTERAMERICANA 


No hay comentarios:

Publicar un comentario