Está en la página 1de 34

TECNM CAMPUS LA CHONTALPA.

MATERIA:

Algoritmo y Lenguaje De Pronunciación.


ALUMNOS:
Landy Lorena Garcia colorado
Clarissa Narváez Hernandez
Mario López De La Cruz
Iris Ariadna Ramon De La O
José Francisco Carillo Rodríguez
Gustavo Jesús Jiménez Gonzales.
DOCENTE:
Ing. Roxana Rivera Tosca.
NUMERO DE CONTROL:

191160097
SEMESTRE:4° GRUPO: “B”

FECHA DE ENTREGA:
14/04/2021
CARRERA:
Ing. Industrial
3.1 INTRODUCCIÓN Y ESTRUCTURA DEL
ENTORNO DE UN LENJUAGE DE
PROGRAMACIÓN.

Entornos de programación.

Un entorno de programación es un programa o conjunto de programas que


engloban todas las tareas necesarias para el desarrollo de un programa o
aplicación. Estas tareas son básicamente las siguientes:

 Edición del programa.


 Compilación y enlazado.
 Ejecución.
 Depuración.

Hay quien además incluye la creación de documentación complementaria que


facilita el mantenimiento del programa dentro de estas funciones.

Este tipo de entornos incorporan numerosas herramientas, utilidades, aplicaciones


ya desarrolladas, ejemplos, tutoriales, etc. Todas ellas encaminadas a facilitar y
mejorar el desarrollo.

Editores.

El primer elemento necesario para el desarrollo de un programa es un editor de


texto. Un editor es un programa que nos permite escribir (editar) las instrucciones
del programa y posteriormente guardar el programa en un fichero en un soporte de
almacenamiento. Cualquier editor de texto se puede utilizar para editar programas
con la única precaución de que, a la hora de guardar, salvar o almacenar el
programa sólo se almacene el texto sin opciones de formato: negrita, estilos, itálica,
etc.

Lo normal es utilizar un editor especialmente preparado para la programación. Estos


tienen facilidades para la corrección de errores, destacan las palabras del lenguaje
en colores, y en general facilitan la labor del programador.

Procesadores del lenguaje: traductores, compiladores e intérpretes.

Una vez editado nuestro programa es necesario que este sea procesado y
transformado en órdenes que puedan ser ejecutadas por el ordenador. Estas
órdenes por tanto deben estar en el único lenguaje que la máquina entiende: el
código máquina. Para ello son necesarios los procesadores de lenguaje cuyo
concepto es muy amplio. Dentro de los procesadores de lenguaje destacan los
traductores, los compiladores y los intérpretes.

Un compilador es un programa cuyo cometido es realizar la conversión de un


programa escrito en un lenguaje de programación a su correspondiente equivalente
en lenguaje máquina. El resultado que devuelve un compilador es un programa que
ya puede ser ejecutado por el ordenador destino sin la necesidad de que el
compilador esté presente. Por ejemplo, el lenguaje Pascal o el lenguaje C son
lenguajes de programación que necesitan ser compilados. Cuando la conversión se
realiza entre el lenguaje ensamblador (Assembly) y el código máquina, el
compilador recibe el nombre específico de Ensamblador (Assembler).

Un intérprete es un programa que convierte línea por línea el programa escrito en


un lenguaje de programación y que a medida que realiza la conversión ejecuta las
instrucciones. Evidentemente el intérprete no devuelve nada ya que la ejecución se
realiza de forma simultánea. Por este motivo, el intérprete debe estar presente
durante la ejecución. Lenguajes de programación que tradicionalmente son
interpretados son el LISP y el BASIC.

Un traductor es el nombre que reciben aquellos procesadores de lenguaje que


convierten programas de unos lenguajes a otros, pero no generan código máquina.

Por ejemplo, hay traductores de Pascal a C y viceversa.

Hay otros lenguajes de programación que combinan ambas estrategias como por
ejemplo sucede con el lenguaje de programación Java. Para este lenguaje existen
traductores que generan un programa en un código denominado intermedio que
luego será ejecutado a través de un intérprete que recibe en este caso el nombre
de máquina virtual Java.

Enlazadores

Por simplificación y para facilitar la comprensión de los conceptos anteriores se ha


señalado que los compiladores y los ensambladores (caso particular de compilador)
generan código máquina que puede ser ejecutado por el ordenador. Sin embargo,
esto no es totalmente cierto ya que hay una etapa de enlazado que debe ser
realizada por otro programa denominado enlazador (linker). Lo habitual es que
durante la escritura de un programa sea necesario utilizar otros subprogramas en
forma de bibliotecas de funciones o bien que el propio programa esté formado
realmente por varios programas almacenados en diferentes ficheros. Esta situación
hace que durante la compilación de cada módulo no se conozca con exactitud la
ubicación de las instrucciones del resto de programas o bibliotecas de funciones. El
papel del enlazador es unir en un único fichero ejecutable el resultado de todas las
compilaciones, así como las bibliotecas estáticas de funciones. Es frecuente que el
enlazado sea un paso más de la compilación y que se ejecute inmediatamente tras
la compilación de todos los ficheros.

Es habitual denominar a cada uno de los ficheros que participan en el desarrollo de


un programa con nombres genéricos que identifican en qué fase se encuentran. Por
ejemplo, las instrucciones que escribe directamente el programador y que forman el
programa en el lenguaje de programación escogido como ficheros fuente (source
file). El resultado de la compilación de estos programas se denomina fichero objeto
(object file) y por el último el resultado del enlazado fichero ejecutable (executable
file). Es este último el único que puede entender un ordenador sin la presencia del
compilador. En el caso de los lenguajes interpretados el fichero fuente es
directamente interpretado y ejecutado por el intérprete.

Depuradores.

Una vez editado y compilado el programa es necesario ejecutarlo (run en inglés),


