Sunteți pe pagina 1din 9

1

Introducción a la programación

Unidad I – Estructura de la Programación


Definición: Un programa puede conceptualizarse como una secuencia de acciones, en forma de
instrucciones, que manipulan un conjunto de objetos, en forma de datos

Tipos de programas
Los programas pueden clasificarse en: programas lineales, alternativos y cíclicos.
• Programas lineales: compuestos por una secuencia de acciones primitivas. Su ejecución
es lineal y secuencial.
• Programas alternativos: compuestos por acciones alternativas anidadas. Su ejecución se
realiza mediante procedimientos alternativos.
• Programas cíclicos: compuestos por un conjunto de acciones que se repiten un número
determinado o indeterminado de veces. Su ejecución se realiza en procesos denominados
bucles.

Otra clasificación está basada en su aplicación, como: programas de gestión, técnico-científicos,


de diseño [CAD], de simulación, educativos [EAO], inteligencia artificial.
• Programas de gestión: manejan gran cantidad de datos con pocos cálculos.
• Programas técnico-científicos: realizan gran cantidad de cálculos con pocos datos
• Programas de diseño [CAD]: utilizan técnicas gráficas para resolver problemas de diseño.
• Programas de simulación: intentan reflejar una situación real con datos aportados.
• Programas educativos [EAO]: son aplicaciones didácticas elaboradas para la docencia.
• Programas de inteligencia artificial: son aplicaciones que permiten simular el razonamiento
humano.

Lenguajes de Programación
Se entiende como lenguaje de programación a la notación para escribir un programa, que
posteriormente será traducido a un programa de máquina, compuesto por una secuencia de 0 o
1. El lenguaje ensamblador es una evolución del lenguaje de máquina que sustituye una cadena
de símbolos binarios por símbolos nemotécnicos. Los lenguajes evolucionaron y se convirtieron
en lenguajes de alto nivel.

Evolución de lenguajes
1955 Fortran
1960 Lisp – Algol – Cobol
1965 Apl – Snobol – Pl/1 – Basic
1970 Prolog – Algol68 – Simula67
1975 C – Pascal
1980 Modula-2 – Lis – Euclid
1985 Ada

Clasificación de los lenguajes de programación


Según su parecido con el • Bajo nivel: lenguajes de máquina – lenguajes ensambladores
lenguaje natural • Alto nivel: todos los demás
Según la estructura de los • Convencionales o línea a línea: ensambladores – Fortran –
programas Basic – Cobol – etc.

Autor: Mtr. Ing. Amado G. López – 2020 [1]


2
Introducción a la programación

• Estructurados: Algol – Pl/1 – Pascal – Ada – Cobol


estructurado – etc.
Según la realización de los • Funcionales: Lisp – Prolog – Apl – etc.
programas • Imperativos: la mayoría
Según el tipo de proceso • Interactivos o conversacionales: Basic – Pascal – Apl – etc.
• Orientados al proceso por lotes: Cobol – Fortran – Pl/1 – etc.

Tipos de datos
Los tipos de datos permiten representar los diferentes datos que son necesarios para implementar
un programa.
• Datos enteros
o Byte: puede representar datos enteros que se encuentran en el rango -128 +127.
Su tamaño es de 8 bits.
o Short: puede representar datos enteros que se encuentran en el rango -32768
+32767. Su tamaño es de 16 bits.
o Int: puede representar datos enteros que se encuentran en el rango -2147483648
+2147483647. Su tamaño es de 32 bits.
o Long: puede representar datos enteros que se encuentran en el rango -
9223372036854775808 +9223372036854775807. Su tamaño es de 64 bits.
• Datos flotantes
o Float: representar datos en coma flotante que se encuentran en el rango
1.40239846e–45f y 3.40282347e+38f. Su tamaño de tipo short es de 32 bits.
o Double: representar datos en coma flotante que se encuentran en el rango
4.94065645841246544e–324d y 1.7976931348623157e+308d. Su tamaño de
tipo short es de 64 bits.
• Datos boolean
o Representan valores lógicos: true(verdadero) o false(falso).
• Datos char
o El tipo de dato char se usa para representar caracteres (código Unicode).

Identificadores
Identificador es una secuencia de caracteres, letras, dígitos o guion bajo, que se pueden utilizar
para declarar variables, constantes, procedimientos o funciones.

Reglas para la utilización de identificadores


• El primer carácter debe ser una letra ó un subrayado
• Los identificadores son sensibles a las letras mayúsculas y minúsculas, por lo cual los
identificadores para las variables: SUMA y suma son distintos.
• En C++ el identificador puede tener cualquier longitud, sin embargo el compilador ignora
cualquier carácter fuera de los 32 primeros
• Los identificadores no pueden ser palabras reservadas, como main, if, for, etc.

