fundamentos de programaciónmapaches.itz.edu.mx/~mbarajas/fp/unidad1fp.pdf · 1.1.2 software de...

40
Fundamentos de Programación Unidad 1: Conceptos básicos

Upload: vokhue

Post on 18-Oct-2018

219 views

Category:

Documents


0 download

TRANSCRIPT

Fundamentos de ProgramaciónUnidad 1: Conceptos básicos

1.1 Clasificación del Software

Hardware: se refiere a los componentes físicos (tangibles) que conforman un sistema computacional.

Software: es el conjunto de los programas de cómputo, procedimientos, reglas, documentación y datos asociados que forman parte de las operaciones de un sistema de computación (componentes intangibles).

1.1.1 Software de Sistemas Su objetivo es desvincular adecuadamente al usuario y al

programador de los detalles de la computadora enparticular que se use, aislándolo especialmente delprocesamiento referido a las características internas de:memoria, discos, puertos y dispositivos decomunicaciones, impresoras, pantallas, teclados, etc. Elsoftware de sistema le procura al usuario yprogramador adecuadas interfaces de alto nivel,herramientas y utilidades de apoyo que permiten sumantenimiento.

Sistemas operativos

Controladores de dispositivos

Herramientas de diagnóstico

Herramientas de Corrección y Optimización

Servidores

Utilidades

1.1.2 Software de programación Es el conjunto de herramientas que

permiten al programador desarrollar

programas informáticos, usando diferentes

alternativas y lenguajes de programación, de

una manera práctica.

Editores de texto

Compiladores

Intérpretes

Enlazadores

Depuradores

Entornos de Desarrollo Integrado (IDE)

Interfaz Gráfica de Usuario (GUI)

1.1.3 Software de aplicación Es aquel que permite a los usuarios llevar a cabo una o varias

tareas específicas, en cualquier campo de actividad susceptiblede ser automatizado o asistido, con especial énfasis en losnegocios.

◦ Aplicaciones para Control de sistemas y automatización industrial

◦ Aplicaciones ofimáticas

◦ Software educativo

◦ Software empresarial

◦ Bases de datos (puede considerarse como de sistemas)

◦ Telecomunicaciones (p.ej. internet y toda su estructura lógica)

◦ Videojuegos

◦ Software médico

◦ Software de Cálculo Numérico y simbólico.

◦ Software de Diseño Asistido (CAD)

◦ Software de Control Numérico (CAM)

1.2 Algoritmo

Es una secuencia finita de pasos o instrucciones ordenadas crono-lógicamente que describen un método para resolver un problema específico.

Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien lo ejecute.

Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución.

1.3 Lenguaje de Programación

Es un lenguaje artificial que puede ser usado paracontrolar el comportamiento de una máquina,especialmente una computadora. Estos se componende un conjunto de reglas sintácticas y semánticasque permiten expresar instrucciones que luegoserán interpretadas y ejecutadas por el computador.

Es un conjunto limitado de palabras y símbolos querepresentan procedimientos, cálculos, decisiones yotras operaciones, como control de procesos, quepuede ejecutar una computadora.

Los lenguajes de programación pueden clasificarsesegún el paradigma que usan en: procedimentales,orientados a objetos, funcionales, lógicos, híbridos,etc.

1.3.1 Gramática de un

lenguaje de Programación

Sintaxis de un lenguaje de programación:estructura o forma de los programas.

Semántica de un lenguaje de programación:relaciones entre un programa y un modelo decomputación.

Pragmática de un lenguaje de programación:grado de éxito con el que un programa cumplesus objetivos tanto en su fidelidad con elmodelo de computación subyacente como suutilidad para los programadores.

1.4 Programa

Es un conjunto de instrucciones que una vez

ejecutadas realizarán una o varias tareas en

una computadora.

Es la codificación de un algoritmo en un

lenguaje de programación.

Es un conjunto de instrucciones u ordenes

basadas en un lenguaje de programación que

una computadora interpreta y ejecuta para

resolver un problema o una función