pero es habitual que durante el desarrollo de una aplicación que generen ficheros
ejecutables que, aunque sean correctos desde un punto de vista sintáctico no
realicen lo que realmente se espera de ellos por lo que se consideran que no
funcionan correctamente. Los depuradores (debuggers) son capaces de ejecutar
el programa paso a paso incluyendo además un conjunto de facilidades que
permiten observar el valor de las variables y estructuras de datos permitiendo así
una mejor localización de errores no evidentes.
Un programa informático (programa) es una secuencia de
acciones (instrucciones) que manipulan un conjunto de objetos (datos). Como ya se
ha visto, cuando se escribe un programa lo que se trata de hacer es indicarle a la
computadora cómo ha de resolver un problema. Estos programas siguen
determinadas estructuras, que dependen del tipo de lenguaje que usemos y del
entorno en el cual lo creemos.
Principios generales:
 Un cargador: Todo programa necesita ser cargado en la memoria por el
sistema operativo. De esto se encarga el intérprete.

 Definición de los datos: La mayoría de los programas operan con datos y


por lo tanto en el código fuente debemos definir qué tipo de datos vamos a
utilizar en el programa. Esto se realiza de manera diferente en los distintos
lenguajes. Todos los lenguajes que usaremos tienen la posibilidad de crear
una nueva definición de datos simplemente al utilizar los datos. Veremos esto
en la próxima sección.

 Instrucciones: Son la parte central del programa. Las instrucciones


manipulan los datos que hemos definido, realizan cálculos, muestran los
resultados, etc.
Existen dos partes o bloques que componen un programa:
1.- Bloque de declaraciones: En este se detallan todos los objetos que utiliza el
programa (constantes, variables, archivos, etc).
2.- Bloque de instrucciones: Conjunto de acciones u operaciones que se han de
llevar a cabo para conseguir los resultados esperados.
El bloque de instrucciones está compuesto a su vez por tres partes, aunque en
ocasiones no están perfectamente delimitadas, y aparecerán entremezcladas en la
secuencia del programa, podemos localizarlas según su función. Estas son:
1. Entrada de datos: instrucciones que almacenan en la memoria interna datos
procedentes de un dispositivo externo.
2. Proceso o algoritmo: instrucciones que modifican los objetos de entrada y, en
ocasiones, creando otros nuevos.
3. Salida de resultados: Conjunto de instrucciones que toman los datos finales de
la memoria interna y los envían a los dispositivos externos.
Partes del bloque de instrucciones
Entrada --> Algoritmo --> Salida
Proceso de programa:
Inicio de programa: datos Fin de programa: resultados
cálculos

Estructura de un programa informático


Cabecera:
A modo de comentarios se suele especificar:

 Nombre del programa.


 Datos de entrada.
 Datos de salida.

Funciones:
Definición de funciones propias creadas por el programador para usarlas en varias
ocasiones.
Declaraciones:
Definiciones y tipos de:

 Variables.
 Constantes.
 Nuevos tipos de datos.

Asignaciones:
Valores iniciales de los identificadores declarados previamente.
Entradas:
Instrucciones para almacenar en memoria los valores de algunos identificadores.
Control:
Instrucciones de control de flujo del programa. Pueden ser:

 Alternativas.
 Repetitivas.
 Salidas:

Instrucciones para devolver los resultados obtenidos.

Estructura Básica de un programa en C/C++:


La estructura de un programa es una cuestión que puede ser abordada desde varios
puntos de vista, consideremos para su estudio solo este caso.
1.- Componentes lógicos: Se refiere a los diversos elementos que componen una
aplicación, desde los más complejos hasta los más simples. Si comparamos un
programa con un edificio, los elementos irían desde el edificio como un todo, a los
ladrillos (sus elementos más pequeños).
2.- Estructura lógica: Desde el punto de vista lógico, puede considerarse que los
programas comprenden dos tipos de elementos diferentes: estructuras de datos y
algoritmos. O dicho en otras palabras: datos, e instrucciones para su manipulación.
Su representación codificada adopta dos formas: una entendible por la máquina
(ejecutable y ficheros de datos) y otra entendible por el humano (fuente). Para el
conjunto de ambas puede considerarse una escala conceptual que, si vamos de lo
general a lo particular, podemos representarla como sigue:
Aplicación: Comprende ejecutables y datos. Puede haber múltiples ficheros de
ambos tipos (ficheros de datos y ejecutables).

Programa: Parte de una aplicación (código) que puede cargarse y ejecutarse


independientemente.

Fichero fuente: Se llaman así (abreviadamente) los ficheros que contienen el


código fuente (ficheros .C / .CPP) escrito por el programador

Función: Una parte de un programa (subrutina) con un nombre, que puede ser
invocada (llamada a ejecución) desde otras partes tantas veces como se desee.
Opcionalmente puede recibir valores (argumentos); se ejecuta y puede devolver un
valor

Bloque: Lista, que puede estar vacía, de sentencias delimitadas.

Sentencia: Las sentencias se componen de una o varias expresiones y tienen


sentido computacional completo

Expresión: Las expresiones son secuencias de tokens


(operadores, operandos y elementos de puntuación)
que especifican una computación; tienen sentido
computacional en sí mismas.
3.3 TIPOS DE DATOS.

El tipo de un dato es el conjunto de valores que puede tomar durante el programa.


Si se le intenta dar un valor fuera del conjunto se producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales:
Por un lado, detectar errores en las operaciones
Por el otro, determinar cómo ejecutar estas operaciones
Un dato se define como la expresión general que describe los objetos con los
cuales opera una computadora. Los datos de entrada se transforman por el
programa, después de las etapas intermedias, en datos de salida.