Palabras reservadas
Las palabras reservadas son identificadores predefinidos reservados que tienen significados
especiales y no se pueden utilizar como identificadores de sus programas.
break case catch char class
Const_cast cast continue default delete
deprecated dllexport dllimport do Double

Autor: Mtr. Ing. Amado G. López – 2020 [2]


3
Introducción a la programación

dynamic_cast else enum explicit extern


false float for friend goto
if inline int long mutable
naked namespace new noinline noreturn
nothrow novtable operator private property
protected public register reinterpret_cast return
selectany short signed sizeof static
static_cast struct switch template this
thread throw true try typedef
typeid typename union unsigned using
virtual void volatile

Estructuras de control
La estructura de control permite al programador, modificar el flujo de instrucciones para la
ejecución de un programa.
Hay tres tipos básicos de estructuras de control
Secuenciales • Asignación
• Entrada
• Salida
Condicionales • Simples
Estructuras de control
• Múltiples
Cíclicas • Hacer para
• Hacer mientras
• Repetir hasta

Estructuras secuenciales: Estructura más simple que se caracteriza por ejecutar instrucciones,
una tras otra, desde el inicio hasta el final.
• Estructura de asignación: Parte del programa donde se realiza una declaración de
variables como también la asignación o no de valores.
• Estructura de entrada: Parte del programa en el que se realiza la entrada de valores por
algún periférico de entrada.
• Estructura de salida: Parte del programa que permite representar la salida de los
resultados de los procesos o mensajes que se despliegan al usuario.

Estructuras condicionales: Son estructuras que permiten seleccionar el código que se quiere
ejecutar, dependiendo de la veracidad o falsedad de una o varias condiciones.
• Estructura condicional simple: Proceso que permite evaluar la condición que, en caso de
ser verdadera, ejecuta una o varias instrucciones.
• Estructura condicional doble: Proceso que permite evaluar la condición que, si es
verdadera, ejecuta una o varias instrucciones, pero, si es falsa, ejecuta otra o varias otras
instrucciones.
o Estructura condicional doble, anidada: Proceso que permite evaluar la condición
que, si es verdadera, ejecuta una o varias instrucciones, sino, evalúa otra
condición, que a su vez, de ser verdadera, ejecuta una o varias instrucciones,
sino, ejecuta otra o varias otras instrucciones. Posteriormente, ejecuta una o
varias instrucciones si la condición inicial es falsa
• Estructura condicional múltiple: Proceso que permite seleccionar varias alternativas. Para
cada selección, hay un caso que contiene las instrucciones que se van a ejecutar. El caso

Autor: Mtr. Ing. Amado G. López – 2020 [3]


4
Introducción a la programación

termina con una instrucción de fin o break. Si ningún caso coincide, se ejecuta el caso
predefinido o default que permite finalizar con el proceso de selección alternativo.

Estructuras cíclicas: Procesos conocidos como estructuras repetitivas que permiten ejecutar un
bloque de código un número controlado de veces. Consta de los siguientes componentes:
 Variable de control: variable de incremento o decremento que controla el número de veces
que se repite el ciclo.
 Condición: es la condición que controla la finalización o paro del ciclo.
 Interacción por ciclo: indica la manera como se modificará la variable de control
(incremento o decremento).

• Estructura para hasta que [ciclo for]: su sintaxis es


for(vi; cp; ic)
{
Instrucciones a repetir;
}

Simbología: vi = valor inicial – cp = condición para proceder – ic = interacción del ciclo

• Estructura mientras que [ciclo while]: su sintaxis es


while(condición)
{
Instrucciones a ejecutar;
}

• Estructura hacer mientras [ciclo do while]: su sintaxis es


do
{
Instrucciones a ejecutar;
} while(condición)

Operadores
Los operadores son símbolos que indican la manera como se deben manipular los operandos y
ambos forman una expresión, formando así una fórmula que define el cálculo de un valor. Los
operandos pueden ser constantes, variables o llamadas a funciones. Existe una regla de prioridad
para la evaluación de los operadores. Se puede modificar el orden de prioridad con la utilización
de paréntesis para algunos grupos de operandos.

Tipos de operadores
• Aritméticos
• Casting
• Monarios
• Relacionales y lógicos
• Asignación
• Condicional
• Tratamiento de bits
• Punteros
• Secuencial
• Acceso a estructuras y uniones

Autor: Mtr. Ing. Amado G. López – 2020 [4]