especifica.

1.5 Programación

Se refiere a la codificación e implementación de un

algoritmo en un lenguaje de programación específico

para dar solución a un problema.

Se refiere a la serie de actividades y pasos que se

abordan para crear el código fuente de un programa

informático. De acuerdo con estos pasos, el código se

escribe, se prueba y se perfecciona.

Es el proceso que se realiza para desarrollar software.

Es aquella actividad por la cual se crean programas para

computadoras, tales programas pueden ser códigos

fuentes interpretados (como por ejemplo scripts en

BASH) o códigos fuentes que serán compilados (como

por ejemplo programas en C++) hacia lenguajes binarios

y ejecutados desde el kernel del sistema operativo.

1.6 Paradigmas de programación

Un paradigma de programación es un modelo

básico de diseño y desarrollo de programas,

que permite producir programas con unas

directrices específicas, tales como: estructura

modular, fuerte cohesión, alta rentabilidad, etc.

Un paradigma de programación es una

colección de modelos conceptuales que juntos

modelan el proceso de diseño y determinan, al

final, la estructura de un programa.

1.6.1Modelo de computación imperativo También denominado procedural

Conjunto de valores que definen un estado y laoperación de asignación de la modificación deestado.

Un estado es un conjunto de pares nombre-valor de las constantes y variables.

Un programa es una secuencia de asignaciones.

Una computación es una secuencia de estados.

Computación: aplicación de una secuencia deoperaciones a un valor para obtener otrovalor.

Ejemplo:

1.6.2 Modelo de computación funcional

Conjunto de valores, funciones y las operaciones de

aplicación de función y composición de función.

Las funciones pueden tomar como argumentos otras

funciones y devolverlas como resultados.

Un programa es una colección de definiciones de

funciones.

Una computación es una evaluación (aplicación) de una

expresión (función con sus argumentos).

Ejemplo:

1.6.3 Modelo de computación lógico Conjunto de valores, definiciones de relaciones e

inferencias lógicas.

Un programa es una definición de relaciones.

Una computación es una prueba (secuencia de inferencias

lógicas)

Ejemplo:

1.6.4 Computabilidad Los tres modelos son equivalentes cualquier

problema que tenga una solución en un modeloes resoluble en cada uno de los otros dos.

Se denominan modelos universales decomputación.

Otros modelos también son equivalentes.

Están mezclados en los lenguajes deprogramación:◦ Java es imperativo, pero incorpora elementos

funcionales y lógicos.

◦ CommonLisp es funcional, pero permite realizar

◦ programación imperativa y lógica.

◦ Prolog es lógico, pero admite determinadassecuencias imperativas.

1.6.5 Programación imperativa Modela la arquitectura de la máquina de von

Neumann.

La computación consiste en la ejecución paso apaso de algoritmos (secuencias condicionales orepetitivas de instrucciones) que modifican loscontenidos de variables (espacios de memoria).

Tipos:◦ Lenguajes procedurales (Pascal, C): utilizan

subprogramas como unidades de modularizaciónpara definir pasos de Computación.

◦ Lenguajes orientados a objetos (Smalltalk, C++, Java):encapsulan en objetos tanto los datos como lasoperaciones sobre los mismos Paradigmas.

Ejemplo de programación imperativa

Function member (e: real; a: lista-reales): lista-reales;

begin

if (a = nil)

then member := nil

else while ((aˆ .siguiente <> nil) and

(e <> aˆ .elemento)) do

a := aˆ .siguiente;

if e = aˆ .elemento

then member := a

else member := nil

end;

1.6.6 Programación declarativa

Utiliza bloques de construcción como lasfunciones, la recursión o la equiparación depatrones, para especificar más la solución que sucálculo de bajo nivel.

Tipos:◦ Lenguajes funcionales (Common Lisp, Scheme,

Haskell): utilizan funciones libres de efectossecundarios como bloques primitivos de construcciónde programas. Estas funciones pueden aplicarse,construirse y pasarse como argumentos a otrasfunciones.