Tipos de datos.
Los datos se clasifican en diversas categorías, según el tipo de máquina o del
lenguaje en uso. Generalmente podemos encontrar las siguientes categorías:
Numéricos
Lógicos
Cadenas
Datos Numéricos
Son aquéllos que representan una cantidad o valor determinado. Su
representación se lleva a cabo en los formatos ya conocidos (enteros, punto y
fracciones decimales si estas existen).
Estos pueden representarse en dos formas distintas:
Tipo Numérico Entero (integer).
Tipo Numérico Real (real).
Enteros
Es un conjunto finito de los números enteros. Los enteros son números completos,
no tienen componentes fraccionarios o decimales y pueden ser negativos y
positivos.
Algunos ejemplos son:

3 7
-10 9
15
50

Reales
Consiste en un subconjunto de los
números reales. Estos números
siempre tienen un punto decimal y
pueden ser positivos o negativos.
Un número real consiste de un
número entero y una parte
decimal.
Algunos ejemplos son:

0.52 664.32
6.579 8.0
-9.3 -47.23

Cadenas
Son los datos que representan información textual (palabras, frases, símbolos,
etc). No representan valor alguno para efectos numéricos. Pueden distinguirse
porque son delimitados por apóstrofes o comillas.
Se clasifica en dos categorías:
Datos
tipo carácter (char)
Datos
tipo Cadena (string)
Datos Tipo Carácter
Es un conjunto finito y ordenado de caracteres que la computadora reconoce. Un
dato de este tipo contiene solo un carácter.

Reconoce los siguientes caracteres:


Caracteres Alfabéticos (A, B, C, Z,a,b,c…z)
Caracteres Numéricos (0,1, 2, …9)
Caracteres Especiales (+, -, *, /, ^,. , ;, <, >, $, …….)

Datos Tipo Cadena (string)


Es una sucesión de caracteres que se encuentran delimitados por una comilla
(apóstrofe) o dobles comillas, según el tipo de lenguaje de programación. La
longitud de una cadena de caracteres es el número de ellos comprendidos entre
los separadores o delimitadores.

Ejemplos:
‘Hola Juan López’
’12 de octubre de 1496’
‘Enunciado cualquiera’

Nota: Los símbolos disponibles para la formulación de caracteres y de cadenas


son aquéllos que se encuentran en el código ASCII. ASCII
(American Standard Code for Information Interchange).

Lógicos
También se le denomina Booleano, es aquél dato que solo puede tomar uno de
dos valores: Falso y verdadero. Se utiliza para representar las alternativas (si/no) a
determinadas condiciones. Por ejemplo, cuando se pide si un valor entero sea
primo, la respuesta será verdadera o falsa, según sea.
Las categorías y tipos que se mencionaron anteriormente se conocen como Tipos
Simples, puesto que no poseen una estructura compleja. En forma adicional, cada
lenguaje puede proporcionar la utilización de Tipos Compuestos, siendo estos,
datos que tienen una estructura predeterminada.
3.4 IDENTIFICADORES.

En los lenguajes informáticos, los identificadores son elementos textuales (también


llamados símbolos) que nombran entidades del lenguaje. Algunas de las de
entidades que un identificador puede denotar son las variables, las constantes,
los tipos de dato, las etiquetas, las subrutinas, los paquetes y
las subrutinas (procedimientos y funciones).
Lo habitual es que, si un identificador se corresponde con una palabra clave o
reservada, éste ya no pueda utilizarse para referirse a otro tipo de entidades como
variables o constantes (en unos pocos lenguajes, como PL/1, esta distinción no
está del todo clara).
Palabras clave

La siguiente tabla Muestra Las Palabras claves de Java, ESTAS reservadas Son y
Identificadores Como No SER pueden utilizadas.

Literales
• Una literal es un valor constante formado por una secuencia de caracteres.
Cualquier declaración en Java que defina un valor constante -un valor que no
pueda ser cambiado durante la ejecución del programa es una literal.
Son ejemplos de literales los números, los caracteres y las cadenas de caracteres.
Literales numéricas
Se pueden crear literales numéricas a partir de cualquier tipo de dato primitivo.
• Ej.
123 //literal int
123.456 //literal double
123L //literal long
123.456F //literal float
Identificador.
Un identificador es un conjunto de caracteres alfanuméricos de cualquier longitud
que sirve para identificar las entidades del programa (clases, funciones, variables,
tipos compuestos) Los identificadores pueden ser combinaciones de letras y
números. Cada lenguaje tiene sus propias reglas que definen como pueden estar
construidos.
Restricciones de la composición de los identificadores en C++
Solo hay dos restricciones en cuanto a la composición:
 El primer carácter debe ser una letra o el guion bajo. El Estándar
establece que los identificadores comenzando con guion bajo y
mayúscula no deben ser utilizados. Este tipo de nombres se reserva
para los compiladores y las Librerías Estándar. Tampoco se permite la
utilización de nombres que contengan dos guiones bajos seguidos.
 El estándar ANSI establece que como mínimo serán significativos los
31 primeros caracteres, aunque pueden ser más, según la
implementación. Es decir, para que un compilador se adhiera al
estándar ANSI, debe considerar como significativos, al menos, los 31
primeros caracteres.

Palabras clave

La siguiente tabla Muestra Las Palabras claves de Java, ESTAS reservadas Son y
Identificadores Como No SER pueden utilizadas.
3.5 ALMACENAMIENTO, DIRECCIONAMIENTO Y
REPRESENTACIÓN EN MEMORIA.

ALMACENAMIENTO
Propósitos del almacenamiento
Los componentes fundamentales de las computadoras de propósito general son la
unidad aritmético-lógica, la unidad de control, espacio de almacenamiento y los
dispositivos de entrada/salida. Si se elimina el almacenamiento, el aparato sería una
simple calculadora en lugar de una computadora. Una computadora digital
representa toda la información usando el sistema
binario. Texto, números, imágenes, sonido y casi cualquier otra forma de
información puede ser transformada en una sucesión de bits, o dígitos
binarios, cada uno de los cuales tiene un valor de 1 o 0. Una determinada
información puede ser manipulada por cualquier computadora cuyo espacio de
almacenamiento es suficientemente grande como para que quepa el dato
correspondiente o la representación binaria de la información
Tipos de almacenamiento.
1. Almacenamiento primario

