apuntes unidad 3 de algoritmos y programación
DESCRIPTION
aqui encontraras lo requerido para aprender la unidad 2 de programación y algoritmosTRANSCRIPT
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 37
Algoritmos y lenguajes de programación Ing. Industrial
UNIDAD 3 “INTRODUCCIÓN A LA PROGRAMACIÓN DE UN LENGUAJE ESTRUCTURADO”
3.1.- INTRODUCCIÓN A LA PROGRAMACIÓN
Se llama Programación a la implementación de un algoritmo en un determinado
lenguaje de programación, para realizar un programa.
Algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones que
han de seguirse para resolver un problema.
Programa (Software en inglés) es una secuencia de instrucciones que una
computadora puede interpretar y ejecutar.
El proceso de creación de software es materia de la ingeniería del software, una
de las ramas propias de la Ingeniería Informática.
Según Niklaus Wirth un programa está formado por algoritmos y estructura de
datos.
Lenguaje de programación es el idioma utilizado para controlar el
comportamiento de una máquina, particularmente una computadora. Consiste en un
conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el
significado de sus elementos y expresiones.
Hay muchos lenguajes de programación, pero para programar no es necesario
conocer todos los lenguajes, es igual que cuando hablamos, podemos comunicarnos en
español aunque no sepamos alemán.
En la actualidad los lenguajes de programación están escritos para ser
comprensibles por el ser humano, a este código se le llama código fuente, pero no es
comprendido por la máquina ya que esta solo maneja el lenguaje binario.
La compilación es el proceso de traducir un programa en código fuente a
programa en código objeto (que usa el lenguaje binario), el programa encargado de
compilar se llama compilador. La mayoría de los lenguajes de programación traen su
propio compilador.
Entorno de Desarrollo Integrado (en inglés Integrated Development
Environment 'IDE'): Es un programa compuesto por un conjunto de herramientas para
un programador. Estos IDE son programas que sirven para programar, ya sea en un
lenguaje de programación o en varios lenguajes.
Para esta unidad y el resto de las unidades utilizaremos como lenguaje de
programación el lenguaje C y como entorno de desarrollo el Dev-C++.
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 38
Algoritmos y lenguajes de programación Ing. Industrial
3.2.- ESTRUCTURA BÁSICA DE UN PROGRAMA
Un programa fuente C es una colección de cualquier número de directrices para
el compilador, declaraciones, definiciones, expresiones, sentencias y funciones.
Todo programa C debe contener una función nombrada main( ), donde el
programa comienza a ejecutarse. Las llaves ({ }) que incluyen el cuerpo de esta función
principal, definen el principio y el final del programa.
El ejemplo siguiente muestra un programa completo en C, que imprime un texto
en pantalla:
1. Comentarios: Los comentarios en C comienzan con la secuencia '/*' y termina con la
secuencia '*/'. Todo lo que se encuentre entre estas dos secuencias es omitido por el
compilador.
2. Directivas al preprocesador: La etapa de compilación se realiza en dos fases, una en
la que un preprocesador atiende todas las directivas que contiene el código fuente y otra
etapa de traducción a código objeto. Todas las directivas al preprocesador comienzan
con el caracter '#', en particular la directiva #include instruye al preprocesador para que
inserte el contenido del archivo que se pasa como argumento a la directiva para su
posterior compilación.
3. Definición de funciones: Se pueden definir cualquier cantidad de funciones, pero al
menos debe existir la función main( ).
4. Sentencias: Todas las sentencias terminan en el caracter ';'. El cuerpo de la función
main en nuestro caso, consta únicamente de la invocación de la función printf con un
"string" constante como argumento. La acción de la función printf es la de imprimir en
el dispositivo estándar de salida (en general el monitor)
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 39
Algoritmos y lenguajes de programación Ing. Industrial
3.3.- TIPOS DE DATOS
Hay varios tipos fundamentales de datos y se pueden clasificar en:
- Tipos enteros: short, int, long
- Tipos carácter: char
- Tipos reales: float, double y long double
Cada tipo entero y el tipo char puede ser calificado por las palabras clave signed
o unsigned, lo que da lugar a tener disponibles los siguientes datos extras:
- signed char, unsigned char
- signed short, unsigned short
- signed int, unsigned int
- signed long, unsigned long
Un entero calificado signed es un entero con signo, esto es, un número entero
positivo o negativo. Un número entero calificado unsigned es un número entero sin
signo, el cual es manipulado como un número entero positivo.
Tipo Ancho en bytes Rango
char 1 -128 a 127
short 2 -32768 a 32767
int 2 ¿? -32768 a 32767 ¿?
long 4 -2147483648 a 2147483647
float 4 3.4E-38 a 3.4E+38
double 8 1.7E-308 a 1.7E+308
long double 10 1.1E-4932 a 1.1E+4932
3.4.- IDENTIFICADORES
Un identificador se utiliza para reconocer o darle nombre a una variable, a una
función, etc.
- Debe comenzar con una letra minúscula y no deben contener espacios en blanco.
- Letras, dígitos y caracteres como el guión bajo ( _ ) están permitidos después del
primer carácter.
- No puedes usar una palabra reservada como identificador. He aquí la relación de
palabras reservadas del lenguaje C: auto, break, case, char, const, continue, default, do,
double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed,
sizeof, static, struct, switch, typedef, union, unsigned, void, volatile y while.
- El identificador se debe construir pensando en el dato al que representará o
identificará. Por ejemplo, si queremos almacenar la edad de una persona, el
identificador edad nos dirá más que usar una x para representar le edad de una persona.
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 40
Algoritmos y lenguajes de programación Ing. Industrial
3.5.- ALMACENAMIENTO, DIRECCIONAMIENTO Y REPRESENTACIÓN EN MEMORIA
La memoria es una sucesión de celdas numeradas y una dirección de memoria
no es más que un número entero. La declaración de una variable supone la reserva de
una zona de memoria lo suficientemente grande para albergar su contenido. Cuando
declaramos una variable de tipo int, por ejemplo, se reservan 4 bytes de memoria en los
que se almacenará (codificado en complemento a 2) el valor de dicha variable.
Modificar el valor de la variable mediante una asignación supone modificar el patrón de
32 bits (4 bytes) que hay en esa zona de memoria.
Este programa, por ejemplo,
reserva 8 bytes para albergar dos valores enteros. Imagina que a ocupa los bytes 1000–
1003 y b ocupa los bytes 1004–1007. Podemos representar la memoria así:
Observa que, inicialmente, cuando se reserva la memoria, ésta contiene un
patrón de bits arbitrario. La sentencia a = 0 se interpreta como “almacena el valor 0 en
la dirección de memoria de a”, es decir, “almacena el valor 0 en la dirección de
memoria 1000”. Este es el resultado de ejecutar esa sentencia:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 41
Algoritmos y lenguajes de programación Ing. Industrial
La asignación b = a + 8 se interpreta como “calcula el valor que resulta de sumar
8 al contenido de la dirección de memoria 1000 y deja el resultado en la dirección de
memoria 1004”:
Hemos supuesto que a está en la dirección 1000 y b en la 1004, pero ¿podemos
saber en qué direcciones de memoria se almacenan realmente a y b? Sí: el operador &
permite conocer la dirección de memoria en la que se almacena una variable:
Al ejecutar el programa tenemos en pantalla el siguiente texto (puede que si
ejecutas tú mismo el programa obtengas un resultado diferente):
Normalmente no necesitamos saber en qué dirección de memoria se almacena
una variable, así que no recurriremos a representaciones gráficas tan detalladas como las
que hemos presentado. Usualmente nos conformaremos con representar las variables
mediante cajas y representaremos su valor de una forma más cómodamente legible que
como una secuencia de bits. La representación anterior se simplificará, pues, así:
Las direcciones de memoria de las variables se representarán con flechas que
apuntan a sus correspondientes cajas:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 42
Algoritmos y lenguajes de programación Ing. Industrial
Declaración de variables
Cada variable de un programa debe declararse antes de ser utilizada. La
declaración consiste en enunciar el nombre de la variable y asociarle un tipo. El tipo
determina los valores que puede tomar la variable así como las operaciones que con ella
pueden realizarse. Ejemplo:
int suma, incremento;
char caracter;
Una variable puede ser inicializada cuando se declara. Ejemplo:
char caracter = ‘a’;
int c = 1;
Declaración de constantes
Una constante se declara anteponiendo al identificador la palabra const.
Ejemplo:
const int K = 12;
const char LETRA = ‘Z’;
A una constante no se le puede asignar otro valor, es por ello que al declararla
debe ser inicializada.
Por conveniencia, se recomienda que los nombres de constantes estén integrados
por letras mayúsculas.
3.6.- PROPOSICIÓN DE ASIGNACIÓN
La operación de asignación está representada por el signo =. En una operación
de asignación, el valor de la derecha, es asignado a la variable de la izquierda. Ejemplo:
int n, z;
n = 8;
z = n + 5;
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 43
Algoritmos y lenguajes de programación Ing. Industrial
3.7.- OPERADORES, OPERANDOS Y EXPRESIONES
Los operadores son símbolos que indican como son manipulados los datos. Se
pueden clasificar en los siguientes grupos: aritméticos, lógicos, relacionales, de
asignación y otros.
Operadores aritméticos:
Operador Operación
+ Suma
- Resta
* Multiplicación
/ División
% Módulo
Ejemplo:
int a = 10, b = 3, c;
float x = 2.0, y;
y = x + a; /* el resultado es 12.0 de tipo float */
c = a / b; /* el resultado es 3 de tipo int */
c = a % b; /* el resultado es 1 de tipo int */
y = a / b; /* el resultado es 3 de tipo int. Se convierte a float para asignarlo a y */
Operadores lógicos:
Operador Operación
&& AND. Da como resultado el valor lógico 1 si ambos operandos son
distintos de cero. Si uno de ellos es cero el resultado es el valor
lógico 0. Si el primer operando es igual a cero, el segundo
operando no es evaluado.
|| OR. El resultado es 0 si ambos operandos son 0. Si uno de los
operandos tiene un valor distinto de 0, el resultado es 1. Si el
primer operando es distinto de cero, el segundo operando no es
evaluado.
! NOT. El resultado es 0 si el operando tiene un valor distinto de
cero, y 1 en caso contrario.
Ejemplo:
int p = 10, q = 0;
p && q da como resultado 0
p || q da como resultado 1
!p da como resultado 0
Operadores de relación:
Operador Operación
< Primer operando menor que el segundo.
> Primer operando mayor que el segundo.
<= Primer operando menor o igual que el segundo.
>= Primer operando mayor o igual que el segundo.
== Primer operando igual que el segundo.
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 44
Algoritmos y lenguajes de programación Ing. Industrial
!= Primer operando diferente que el segundo.
Ejemplo:
int p, q;
float x = 15, y = 18, z = 20;
p = x == y; /* resultado p = 0 */
q = (x < y) && (y <= z); /* resultado q = 1 */
Operadores de asignación:
Operador Operación
++ Incremento.
-- Decremento.
= Asignación simple.
*= Multiplicación más asignación.
/= División más asignación.
%= Módulo más asignación.
+= Suma más asignación.
-= Resta más asignación.
Ejemplo:
x++; /* incrementa el valor de x en 1 */
x--; /* decrementa el valor de x en 1 */
i += 2; /* realiza la operación i = i + 2 */
x *= n – 3; /* realiza la operación x = x * (n – 3) y no x = x * n – 3 */
Los operandos son las variables, constantes y funciones que intervienen en una
expresión.
Una expresión es una secuencia de operadores y operandos que especifican una
operación determinada. Ejemplo:
x = 6 + 7;
x = y + 8;
x = y + z;
x = cantidad * precio;
x = 7 * sqrt(a) – b / 2;
x = (4 < 5) && (y <= z);
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 45
Algoritmos y lenguajes de programación Ing. Industrial
3.8.- PRIORIDAD DE OPERADORES, EVALUACIÓN DE EXPRESIONES
Antes de evaluar expresiones es necesario conocer la jerarquía de los
operadores que maneja C:
Operador Significado
( ) Paréntesis
! ++ -- Not, incremento y decremento
* / % Multiplicación, división y módulo
+ - Suma, resta
< <= > >= Menor que, menor o igual que, mayor que, menor o igual que
== != Igual, diferente
&& And
|| Or
= *= /= %=
+= -=
Asignación
Ejemplos de evaluación de expresiones (paso a paso):
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 46
Algoritmos y lenguajes de programación Ing. Industrial
3.9.- ELABORACIÓN DE PROGRAMAS (SECUENCIALES)
Enunciado: Hacer un programa que permita convertir kilogramos en gramos.
1. Inicie Dev-C++
2. Elija el menú Archivo – Nuevo – Archivo Fuente:
3. Escriba en zona de comentario los datos referentes al programa, el autor y la fecha:
4. Escriba una línea después el código siguiente (sin los números de línea):
Las líneas 6 y 7 le indican a C que “incluya” las librerías stdio y conio, las
cuales van a ser utilizadas por nuestro programa.
La línea 11 declara dos variables (kg y gr) de tipo real (float).
La línea 14 imprime un mensaje en la pantalla a través de la sentencia printf.
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 47
Algoritmos y lenguajes de programación Ing. Industrial
La línea 15 lee un valor flotante desde el teclado y lo asigna a la variable kg.
Para ello utiliza a la sentencia scanf.
La línea 18 contiene la expresión que convierte kilogramos en gramos,
colocando el resultado en la variable gr.
La línea 21 imprime los gramos convertidos que se localizan en la variable gr.
La línea 22 permite hacer una pausa para que el usuario pueda visualizar la
pantalla con el resultado. La sentencia getch la proporciona conio.
5. Grabe el programa eligiendo el menú Archivo – Guardar como. En la ventana que
aparece seleccione la carpeta en donde desea guardar su programa y proporciónele un
nombre, en este caso escriba Secuencial1.
6. Ahora proceda a compilar para que el compilador de C nos indique si todo está bien o
si debemos hacer alguna corrección. Para ello elija el menú Ejecutar – Compilar. Si
surge algún error corríjalo y vuelva a realizar este paso.
7. Por último, ejecute el programa eligiendo el menú Ejecutar – Ejecutar. Deberá
aparecer una ventana en donde le solicita introducir los kilogramos. Escriba 3.5 y pulse
enter. El programa calculará los gramos y le dará una salida como esta:
8. Pulse enter para cerrar la ventana anterior y regresar al Dev-C++
9. Para salir del entorno de desarrollo elija el menú Archivo – Salir.
10. Con el explorador de Windows busque y abra la carpeta en donde grabó el
programa.
11. Haga doble click en el archivo Secuencial1 y observe cómo sin necesidad de abrir el
entorno de desarrollo podemos ejecutar un programa previamente compilado:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 48
Algoritmos y lenguajes de programación Ing. Industrial
Tomando como guía el programa anterior construya los siguientes programas:
2. Hacer un programa que calcule e imprima el área de un rectangulo (area = base *
altura).
3. Hacer un programa que calcule e imprima la cantidad de dinero que una persona
pagará por concepto de predial 2015. El predial aumentó 3.5% respecto del pago hecho
en el 2014.
4. Hacer un programa que calcule el promedio obtenido por un alumno sabiendo que
cursó las materias de matemáticas, ciencias naturales y español. La calificación de cada
materia está en el rango de 0 a 100.
5. Un hospital recibirá el presupuesto de gastos para este año y el director general del
hospital desea saber la cantidad de dinero que le otorgará a cada una de las secciones del
hospital, sabiendo que a maternidad le otorgará el 22%, a cirugía el 41%, a medicina
general el 13% y a medicina interna el resto del presupuesto, respectivamente.
6. Realice un programa que calcule e imprima el área de un círculo (area = pi * radio2)
7. Realice un programa que convierta temperaturas de grados Centígrados a grados
Farenheit (farenheit = grados centigrados * 9 / 5 + 32)
8. Realice un programa que calcule el salario semanal final que recibirá un trabajador,
sabiendo que el salario se obtiene de lo que ganó diariamente (de lunes a sábado) y un
bono correspondiente al 13% de lo que ganó.
9. Hacer un programa que permita calcular e imprimir la tabla de un número entero
introducido por el teclado. Ejemplo, si el número introducido fuera un cinco:
5 X 1 = 5
5 X 2 = 10
...
5 X 10 = 50
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 49
Algoritmos y lenguajes de programación Ing. Industrial
APARTADO A “ENTRADA Y SALIDA”
Salida
La función de impresión de información en pantalla utilizada habitualmente es
printf. printf es una función disponible al incluir stdio.h en el programa. En su forma
de uso más simple, printf permite mostrar una cadena por pantalla:
La salida sería:
La función printf no añade un salto de línea automáticamente, si deseas que haya
un salto de línea, deberás escribir \n en el lugar que desees hacer el salto, ejemplo:
La salida sería:
Para imprimir números enteros se utiliza el formato %d, para números flotantes
%f, para un solo carácter %c y para una cadena %s. Ejemplo:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 50
Algoritmos y lenguajes de programación Ing. Industrial
La salida sería:
Observe que el valor real se imprime por default con 6 dígitos después del punto
decimal. Si gustas puedes indicarle al printf que imprima la cantidad de dígitos después
del punto que tu quieras, por ejemplo, 2:
La salida sería:
Observe que inclusive redondea la cantidad.
La sentencia printf tiene muchas más prestaciones, por ejemplo, puedes indicar
si lo que quieres imprimir quede justificado a la izquierda o a la derecha, que maneje un
ancho especificado por ti, que rellene de ceros no significativos, que a los valores
numéricos les anteponga el signo + o -, etc. Queda a tu responsabilidad el investigar
dichas situaciones.
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 51
Algoritmos y lenguajes de programación Ing. Industrial
Entrada
La lectura de datos desde el teclado se realiza a través de la función scanf. La
función scanf lee datos, los interpreta de acuerdo con el formato indicado y los
almacena en las variables especificadas. Cada variable debe ser del tipo especificado en
el formato. Por ejemplo, el siguiente programa lee desde el teclado un entero y un real:
La salida sería:
El formato %c lo utiliza scanf para leer un carácter. Ejemplo:
La salida sería:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 52
Algoritmos y lenguajes de programación Ing. Industrial
Para leer una cadena scanf utiliza el formato %s. Ejemplo:
NOTA: Como una cadena es un arreglo de caracteres, no es necesario anteponer
el símbolo & antes del nombre de la variable, observe que no escribimos &texto, sino
solamente, texto.
La salida sería:
Observe que aunque el usuario escribió la cadena HOLA MUNDO, scanf solo
asignó HOLA a la variable texto. Esto es así porque el formato %s permite tomar de la
entrada todos los caracteres hasta encontrar un espacio en blanco. Si desea que scanf
tome todo el texto incluyendo los espacios entonces utilice el formato %[^\n]. Ejemplo:
La salida sería:
Unidad 3 “Introducción a la programación de un lenguaje estructurado” Pág. 53
Algoritmos y lenguajes de programación Ing. Industrial
Existe otra manera de leer cadenas, utilizando la función gets. Ejemplo:
La salida sería:
Otra manera de leer un carácter es utilizando la función getchar. Ejemplo:
La salida sería:
También pueden leer un carácter con las funciones getch y getche
pertenecientes a la librería conio.h.
getch lee un carácter del teclado sin visualizarlo. getche lee un carácter del
teclado visualizándolo.