◦ Lenguajes lógicos (Prolog): calculan resultadosutilizando reglas e inferencias lógicas.

Ejemplo de programación declarativa

1.6.7 Programación Orientada a Objetos

Define la computación como la interacción entre objetos

Autónomos.

Mediante la utilización de objetos, la programación seconvierte en simulación.

Los objetos son instancias de clases que se organizan enjerarquías de herencia.

Los objetos se comportan independientemente.

Utilizan la selección de las operaciones en tiempo deejecución cuando interpretan los mensajes provenientesde otros objetos.

Ejemplos:

-Smalltalk, Eiffel, y Java son lenguajes orientados a objetos-Muchos lenguajes actuales, como C++, Ada-95, oCommon Lisp también dan soporte a este tipo deprogramación.

Ejemplo de programación

orientada a objetos

Clase: lista

Atributos: elemento, siguiente

Métodos: primero, siguiente, member, ...

Ejecución de member: mandar un mensaje

member a una instancia de la clase lista con

el argumento elemento a buscar.

1.6.8 Programación basada en módulos

Reconoce agrupaciones de variables, procedimientos y tipos como unidades estáticas de modularidad de programa.

El interface a un módulo (o paquete) especifica y exporta una serie de servicios generales.

Los detalles de implementación se ocultan en una unidad de programa compilada separadamente.

Ejemplos:

Modula-2, Ada y C++, JAVA soportan este estilo de programación que puede ser combinada con cualquier otro tipo de paradigma.

1.6.9 Otros paradigmas de programación

Programación visual

Programación basada en restricciones

Programación basada en tipos abstractos de datos

Programación genérica

Programación concurrente

Programación basada en componentes distribuidos

Programación basada en agentes

Programación literaria

Programación basada en patrones de diseño

Programación basada en guiones

Programación automática: aprendizaje automático

Programación orientada a eventos

1.7 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.

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, estos son:

salto de línea, tabulación horizontal y retorno de carro.

1.7.1Tipos de editores de texto

Algunos son de uso general, mientras que otros estándiseñados para escribir o programar en un lenguaje.

Algunas funciones especiales son:◦ Editores diseñados para un lenguaje de programación

determinado, con coloreado de sintaxis, macros, completarpalabras, etc.

◦ Editores con regiones plegables. A veces no todo el texto esrelevante para el usuario. Con este tipo de editores ciertasregiones con texto irrelevante pueden ser plegadas,escondidas, mostrando al usuario solo lo importante deltexto.

◦ IDE es un editor más otras herramientas de trabajo,compiladores, extractores de diferencias entre dos textos,repositorios, etc, incluidos en un solo programa.

1.7.2 Algunos Editores

Emacs, otro editor muy común en Unix

Vi, editor muy común en Unix

Kate, un moderno editor para Unix

Notepad++, editor de código fuente para Microsoft Windows

jEdit, editor popular multiplataforma

TextPad, editor popular multiplataforma

Jcreator, IDE para JAVA

Eclipse, IDE para JAVA

DEV C, IDE para lenguaje C

Visual Studio, IDE para .NET

NET BEANS, IDE para java

1.8 Clasificación de Lenguajes de programación

Por su nivel:Alto: instrucciones semejantes a lenguaje natural

Medio

Bajo: instrucciones semejantes a lenguaje máquina

Por su traducción:Compiladores: lee un programa escrito en un

lenguaje fuente y lo traduce a un programaequivalente en otro lenguaje, el lenguaje objeto.

Intérpretes: un intérprete es un programa que,como su nombre lo indica, interpreta símbolos enun programa y los traduce a lenguaje máquinaconforme deban ser ejecutados.

1.8.1 Compiladores Un compilador es un programa informático que

traduce un programa escrito en un lenguaje deprogramación a otro lenguaje de programación,generando un programa equivalente que la máquinaserá capaz de interpretar. Usualmente el segundolenguaje es lenguaje de máquina, pero también puedeser simplemente texto. Este proceso de traducciónse conoce como compilación.