Contienen información que las unidades aritmético-lógicas necesitan llevar a


la instrucción en ejecución. La memoria caché es un tipo especial de memoria
interna usada en muchas CPU para mejorar su eficiencia o
rendimiento. Parte de la información de la memoria principal se duplica en la
memoria caché. Comparada con los registros, la caché es ligeramente más
lenta, pero de mayor capacidad.

Sin embargo, es más rápida, aunque de mucha menor capacidad que la


memoria principal. La memoria principal contiene los programas en ejecución
y los datos con que operan. La Unidad Aritmético-Lógica puede transferir
información muy rápidamente entre un registro del microprocesador y
localizaciones del almacenamiento principal, también conocidas como
“direcciones de memoria”. Los métodos de acceso y la velocidad son dos
de las diferencias técnicas fundamentales entre memoria y dispositivos de
almacenamiento masivo.

2. Almacenamiento secundario, terciario y fuera de línea

La memoria secundaria requiere que la computadora use sus canales de


entrada/salida para acceder a la información y se utiliza para
almacenamiento a largo plazo de información persistente. Sin embargo, la
mayoría de los sistemas operativos usan los dispositivos de almacenamiento
secundario como área de intercambio para incrementar artificialmente la
cantidad aparente de memoria principal en la computadora. La memoria
secundaria también se llama «de almacenamiento masivo». Habitualmente,
la memoria secundaria o de almacenamiento masivo tiene mayor capacidad
que la memoria primaria, pero es mucho más lenta.

En las computadoras modernas, los discos duros suelen usarse como


dispositivos de almacenamiento masivo.

La memoria terciaria es un sistema en el que un brazo robótico montará


(conectará) o desmontará (desconectará) un medio de almacenamiento
masivo fuera de línea (ver siguiente punto) según lo solicite el sistema
operativo de la computadora. La memoria terciaria se usa en el área del
almacenamiento industrial, la computación científica en grandes sistemas
informáticos y en redes empresariales. Este tipo de memoria es algo que los
usuarios de computadoras personales normales nunca ven de primera mano.

El almacenamiento fuera de línea es un sistema donde el medio de


almacenamiento puede ser extraído fácilmente del dispositivo de
almacenamiento. En computadoras modernas son de uso habitual para este
propósito los disquetes, discos ópticos y las memorias flash, incluyendo las
unidades USB. Los dispositivos de almacenamiento fuera de línea usados en
el pasado son cintas magnéticas en muchos tamaños y formatos diferentes,
y las baterías extraíbles de discos Winchester.

DIRECCIONAMIENTO
El direccionamiento de la memoria puede considerarse desde dos puntos de vista:
Físico y lógico. El primero se refiere a los medios electrónicos utilizados en el
ordenador para acceder a las diversas posiciones de memoria. El segundo, a la
forma en que se expresan y guardan las direcciones. Características del hardware
de los primeros PC’s

 Direccionamiento lógico
El sistema de numeración utilizado por los informáticos para representar las
direcciones de memoria en el texto escrito no suele ser la decimal, sino el
hexadecimal.
Por ejemplo, un bus de direcciones de 8 bits puede acceder a 256 posiciones. En
caso de direcciones de 16 bits, se puede acceder 65.536 posiciones. El bus de
direcciones del PC XT, que tiene 20 bits, las posibilidades son 1.048.576.

 Direccionamiento segmentado
La solución consistió en expresar las direcciones mediante dos palabras de 16 bits,
denominadas desplazamiento y segmento que, por consiguiente, pueden ser
representadas mediante un hexadecimal de cuatro cifras en el rango 0000-FFFFh.
Estas dos palabras pueden ser traducidas a una dirección de 20 bits mediante la
operación denominada suma con desplazamiento. En nuestro caso, si el
desplazamiento es ABCDh resulta ABCD0h. Puesto que inicialmente es un
hexadecimal de 4 cifras, el desplazamiento la transforma en un hexadecimal de 5
cifras.

 Segmentos y párrafos
Esta forma de representación segmentada de las direcciones es en realidad una
imagen de cómo son manejadas internamente en el procesador.
Los procesadores 8088 tienen registros de 16 bits que pueden servir para
almacenar los desplazamientos, es decir, cualquier dirección dentro de una zona de
64 KB (que se conoce como segmento). Disponen además de 4 registros de
segmento de 16 bits (CS, SS, DS y ES), en los que se almacenan las direcciones
de inicio del segmento activo en cada momento. Resulta así, que pueden
direccionar un total absoluto de 1MByte, y hasta 64 x 4 = 256 KB sin necesidad de
cambiar los registros de segmento. Esto es lo que se conoce como funcionamiento
en modo real (como puede verse, en realidad es una forma de manejar la memoria).

 Modelos de memoria DOS


Las 220 posibilidades de direccionamiento antes comentadas, constituyen el
famoso límite del “Megabyte” de memoria de los primeros PC’s, de los cuales se
reservaron los no menos famosos 640 primeros KBytes como máximo disponible
para programas de usuario.
Desde entonces, y en referencia a que el sistema operativo era MS-DOS, el primer
Megabyte de memoria se conoce como Memoria DOS; los primeros 640 KB como
memoria convencional o memoria base. Los 384 KB restantes (1024 – 640) son la
memoria superior o “del Sistema” (“Upper memory”). Esta zona superior contenía
cosas como adaptadores y memoria de video; chips de la ROM-BIOS; ROMs de los
controladores de disco, y adaptadores de red, aunque existían “agujeros” sin uso
que podían ser aprovechados.

 Memoria expandida