5
Introducción a la programación

• []y()

Operadores aritméticos
Operador Propósito
+ Adición
- Sustracción
* Multiplicación
/ División
% Resto de la división entera (módulo)

Consideraciones
• Para aplicar % se requiere que ambos operandos sean enteros y el segundo no nulo.
• Para aplicar / se requiere que el segundo operando sea no nulo.
o Para 2 operandos enteros, el resultado será entero, truncado solo la parte entera.
o Para 2 operandos en coma flotante, el resultado será otro número en coma
flotante.
o Para un número entero y otro en coma flotante, el resultado será otro número en
coma flotante.
o Para algún número negativo, el resultado será otro número entero que estará
truncada hacia cero, es decir, siempre menor al valor absoluto que el verdadero
cociente.

Casting
Se puede cambiar el tipo de una variable a través del operador casting, anteponiendo al operando,
el nombre del tipo requerido, encerrado entre paréntesis. El tipo puede ser un puntero o un
modificador de tipo.

Monarios
Son operadores que actúan sobre un sólo operando para producir un nuevo valor. En C todas las
constantes numéricas son positivas. Por tanto, un número negativo es en realidad una expresión,
que consiste en el operador monario menos (-), seguido de una constante numérica positiva. No
debemos confundir este menos, con el de la operación de la sustracción, el cual requiere dos
operandos.
Otros operadores monarios son
++ operador de incremento que hace que su operando se incremente en 1
-- operador de decremento que hace que su operando se incremente en 1

Se pueden presentar de dos formas, dependiendo de dónde se escribe el operador, antes o


después del operando. Si el operador precede al operando (Ej: ++i), el valor del operando se
modificará antes de que se utilice con otro propósito. Si el operador sigue al operando (Ej: i--), el
valor del operando se modificará después de ser utilizado.

Lógicos y relacionales

Operador Propósito
> Mayor que
>= Mayor o igual que
< Menor que
<= Menor o igual que
== Igual a

Autor: Mtr. Ing. Amado G. López – 2020 [5]


6
Introducción a la programación

!= Distinto
&& And lógico
|| Or lógico
! Not lógico

Consideraciones
Los operadores tienen un orden de precedencia, pudiéndose diferenciar de mayor a menor
precedencia, en caso de igualdad de precedencia todos se asocian de izquierda a derecha
(excepto los monarios, los condicionales, y los de asignación, que lo hacen de derecha a
izquierda), esto quiere decir que si la asociatividad es de izquierda a derecha, y se nos presentan
operadores con la misma precedencia, comenzaremos a mirar los operadores más a la izquierda,
e iremos avanzando hacia la derecha, dicho esto presentamos los distintos grupos de operadores:

• monarios: -, ++, --, !, sizeof(tipo).


• multiplicación(*), división(/) y resto(%) aritméticos.
• suma(+), y sustracción(-) aritméticas.
• <, <=, >, >=.
• ==, !=.
• && (AND lógico).
• || (OR lógico).

Asignación
Se utiliza el operador =, dentro de una asignación, para asignar valores a una variable.
variable = expresión
variable operador = expresión
variable = variable operador expresión
Operador Propósito
++ Incremento unario
-- Decremento unario
= Asignación simple
*= Asignación de la multiplicación
/= Asignación de la división
%= Asignación del resto
+= Asignación de la suma
-= Asignación de la resta
<<= Asignación del desplazamiento a la izquierda
>>= Asignación del desplazamiento a la derecha
&= Asignación de la operación and
|= Asignación de la operación or
^= Asignación de la operación xor

Consideraciones
Cuando se evalúa una expresión se obtiene un tipo de resultado que depende de los operandos.
Si un operador tiene operandos de tipos diferentes, éstos se convierten a tipo según una jerarquía
preestablecida. Las conversiones aritméticas implícitas se realizan mediante la siguiente
secuencia, y en ese orden:
• char y short se convierten a int.
• si un operando es long double, el otro se convierte en long double, y el resultado también.

Autor: Mtr. Ing. Amado G. López – 2020 [6]


7
Introducción a la programación

• en otro caso, si un operando es double, el otro se convierte en double, y el resultado


también.
• en otro caso, si un operando es float, el otro se convierte en float, y el resultado también.
• en otro caso, si un operando es unsigned long, el otro se convierte en unsigned long, y el
resultado también.
• en otro caso, si un operando es long, el otro se convierte en long, y el resultado también.
• en otro caso, si un operando es unsigned, el otro se convierte en unsigned, y el resultado
también.
• en otro caso, los operandos son de tipo int, y el resultado es de tipo int.

