Apuntes Unidad 3 de algoritmos y programación

17
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++.

description

aqui encontraras lo requerido para aprender la unidad 2 de programación y algoritmos

Transcript of Apuntes Unidad 3 de algoritmos y programación

Page 1: Apuntes Unidad 3 de algoritmos y programación

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

Page 2: Apuntes Unidad 3 de algoritmos y programación

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)

Page 3: Apuntes Unidad 3 de algoritmos y programación

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.

Page 4: Apuntes Unidad 3 de algoritmos y programación

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:

Page 5: Apuntes Unidad 3 de algoritmos y programación

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:

Page 6: Apuntes Unidad 3 de algoritmos y programación

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;

Page 7: Apuntes Unidad 3 de algoritmos y programación

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.

Page 8: Apuntes Unidad 3 de algoritmos y programación

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);

Page 9: Apuntes Unidad 3 de algoritmos y programación

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):

Page 10: Apuntes Unidad 3 de algoritmos y programación

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.

Page 11: Apuntes Unidad 3 de algoritmos y programación

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:

Page 12: Apuntes Unidad 3 de algoritmos y programación

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

Page 13: Apuntes Unidad 3 de algoritmos y programación

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:

Page 14: Apuntes Unidad 3 de algoritmos y programación

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.

Page 15: Apuntes Unidad 3 de algoritmos y programación

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:

Page 16: Apuntes Unidad 3 de algoritmos y programación

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:

Page 17: Apuntes Unidad 3 de algoritmos y programación

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.