La primera, fue resultado de una iniciativa conjunta de Lotus e Intel, que
desarrollaron una variedad de la técnica de direccionamiento conocida como
conmutación de bancos, a la que llamaron EMS, que proporcionaba 8 MB de
espacio adicional. El procedimiento consistía en añadir al ordenador una placa
adicional de memoria de conmutación de bancos de hasta 32 MB, que era
conducida por un driver adecuado, el EMM cargado por el CONFIG. El truco
consiste en que, en un área en desuso de la memoria superior, se sitúa una zona
64 KB, denominada marco de página, en la que existen 4 secciones de 16 KB que
se emplean como punteros a una página más grande en la memoria de conmutación
de bancos.

 Modo protegido y memoria extendida


El modo protegido utiliza los registros de segmento como punteros a unos nuevos
registros de dirección de 24 bits denominados tablas de descripción, que permiten
acceder a un máximo de 224 de memoria física, de forma que los registros de
segmento son selectores que marcan el inicio de una dirección de 24 bits. La
memoria que se hacía accesible mediante este sistema se denominó memoria
extendida, para distinguirla de la antigua EMS. La posterior introducción del 80386,
con registros de 32 bits, permitió direccionar hasta 232 de memoria externa. Los
nuevos micros incluyeron otras mejoras que permitían al Sistema Operativo un
funcionamiento más cómodo y seguro de las aplicaciones cuando operaba en modo
protegido.

Los mecanismos pertinentes estaban incluidos en el hardware o al menos este


proporcionaba recursos al SO para realizarlos cómodamente, aunque desde luego,
para sacar provecho de estas mejoras el Sistema debía estar preparado ex profeso.

 Memoria virtual
Esta técnica consiste en hacer creer al programa que dispone de más memoria que
la físicamente disponible en RAM. Este artificio tiene sentido porque en ese
momento (y actualmente), la memoria extendida era mayor que la físicamente
disponible en muchos sistemas, además el disco duro era estándar en todos los
equipos.

Esta RAM ficticia se conoce como memoria virtual; una simulación conocida de
antiguo en el mundo de los mainframes, que fue introducida en la informática
personal a partir del 80286. Este procesador ya disponía de un controlador
hardware para este menester, de forma que su manejo no significaba una gran
sobrecarga para el Sistema. Su funcionamiento se basa en que cuando una
aplicación necesita más espacio y la memoria física está agotada, el controlador de
memoria virtual proporciona espacio auxiliar utilizando un fichero de intercambio
(“Swap file”) situado en memoria externa (disco duro generalmente), donde se
almacena la información que no cabe en la RAM.
REPRESENTACIÓN
 CODIGO BCD: El código BCD (decimal codificado en binario) utiliza un
cuarteto o nibble (4bits) para la representación de cada cifra decimal. Existen
varias versiones de este código:

 BCD natural: Sistema que codifica cifra a cifra del 0 al 9 con 4 bits y su valor
binario sin más. La tabla de equivalencias entre el sistema decimal y el BCD
natural es:

El 13, por ejemplo, tendrá una codificación: 0001 0011


Mientras que en binario puro se representa como: 1011
 Representación de números en Coma Flotante:
La coma flotante aparece para la representación de números reales con un rango
de representación mayor que el que nos ofrece la representación en coma fija,
permitiendo el tratamiento de números muy grandes y muy pequeños.

Un número en esta notación tiene infinitas representaciones, de las que se toma


como representación del mismo la denominada normalizada, que es aquella en la
que la mantisa no tiene parte entera y la primera cifra o dígito a la derecha de la
coma es distinta de 0, salvo en la representación del número 0.

 Representación normalizada
Cada fabricante de ordenadores define para la arquitectura de sus máquinas un
formato de coma flotante para lo que se denomina simple precisión, donde el
número de bits corresponde a una palabra, y otro para la doble precisión, donde se
utiliza una doble palabra. En general, se suelen seguir las siguientes reglas:

1. El exponente se representa en las notaciones MS o exceso a 2N-1, siendo


un número entero con signo.
2. La mantisa es un número real normalizado (sin parte entera) con la coma
implícita a la izquierda representada en MS, C-1 o C-2. El signo suele
estar situado en el bit de más a la izquierda.
3. La base de exponenciación también denominada raíz es una potencia de
2 determinada por el fabricante (2, 8 o 16).

Existen muchos formatos de representación en coma flotante, variando la longitud


de la palabra del computador, la base de exponenciación, el número de bits
reservados para la mantisa y para el exponente, el sistema de representar la
mantisa y el exponente, etc. La coma flotante para cada caso viene determinada
por el fabricante, siendo las definiciones más comunes:

El rango de representación en la coma flotante tiene la siguiente forma:

 mNN MNN 0 mNP MNP


mNN mínimo número negativo que podemos representar y que se corresponde con:
mNN = -máxima mantisa x base máximo exponente.
MNN máximo número negativo que se corresponde con: MNN = -mínima mantisa x
base -máximo exponente.
mNP mínimo número positivo, que se corresponde con: mNP = mínima mantisa x
base -máximo exponente.
MNP máximo número positivo que se corresponde con: MNP = máxima mantisa x
base máximo exponente.
Es estas representaciones además de existir huecos (números no representables)
entre dos cualesquiera, existen cuatro zonas en las que no se pueden representar
los números existentes en ellas. Estas zonas son:

 Desbordamiento positivo: Números mayores que MNP.


 Subdesbordamiento positivo: Números entre 0 y mNP.
 Subdesbordamiento negativo: Números entre MNN y 0.
 Desbordamiento negativo: Números menores que mNN.
Por ejemplo, un computador de 32 bits utiliza el siguiente formato para registrar
números en coma flotante con simple precisión:

 Los bits del 23 al 30 para el exponente, que se representa en exceso a 128


 Los bits del 0 al 22 para la mantisa normalizada, que se representa en C-1
con el punto a la izquierda.
 El bit 31 para el signo de la mantisa.
 Base de exponenciación 2.
 El 0 se representa con todos los bits a 0.