Cuando se realiza una asignación de variables de diferentes tipos, el valor del lado derecho se
ajusta al tipo de variable del lado izquierdo de la expresión.

Condicional
Este operador (?:) se utiliza para reemplazar estructuras sencillas de decisión. Si se desea que
una instrucción determinada se ejecute según una cierta condición, se emplea este operador
ternario de la siguiente forma:
<condición>?<expresión-v>: <expresión-f>
Primero se evalúa la condición <condición>, si es verdadera se evalúa la <expresión-v>, si es falsa
se evalúa la <expresión-f>

Tratamiento de bits
Operador Propósito
& Operación and
| Operación or
^ Operación xor
>> Desplazamiento a la derecha
<< Desplazamiento a la izquierda

Estos operadores sólo pueden usarse con los tipos int y char y funcionan bit a bit. El operador de
desplazamiento se puede utilizar para realizar multiplicaciones o divisiones rápidas, pues cada
desplazamiento a la izquierda multiplica por 2, y cada desplazamiento a la derecha divide por 2.
El C distingue entre desplazamientos aritméticos y lógicos:

• Los desplazamientos aritméticos se realizan sobre tipos enteros y mantienen el signo (el
bit más alto).
o Con los desplazamientos a la izquierda el bit no se altera.
o Con los desplazamientos a la derecha el bit se copia en la posición siguiente, con
la intención de mantener el signo del dato.
• Los desplazamientos lógicos se realizan sobre datos unsigned. No tienen ninguna
consideración particular con el signo.

[]()
Los corchetes se utilizan para acceder a los diferentes elementos de una matriz (se verá
posteriormente en temas sucesivos). Para seleccionar un elemento se necesita un índice que
indique la posición a utilizar. Los paréntesis se pueden utilizar dentro de las expresiones para
modificar el orden de evaluación predeterminado por el lenguaje.

Optimización de programas

Autor: Mtr. Ing. Amado G. López – 2020 [7]


8
Introducción a la programación

La generación del código se realiza durante el proceso de análisis del programa y tiene la
particularidad que es libre del contexto.
La optimización del programa se realiza después de la generación del código o de una función,
procedimiento, método, etc., ejecutable del programa y tiene la particularidad que es dependiente
del contexto.

Proceso de generación de código y optimización

Código fuente
Analizador lexicográfico,
sintáctico y semántico

Se ejecuta todo junto. Mientras se


analiza, se genera código Generador de código

Optimizador

Programa objeto

La optimización se compone de los siguientes procesos


• Objetivo: Obtener código que se ejecuta con mayor eficiencia, de acuerdo a ciertos
criterios
o Tiempo de ejecución [optimización temporal]
o Espacio de memoria utilizado [optimización espacial]
• Funcionamiento: Se revisa el código generado a varios niveles de abstracción y se
realizan las optimizaciones aplicables al nivel de abstracción, considerando:
o Las representaciones de código intermedio más o menos abstractas
▪ Árbol sintáctico abstracto: optimizar subexpresiones redundantes,
reducción de frecuencia, etc.
▪ Tuplas o cuádruplas: optimizar en uso de los registros o de las variables
temporales.
▪ Ensamblador/Código máquina: convertir saltos a saltos cortos, reordenar
instrucciones
o Las representaciones de código para extraer información
▪ Grafos
• Condiciones que deben cumplir
o El código optimizado se ha de comportar igual que el código de partida excepto
por ser más rápido o ocupar menos espacio
o Hay que buscar transformaciones que no modifiquen el comportamiento del
código según el comportamiento definido para el lenguaje de programación.

Autor: Mtr. Ing. Amado G. López – 2020 [8]


9
Introducción a la programación

Declaración de variables
Consiste en escribir una sentencia que proporciona información al compilador para que reserve un
espacio de almacenamiento en la memoria. Las variables usadas en un programa deben ser
declaradas previamente
Sintaxis
<tipo de dato><nombre de variable>;
int n;
<tipo de dato><lista de variables>;
int n, x, y;
<tipo de dato><nombre de variable> = valor;
int n = 25;

Reglas para identificar las variables


Toda variable tiene un nombre que se denomina identificador
• El identificador se compone de caracteres alfanuméricos [letras mayúsculas o minusculas]
y números
• Siempre debe comenzar con una letra
• El guion bajo puede formar parte de un identificador
• Las palabras reservadas no deben utilizarse como identificadores
• El número de caracteres para un identificador no debe superar la cantidad de 150

Autor: Mtr. Ing. Amado G. López – 2020 [9]

S-ar putea să vă placă și