Un compilador es un programa que permite traducirel código fuente de un programa en lenguaje de altonivel, a otro lenguaje de nivel inferior (típicamentelenguaje de máquina). De esta manera unprogramador puede diseñar un programa en unlenguaje mucho más cercano a como piensa un serhumano, para luego compilarlo a un programa másmanejable por una computadora.

1.8.2 Diagrama Compilador

1.8.3 Interpretes Intérprete es un programa informático capaz de analizar y ejecutar

simultáneamente un programa escrito en un lenguaje fuente.

Los intérpretes se diferencian de los compiladores en que mientras

estos traducen un programa desde su descripción en un lenguaje de

programación al código de máquina del sistema, los primeros (los

intérpretes) sólo realizan la traducción a medida que sea necesaria,

típicamente, instrucción por instrucción, y normalmente no guardan

el resultado de dicha traducción.

Los programas interpretados suelen ser más lentos que los

compilados debido a la necesidad de traducir el programa mientras

se ejecuta, pero a cambio son más flexibles como entornos de

programación y depuración (lo que se traduce, por ejemplo, en una

mayor facilidad para reemplazar partes enteras del programa o

añadir módulos completamente nuevos), y permiten ofrecer al

programa interpretado un entorno no dependiente de la máquina

donde se ejecuta el intérprete, sino del propio intérprete (lo que se

conoce comúnmente como máquina virtual).

1.8.4 Diagrama Interprete

1.8.5 Esquema de compilador con

interprete de código intermedio

1.9 Ejecutables

un ejecutable o archivo ejecutable, es un archivo binario cuyo

contenido se interpreta por el ordenador como un programa.

contiene instrucciones en código máquina de un procesador en

concreto, pero también puede contener bytecode que requiera

un intérprete para ejecutarlo.

suele contener llamadas a funciones específicas de un sistema

operativo (llamadas al sistema).

ejecutables portables: se pueden ejecutar en varias plataformas.

Ejecutables no portables: destinado a una plataforma concreta.

contiene mucha información que no es parte del programa en

sí: recursos como textos e imágenes, requisitos del entorno de

ejecución, información simbólica y de depuración, u otra

información que ayude al sistema operativo a ejecutar el

programa.

1.10 Consola de línea de comandos

También conocida como Interfaz de Línea deComandos (CLI), por su acrónimo en inglés deCommand Line Interface (CLI), es un método quepermite a las personas dar instrucciones a algúnprograma informático por medio de una línea detexto simple.

Las CLI pueden emplearse interactivamente,escribiendo instrucciones en alguna especie deentrada de texto, o pueden utilizarse de una formamucho más automatizada (batch), leyendo comandosdesde un archivo de scripts.

La contraparte de CLI es la interfaz gráfica deusuario (GUI)

1.10.1.a Comandos de WindowsAT - Planifica comandos y programas para ejecutarse en un equipo.

ATTRIB - Muestra o cambia los atributos del archivo.

BREAK - Establece o elimina la comprobación extendida de Ctrl+C.

CACLS - Muestra o modifica las listas de control de acceso (ACLs) de archivos. * Atención: En la

ayuda de Windows hay un error y este comando lo llaman CALCS que no existe.

CALL - Llama a un programa por lotes desde otro.

CD - Muestra el nombre del directorio actual o cambia a otro directorio.

CHCP - Muestra o establece el número de página de códigos activa.

CHDIR - Muestra el nombre del directorio actual o cambia a otro directorio.

CHKDSK - Comprueba un disco y muestra un informe de su estado.

CHKNTFS - Muestra o modifica la comprobación de disco al iniciar.

CLS - Borra la pantalla.

CMD - Inicia una nueva instancia del intérprete de comandos de Windows.

COLOR - Establece los colores de primer plano y fondo predeterminados de la consola.

COMP - Compara el contenido de dos archivos o un conjunto de archivos.

COMPACT - Muestra o cambia el estado de compresión de archivos en particiones NTFS.