3.6 PROPOSICIÓN DE ASIGNACIÓN.

Esta operación es una manera diferente que se utiliza para que una variable reciba
un valor de forma directa sin intervención del usuario, o como resultado de la
evaluación de una expresión. Para esta operación se utiliza un operador que varía
de acuerdo al lenguaje, pero que de forma básica puede ser una flecha con
dirección hacia la izquierda.

En una asignación debe tenerse en cuenta que los dos lados de la asignación
deben pertenecer al mismo tipo de dato, y que en el lado izquierdo únicamente
puede aparecer UNA variable.
Ejemplo:
La forma de una proposición de asignación es: a = b donde b es una expresión
permitida, y a es el nombre de la variable donde se dejará el valor resultante de
evaluar b. Por expresión permitida se entiende a aquella expresión matemática que
ocupa las operaciones y funciones nombradas como existentes, y escritas de la
forma que para ellas se señala, respetando así la sintaxis en cada instrucción.
El signo igual, " = ", de a = b tiene el sentido de asignar a la variable a el valor que
resulte de evaluar la expresión permitida b. Es decir, a = b. Que no es la misma
definición usada en matemáticas para el signo: =.

El computador, al ejecutar una proposición de asignación evalúa la expresión del


lado derecho del signo igual con los valores que en ese momento tengan las
variables ahí ocupadas. Así, la expresión entregará valores probablemente distintos
en las diversas ocasiones que por programa se evalúe esa expresión. Las
siguientes son proposiciones de asignación correctas, A = 2.5 TO = 1 + XT I = I + 1
Y no son correctas las siguientes:

A + B = C 20 = 16.2 + 3.8 AL = (AT+3.4) / 110.302

Conceptos básicos
Operadores:
Un operador es un símbolo que indica al compilador que se lleven a cabo
específicas manipulaciones matemáticas o lógicas. El C tiene tres clases de
operadores: aritméticos, relacionales y lógicos y de bits.
Además de otros operadores especiales.

Asignación

El signo de igualdad (=)


Es el operador básico de asignación en C. Un ejemplo de una “expresión” de
asignación es: i = 7. A la variable i se le asigna el valor de 7 y la expresión como un
todo toma ese valor. Las proposiciones de asignación simples tienen la siguiente
sintaxis: variable = expresión;

Proposiciones:
Cuando la expresión va seguida de un punto y coma (;) se convierte en una
proposición. Ejemplo de proposiciones: i=7; x=3.1+sin (10.8); printf(“hola”); Las
siguientes proposiciones son válidas, pero no tienen ningún significado útil: 3.10;
a+b.
Fases de la asignación
Fase 1: Evaluar el lado derecho de la asignación, es decir resolver la expresión que
se encuentra después del operador de asignación.
Fase 2: Asignar al lado izquierdo, el valor resultante del lado derecho; por lo que la
variable que se encuentra a la izquierda en este instante recibe el valor de la
expresión evaluada en el lado derecho.
Ejemplo:

La asignación es una operación destructiva, esto significa que la variable que recibe
el valor, únicamente conserva el último valor asignado, y pierde el anterior.
Ejemplo:

Esto significa, que cuando una variable recibe un nuevo valor el anterior
desaparece.
Operador de asignación
Los Operadores de Asignación, como su nombre lo indica, se encargan de
asignarle a una variable el resultado de una expresión matemática o el valor de otra
variable.
Se utilizan en forma de expresiones de asignación en los que se asigna en el valor
de una expresión a un identificador. El operador de asignación más utilizado es “=”
y su formato es:

identificador = expresión

Donde el identificador representa por lo general una variable y una constante, una
variable o una expresión más compleja.

Si los dos operandos de la expresión de asignación son de tipo de datos diferentes


el valor de la expresión de la derecha se convertirá automáticamente al tipo de
identificador de la izquierda de esta forma la expresión de asignación será del
mismo tipo de datos.

Ejemplo:

 Un valor en coma flotante puede ser truncado, se asigna a un identificador


entero.
 Un valor de doble precisión puede ser redondeado si se asigna a un identificador
de coma flotante.

En lenguaje C, están permitidas las asignaciones múltiples, así:

Identificador1 = identificador2 = identificador 3…= identificador n =expresión


3.7 OPERADORES, OPERANDOS Y
EXPRESIONES

Operadores:

Un operador es el símbolo que determina el tipo de operación o relación que habrá


que establecerse entre los operandos de una expresión para alcanzar un
resultado.

Los operadores se clasifican en tres grupos:

Aritméticos

Relacionales

Lógicos

1.-Operadores aritméticos: son aquellos que permiten la realización de cálculos


aritméticos. Utilizan operandos numéricos y proporcionan resultados numéricos.

+ ------- suma

- -------resta

* -------Multiplicación

/ -------División

% ----Residuo

Ejemplo:

7+3 = 10

en la expresión 7+3, los valores 7 y 3 se denominan operandos, que son los


valores que se evalúan o relacionan. El valor de la expresión 7 + 3 se conoce
como resultado de la expresión, que es el producto de la relación entre los
operandos condicionados por el operador.

2. Los operadores relacionales, también denominados operadores binarios lógicos


y de comparación, se utilizan para comprobar la veracidad o falsedad de
determinadas propuestas de relación (en realidad se trata respuestas a
preguntas). Las expresiones que los contienen se denominan expresiones
relacionales. Aceptan diversos tipos de argumentos, y el resultado, que es la
respuesta a la pregunta, es siempre del tipo cierto/falso, es decir, producen un
resultado booleano.

Operador Acción

> Mayor que

>= Mayor o igual que

< Menor que

<= Menor o igual que

== Igual

!= Diferente

Si la propuesta es cierta, el resultado es true (un valor distinto de cero), si es falsa


false (cero).

3. Operadores lógicos son aquellos que permiten la combinación de condiciones


para formar una sola expresión lógica. Utilizan operandos lógicos y proporcionan
resultados lógicos también.

Operadores

&& -------------conjunción (y)

|| --------------disyunción (o)

xor -------------disyunción exclusiva (o/solo)

Se obtiene verdadero si:

AND-----ambos operandos son verdaderos

OR------Al menos un operando es verdadero

XOR----solo uno de los operandos es verdadero.

Expresión:
Una expresión es una secuencia de operadores y operandos que describe un
cálculo. Normalmente una expresión se evalúa en tiempo de ejecución
Expresiones.
Una expresión es una combinación de operadores y operandos de cuya
evaluación se obtiene un valor. Los operandos pueden ser nombres que denoten
objetos variables o constantes, funciones, literales de cualquier tipo adecuado de
acuerdo con los operadores u otras expresiones más simples. La evaluación de
una expresión da lugar a un valor de algún tipo, una expresión se dice que es del
tipo de su resultado. Ejemplos de expresiones
a + 5*b
(a >= 0) and ((b+5) > 10)
a
-a * 2 + b -b + sqrt (b**2 - 4*a*c) length(s) > 0
Las expresiones se evalúan de acuerdo cc precedencia de los operadores. Ante
una secuencia de operadores de igual precede la evaluación se realiza según el
orden de escritura, de izquierda a derecha. El orden evaluación puede modificarse
usando paréntesis.
3.8 PRIORIDAD DE
OPERADORES, EVALUACION DE
EXPRESIONES

Prioridad

Se llama prioridad al orden en el que se evalúa una expresión. 4D tiene una


estricta prioridad izquierda-a-derecha. Por ejemplo: 3+4*5 devuelve 35 porque la
expresión es evaluada como 3+4, dando 7, el cuál es multiplicado por 5,
resultando 35. Se pueden utilizar paréntesis para cambiar la prioridad izquierda-a-
derecha. Por ejemplo:
3+(4*5) devuelve 23 porque se evalúa primero la expresión (4*5), por estar entre
paréntesis. El resultado es 20, lo cual es añadido el 3, dando el resultado final 23.
Se pueden insertar paréntesis dentro de otros grupos de paréntesis. Es necesario
asegurarse de que cada paréntesis izquierdo tiene su correspondiente derecho. La
falta o el uso incorrecto de los paréntesis puede provocar resultados inesperados
o expresiones no válidas.

EVALUACIÓN DE EXPRESIONES

Cuando en una expresión concurre más de una operación, los paréntesis


indicarán prioridad, es decir, la operación encerrada entre paréntesis se realizará
en primer lugar. Además, algunos operadores tendrán preferencia sobre otros. Por
ejemplo, en la operación a + b / c, primero se realizará b / c y posteriormente se le
sumará a. En caso de que el programador quiera que se sume primero a y b para
posteriormente dividir por c, tendríamos que hacer (a + b) / c. Si todos los
operadores de una expresión tienen la misma prioridad, la operación se hará de
izquierda a derecha, salvo cuando tengamos exponenciales, en tal caso, el orden
será de derecha a izquierda, por ejemplo, al hacer 2**3**2 resulta el valor 2**9 =
512
Todas las expresiones entre paréntesis se evalúan primero. Las expresiones con
paréntesis anidados se evalúan de dentro a fuera, el paréntesis más interno se
evalúa primero.
Dentro de una misma expresión los operadores se evalúan en el siguiente orden:
1. Exponenciación
2. *, /, mod Multiplicación, división, modulo.
3. +, - Suma y resta.
Operadores Relacionales
Se utilizan para establecer una relación entre dos valores. Luego compara estos
valores entre sí y esta comparación produce un resultado de certeza o falsedad
(verdadero o falso). Los operadores relacionales comparan valores del mismo tipo
(numéricos o cadenas). Estos tienen el mismo nivel de prioridad en su evaluación.
Tipos de operadores Relacionales
 >Mayor que
 < Menor que
 >= Mayor o igual que
 <= Menor o igual que
 <>Diferente
 = Igual
Ejemplos:
Si a = 10, b = 20, c =30
a+b>c Falso
a-b<c Verdadero
a = b = c Falso
a * b <>c Verdadero
Ejemplos no lógicos:
a <b<c
10 <20 <30
T>5<30
(no es lógico porque tiene diferentes operandos)
Operadores Lógicos
Estos operadores se utilizan para establecer relaciones entre valores lógicos.
Estos valores pueden ser resultado de una expresión relacional.
Tipos de operadores Lógicos
And Y
Or O
Not Negación
3.9 Elaboración De
Programas
Análisis:
En esta fase se establece el producto a desarrollar, siendo necesario
especificar los procesos y estructuras de datos que se van a emplear.
Debe existir una gran comunicación entre el usuario y el analista para
poder conocer todas las necesidades que precisa la aplicación.

Diseño:
En esta fase se alcanza con mayor precisión una solución
óptima de la aplicación, teniendo en cuenta los recursos
físicos del sistema (tipo de ordenador, periféricos,
comunicaciones, etc…) y los recursos lógicos. (Sistema
operativo., programas de utilidad, bases de datos, etc…)

Explotación:
En esta fase se realiza la implantación de la aplicación en
el sistema o sistemas físicos donde van a funcionar
habitualmente y su puesta en marcha para comprobar el
buen funcionamiento.

Actividades a tener en cuenta o realizar:


Instalación del/los programa/s.
Pruebas de aceptación al nuevo sistema.
Conversión de la información del antiguo sistema al
nuevo (si hay una aplicación antigua).
Eliminación del sistema anterior.
Mantenimiento:
Esta es la fase que completa el ciclo de vida y en ella nos
encargaremos de solventar los posibles errores o deficiencias de la
aplicación. Existe la posibilidad de que ciertas aplicaciones necesiten
reiniciar el ciclo de vida.