CONVERT - Convierte volúmenes FAT a volúmenes NTFS. No puede convertir la unidad actual.

COPY - Copia uno o más archivos a otro lugar.

DATE - Muestra o establece la fecha.

DEL - Elimina uno o más archivos.

DIR - Muestra una lista de archivos y subdirectorios en un directorio.

DISKCOMP - Compara el contenido de dos disquetes.

DISKCOPY - Copia el contenido de un disquete a otro.

DOSKEY - Edita líneas de comando, memoriza comandos y crea macros.

1.10.1.b Comandos de WindowsECHO - Muestra mensajes, o activa y desactiva el echo.

ENDLOCAL - Termina la búsqueda de variables de entorno del archivo por lotes.

ERASE - Elimina uno o más archivos.

EXIT - Sale del programa CMD.EXE (interfaz de comandos).

FC - Compara dos archivos o conjunto de archivos y muestra las diferencia entre ellos.

FIND - Busca una cadena de texto en uno o más archivos.

FINDSTR - Busca cadenas de texto en archivos.

FOR - Ejecuta un comando para cada archivo en un conjunto de archivos.

FORMAT - Da formato a un disco para usarse con Windows.

FTYPE - Muestra o modifica los tipos de archivo utilizados en una asociació de archivos.

GOTO - Direcciona el intérprete de comandos de Windows a una línea de un programa por lotes.

GRAFTABL - Permite a Windows mostrar un conjunto de caracteres extendido en modo gráfico.

HELP - Proporciona información de ayuda para los comandos de Windows.

IF - Ejecuta procesos condicionales en programas por lotes.

LABEL - Crea, cambia o elimina la etiqueta del volumen de un disco.

MD - Crea un directorio.

MKDIR - Crea un directorio.

MODE - Configura un dispositivo de sistema.

MORE - Muestra la información pantalla por pantalla.

MOVE - Mueve uno o más archivos de un directorio a otro en la misma unidad.

PATH - Muestra o establece una ruta de búsqueda para archivos ejecutables.

PAUSE - Suspende el proceso de un archivo por lotes y muestra un mensaje.

POPD - Restaura el valor anterior del directorio actual guardado por PUSHD.

PRINT - Imprime un archivo de texto.

1.10.1.c Comandos de WindowsPROMPT - Cambia el símbolo de comandos de Windows.

PUSHD - Guarda el directorio actual y después lo cambia.

RD - Elimina un directorio.

RECOVER - Recupera la información legible de un disco dañado o defectuoso.

REM - Graba comentarios en archivos por lotes o CONFIG.SYS.

REN - Cambia el nombre de uno o más archivos.

RENAME - Cambia el nombre de uno o más archivos.

REPLACE - Reemplaza archivos.

RMDIR - Elimina un directorio.

SET - Muestra, establece o elimina variables de entorno de Windows.

SETLOCAL - Inicia la localización de cambios del entorno en un archivo por lotes.

SHIFT - Cambia posición de modificadores reemplazables en archivos por lotes.

SORT - Ordena las entradas.

START - Inicia otra ventana para ejecutar un programa o comando.

SUBST - Asocia una ruta de acceso con una letra de unidad.

TIME - Muestra o establece la hora del sistema.

TITLE - Establece el título de la ventana de una sesión de CMD.EXE.

TREE - Muestra gráficamente la estructura de directorios de una unidad ruta de acceso.

TYPE - Muestra el contenido de un archivo de texto.

VER - Muestra la versión de Windows.

VERIFY - Comunica a Windows si debe comprobar que los archivos se escribe de forma correcta

en un disco.

VOL - Muestra la etiqueta del volumen y el número de serie del disco.

XCOPY - Copia archivos y árboles de directorios.

1.10.2 Comandos de Linux man: muestra el manual de commandos

ls: equivale al dir en windows (lista)

cd : cambiar directorio

mkdir : crear directorio

mv : mover archivos

rm : borrar archivos

ping : probar conexion de red

cp: copiar archivos

pwd : muestra la ruta actual

locate: buscar archivos