Tipos de mantenimiento:
Mantenimiento Correctivo: Consiste en corregir errores no
detectados en pruebas anteriores y que aparezcan con el uso
normal de la aplicación. Este mantenimiento puede estar incluido en la
garantía o mantenimiento de la aplicación.
Mantenimiento Preventivo: Es el destinado a la conservación de equipos o
instalaciones mediante la realización de revisión y reparación que garanticen
su buen funcionamiento y fiabilidad. El mantenimiento preventivo se realiza
en equipos en condiciones de funcionamiento, por oposición al
mantenimiento correctivo que repara o pone en condiciones de
funcionamiento aquellos que dejaron de funcionar o están dañados.

Codificación:
Consiste en traducir los resultados obtenidos a un determinado
lenguaje de programación, teniendo en cuenta las
especificaciones obtenidas en el cuaderno de carga. Se deben de
realizar las pruebas necesarias para comprobar la calidad y
estabilidad del programa.
3.10 PRUEBAS Y
DEPURACIÓN

Los errores humanos dentro de la programación de computadoras son muchos y


aumentan considerablemente con la complejidad del problema. El proceso de
identificar y eliminar errores, para dar paso a una solución sin errores se le llama
Depuración. La depuración o prueba resulta una tarea tan creativa como el mismo
desarrollo de la solución, por ello se debe considerar con el mismo interés y
entusiasmo.

Resulta conveniente observar los siguientes principios al realizar una depuración,


ya que de este trabajo depende el éxito de nuestra solución.

a) Trate de iniciar la prueba de un programa con una mentalidad saboteadora, casi


disfrutando la tarea de encontrar algún error.
b) Sospeche de todos los resultados que le arroje la solución, con lo cual deberá
verificar todos.
c) Considerar todas las situaciones posibles normales y aún algunas de las
anormales.
Codificación.
La codificación es la operación de escribir la solución del problema (de acuerdo a la
lógica del diagrama de flujo o pseudocódigo), en una serie de instrucciones
detalladas en un código reconocible por la computadora, la serie de instrucciones
detalladas se le conoce como programa fuente, el cual se escribe en un lenguaje de
programación o lenguaje alto nivel.
Existen diversos tipos de lenguaje de alto nivel, de acuerdo al tipo de problema que
se desea resolver, clasificándose en problemas: matemáticos, científicos,
administrativos o comerciales.

Documentación.
Es la guía o comunicación escrita en sus variadas formas, ya sean en enunciados,
procedimientos, dibujos o diagramas. A menudo un programa escrito por una
persona, es usado por muchas otras. Por ello la documentación sirve para ayudar
a comprender o usar un programa o para facilitar futuras modificaciones
(mantenimiento).
La documentación debe presentarse en tres formas, externa, interna y al usuario
final. La primera debe estar integrada por los siguientes elementos:

a) Descripción del problema.


b) Nombre del autor.
c) Diagrama de flujo y/o pseudocódigo.
d) Lista de variables y constantes.
e) Codificación del programa.

Ejemplo
DIAGRAMA DE FLOJO – PROBLEMA 1
Dados tres números (A, B, C) determinar si la suma de una pareja de ellos es
igual al tercer número, si se cumple con la condición escribir “iguales” y en el
caso contrario escribir “distintos”. Recuerde que el diagrama debe comprobar
las tres posibilidades que se dan en el ejercicio (A + B = C, A + C = B, B + C = A).
Bibliografía
 Lenguajes de Programación: Entornos de programación. (2015). LDP.
http://descargas.pntic.mec.es/mentor/visitas/nav_Inici_Progr/lenguajes/len2
0.html
 Espinoza Leal, G. I. (s. f.). ALGORITMOS - 3.9 Elaboración de programas.
Sitesgoogle.Com. Recuperado 30 de junio de 2021, de
https://cutt.ly/gmsYl5h
 Gómez, F. J. (s. f.). 5. Estructura de un programa informático | Conceptos
básicos de programación. Hablando con las máquinas: lenguajes de
programación. IEDA. Recuperado 30 de junio de 2021, de
https://cutt.ly/3msYgJK
 Tecnológico De Tuxtl Gutierrez. (s. f.). 3.2 Estructura básica de un programa.
- TECNOLOGICO DE TUXTLA GUTIERREZ. Sitesgoogle.com. Recuperado
30 de junio de 2021, de https://cutt.ly/2msYnBf
 G. (2021, 1 julio). 3.3 Tipos de datos. Blogger.
https://gemaliortegaroman.blogspot.com/2019/04/33-tipos-de-datos.html
 G. (2019, 1 mayo). 3.4 Identificadores. Blogger.
https://geovanysamuelsantisarguelloalgoritmos.blogspot.com/2019/04/34-
identificadores.html?m=1
 Pineda, N. C.-C. (s/f). Asignación, 2021, de Edu.ec website:
http://www.utn.edu.ec/reduca/programacion/fundamentos/asignacin.html

 Perfil, V. (2019, abril 29). proposición de asignación, de Blogspot.com


website:
https://yamirvenustianogarciamartinez8.blogspot.com/2019/04/proposicion-
de-asignacion.html

 Operadores de Asignación - Programación Estructurada. (s/f), de Google.com


website: https://sites.google.com/site/progstr5i/classroom-
news/estructurasdecontrol/operadores/operadores-de-asignacin
 Direccionamiento, Almacenamiento y Representación en Memoria. (s. f.).
DIRECCIONAMINETO,
AMACENAMIENTOYREPRESENTACIONENMEMORIAS. Recuperado 1 de
julio de 2021, de https://christianexodo.wordpress.com/about/
 Pruebas y depuración. (s. f.-c). ALGORITMOS. Recuperado 1 de julio de 2021, de
https://sites.google.com/view/gerardo-isaias-espinoza-leal/unidad-3/3-10-pruebas-y-
depuraci%C3%B3n

También podría gustarte