Elementos básicos de la programación estructurada

66
PROGRAMACIÓN ESTRUCTURADA Unidad I. Elementos básicos de la programación estructurada M. en C. Jorge Ochoa Somuano

description

Presentación hecha por el MCC Ochoa Somuano docente de la Universidad del Mar (UMAR).

Transcript of Elementos básicos de la programación estructurada

PROGRAMACIÓN ESTRUCTURADA

Unidad I. Elementos básicos de la programación estructurada

M. en C. Jorge Ochoa Somuano

2

1.1. Lenguajes de programación: características básicas

Los lenguajes de programación se utilizan para escribir programas.

– Lenguajes máquina– Lenguajes de bajo nivel– Lenguajes de alto nivel

M. en C. Jorge Ochoa Somuano

3

1.1. Lenguajes de programación: características básicas

Cada lenguaje de programación tiene un conjunto de instrucciones que la computadora podrá entender directamente en su código máquina o bien se traducirán a dicho código máquina.

M. en C. Jorge Ochoa Somuano

4

1.1. Lenguajes de programación: características básicas

Las instrucciones básicas y comunes en casi todos los lenguajes de programación son:

– Instrucciones de entrada/salida– Instrucciones de cálculo– Instrucciones de control

M. en C. Jorge Ochoa Somuano

5

1.1. Lenguajes de programación: características básicas

El lenguaje C: Historia y características– La popularidad, eficacia y potencia de C, se ha

producido porque este lenguaje no está prácticamente asociado a ningún sistema operativo, ni a ninguna máquina en especial.

– Esta es la razón fundamental, por la cual C, es conocido como el lenguaje de programación de sistemas por excelencia.

M. en C. Jorge Ochoa Somuano

6

1.1. Lenguajes de programación: características básicas

El lenguaje C: Historia y características– Nació en 1978– Es un lenguaje de alto nivel– Es un lenguaje de programación estructurado de

propósito general– Potente y Flexible– Diferentes tipos de compiladores (UNIX, Linux,

MacOS, Solaris, etc.)

M. en C. Jorge Ochoa Somuano

7

1.1. Lenguajes de programación: características básicas

Ventajas de C– Es poderoso y flexible– Es utilizado por programadores profesionales– Se puede utilizar para desarrollar sistemas

operativos, compiladores, sistemas de tiempo real y aplicaciones de comunicaciones

– Portabilidad– Velocidad de ejecución

M. en C. Jorge Ochoa Somuano

8

1.1. Lenguajes de programación: características básicas

Características técnicas de C– Una nueva sintaxis para declarar funciones– Asignación de estructuras y enumeraciones– Preprocesador más sofisticado– Una nueva definición de biblioteca

Acceso al SO Asignación dinámica de memoria Manejo de cadenas de caracteres

M. en C. Jorge Ochoa Somuano

9

1.2. Codificación de algoritmos y diseño de programación

Una vez que se han realizado el análisis y el diseño del algoritmo, se debe pasar a un lenguaje de programación para su ejecución en una computadora.

Lo único que se requiere es el conocimiento de algún lenguaje de programación para una traducción correcta.

M. en C. Jorge Ochoa Somuano

10

1.2.1. Estilos de programación

Un buen estilo para programar deberá tener una estructura de código fácil de entender.

– Nombres significativos para variables, controles, y procedimientos.

– Identación (sangrías) y espacios apropiados en el código. – Documentar el código (poner comentarios para aclarar). – Módulos adaptables. – Minimizar el acoplamiento– Minimizar alcance de los datos hasta donde sea posible.

M. en C. Jorge Ochoa Somuano

11

1.2.2. Estructura general de un programa

Un programa en C se compone de una o más funciones.

Una de las funciones debe ser obligatoriamente main.

Una función en C en un grupo de instrucciones que realizan una o más acciones.

M. en C. Jorge Ochoa Somuano

12

1.2.2. Estructura general de un programa

Así mismo un programa contendrá una serie de directivas #include que permitirán incluir en el mismo archivos de cabecera que a su vez constarán de funciones y datos predefinidos en ellos.

M. en C. Jorge Ochoa Somuano

13

1.2.2. Estructura general de un programa

#include --- Directivas del procesador

#define --- Macros del procesador

Declaraciones globales prototipos de funciones variables

Función principal mainmain () {

declaraciones localessentencias

}

Definiciones de otras funcionestipo1 func1 (…){

…}

M. en C. Jorge Ochoa Somuano

14

1.2.2. Estructura general de un programa

De un modo más explicito, un programa en C puede incluir:– Directivas de procesador– Declaraciones globales– La función main; int main ();– Funciones definidas por el usuario– Comentarios del programa

M. en C. Jorge Ochoa Somuano

15

1.2.2.1. Tipos de datos y operadores

C no soporta un gran número de tipos de datos predefinidos, pero tiene la capacidad para crear sus propios tipos de datos.

Todos los tipos de datos simples o básicos de C son, esencialmente números.– Enteros– Números de coma flotante (reales)– Caracteres

M. en C. Jorge Ochoa Somuano

16

1.2.2.1. Tipos de datos y operadores

Tipo Ejemplo Tamaño en bytes

Rango

Mín .. Máxchar ‘C’ 1 0 .. 255

short -15 2 -128 .. 127

int 1024 2 -32768 .. 32767

unsigned int 42325 2 0 .. 65535

long 262144 4 -214748648 .. 2147483647

float 10.5 4 3.4*(10-38) .. 3.4*(1038)

double 0.00045 8 1.7*(10-308) .. 1.7*(10308)

long double 1e-8 8 igual que doubleM. en C. Jorge Ochoa Somuano

17

1.2.2.1. Tipos de datos y operadores

Operador de asignación– El operador = asigna el valor de la expresión

derecha de la variable situada a su izquierda codigo = 3467; fahrenheit = 123.456 coordX = 25 coordY = 75

– Permite realizar asignaciones múltiples: a = b = c = 45;

M. en C. Jorge Ochoa Somuano

18

1.2.2.1. Tipos de datos y operadores

Operador de asignación– Proporciona cinco operadores adicionales

Símbolo Sent. Abrev. Sent. No abrev.

= a = b; a = b;

*= a *= b; a = a * b;

/= a /= b; a = a / b;

%= a %= b; a = a % b;

*= a += b; a = a + b;

-= a -= b; a = a - b;M. en C. Jorge Ochoa Somuano

19

1.2.2.1. Tipos de datos y operadores

Operadores aritméticos– Sirven para realizar operaciones aritméticas

básicas

– Siguen las reglas algebraicas típicas de jerarquía o prioridad

– Las expresiones interiores a paréntesis se evalúan primero

M. en C. Jorge Ochoa Somuano

20

1.2.2.1. Tipos de datos y operadores

Operadores aritméticos– Precedencia de operadores

Operador Operación Nivel de precedencia

+ , - +25, -6.75 1

*, /, % 5 * 5 es 25

25 / 5 es 5

25 % 6 es 1

2

+, - 2 + 3 es 5

2 – 3 es -1

3

M. en C. Jorge Ochoa Somuano

21

1.2.2.1. Tipos de datos y operadores

Operadores aritméticos - Asociatividad– La asociatividad determina el orden en que se

agrupan los operadores de igual prioridad.

x – y + z se agrupa como (x – y) + z Tiene asiciatividad de izquierda a derecha

x = y = z se agrupa como x = (y = z) Tiene asociatividad de derecha a izquierda

M. en C. Jorge Ochoa Somuano

22

1.2.2.1. Tipos de datos y operadores

Operadores aritméticos – Uso de paréntesis– Se pueden utilizar para cambiar el orden usual de

evaluación de una expresión determinada por su prioridad y asociatividad.

– En caso de existir se evalúan primero los paréntesis más internos.

– Ejemplo: (7 * (10 – 5) % 3) * 4 + 9

M. en C. Jorge Ochoa Somuano

23

1.2.2.1. Tipos de datos y operadores

Operadores de incremento y decremento

– Suman o restan 1 a su argumento, respectivamente cada vez que se aplican a una variable.

Incremento Decremento

n++ n--

n += 1 n -= 1

n = n + 1 n = n - 1

M. en C. Jorge Ochoa Somuano

24

1.2.2.1. Tipos de datos y operadores

Operadores de incremento y decremento– Estos operadores tienen la propiedad de que

pueden utilizarse como sufijo o prefijo

– El resultado de las expresiones puede ser distinto, dependiendo del contexto.

Ejemplo: m = n++;m = ++n;

M. en C. Jorge Ochoa Somuano

25

1.2.2.1. Tipos de datos y operadores

Operadores relacionales– C no tiene tipos de datos lógicos para representar

los valores verdadero y falso.

– Se utiliza el tipo int para este propósito, con el valor entero 0 que representa falso y distinto de cero a verdadero.

M. en C. Jorge Ochoa Somuano

26

1.2.2.1. Tipos de datos y operadores

Operadores relacionales– Normalmente se utilizan en sentencias de selección o

iteración.

Operador Significado Ejemplo== Igual a a == b

!= No igual a a != b

> Mayor que a > b

< Menor que a < b

>= Mayor o igual que a >= b

<= Menor o igual que a <= bM. en C. Jorge Ochoa Somuano

27

1.2.2.1. Tipos de datos y operadores

Operadores lógicos– Estos operadores se utilizan con expresiones

para devolver un valor verdadero o un valor falso.– Los operadores lógicos se denominan también

operadores booleanos.– Los operadores lógicos de C son:

! (not) && (and) || (or)

M. en C. Jorge Ochoa Somuano

28

1.2.2.2. Constantes, variables y expresiones

En C existen cuatro tipos de constantes– Constantes literales

– Constantes definidas

– Constantes enumeradas

– Constantes declaradas

M. en C. Jorge Ochoa Somuano

29

1.2.2.2. Constantes, variables y expresiones

Constantes literales– Se clasifican en cuatro grupos

Constantes enteras

Constantes caracteres

Constantes de coma flotante

Constantes de cadena

M. en C. Jorge Ochoa Somuano

30

1.2.2.2. Constantes, variables y expresiones

Constantes literales - enteras– Requieren seguir unas determinadas reglas

No utilizar nunca comas ni otros signos de puntuación Para forzar un valor al tipo long terminar con una letra l o L

– 1024 1024L Para forzar un valor al tipo unsigned, terminarlo con una letra

mayúscula U– 4253U

Para representar un entero en octal, debe estar precedido de 0– 0777

Para representar un entero en hexadecimal, debe estar precedido de 0x

– 0xFF3A Se pueden combinar sufijos

– 3456UL

M. en C. Jorge Ochoa Somuano

31

1.2.2.2. Constantes, variables y expresiones

Constantes literales – reales– Siempre tienen signo y representan

aproximaciones en lugar de valores exactos. 82.345 .87 42e4 3E-5

– La notación científica se representa con un exponente positivo o negativo

2.5E4 equivale a 25000 5.435E-3 equivale a 0.005435

– Existen tres tipos de constantes float double long double

M. en C. Jorge Ochoa Somuano

32

1.2.2.2. Constantes, variables y expresiones

Constantes literales – carácter– Una constante carácter es un carácter del código

ASCII encerrado entre apostrofes. ‘a’ ‘B’ ‘c’

– Se pueden también representar caracteres que no están en el teclado

char sigma = ‘\xE4’;

M. en C. Jorge Ochoa Somuano

33

1.2.2.2. Constantes, variables y expresiones

Constantes literales – cadena– Una constante cadena también llamada literal

cadena, es una secuencia de caracteres encerrados entre dobles comillas.

– En memoria, las cadenas se representan por un a serie de caracteres ASCII más un 0 o un nulo.

– Para representar valores nulos, C define el símbolo NULL como una constante.

M. en C. Jorge Ochoa Somuano

34

1.2.2.2. Constantes, variables y expresiones

Constantes definidas (simbólicas)– Las constantes pueden recibir nombres

simbólicos mediante la directiva #define #define NUEVALINEA \n

#define PI 3.1416

#define VALOR 54

– Las líneas anteriores no son sentencias.

M. en C. Jorge Ochoa Somuano

35

1.2.2.2. Constantes, variables y expresiones

Constantes enumeradas– Permiten crear listas de elementos afines

enum Colores {Rojo, Naranja, Amarillo, Verde, Azul};

enum Boolean { False, True };

– Después de declarar un tipo de dato enumerado, se pueden declarar variables de ese tipo.

enum Boolean Interruptor = True;

M. en C. Jorge Ochoa Somuano

36

1.2.2.2. Constantes, variables y expresiones

Constantes declaradas– La palabra reservada const permite dar nombres

a constantes y especifica que el valor de dicha variable no se puede modificar durante el programa.

– La palabra volatile actúa como const, pero su valor puede ser modificado no solo por el programa, sino también por el HW o SW del sistema.

M. en C. Jorge Ochoa Somuano

37

1.2.2.2. Constantes, variables y expresiones

Diferencias entre const y #define– Las definiciones const especifican tipos de datos,

terminan con punto y coma y se inicializan como las variables.

– La directiva #define no especifica tipos de datos, no utiliza el operador de asignación y no termina con punto y coma.

M. en C. Jorge Ochoa Somuano

38

1.2.2.2. Constantes, variables y expresiones

En C una variable es una posición con nombre en memoria donde se almacena un valor de un cierto tipo de dato.

Toda variable utilizada en un programa debe ser declarada previamente.

La definición en C debe situarse al principio del bloque, antes de toda sentencia ejecutable.

M. en C. Jorge Ochoa Somuano

39

1.2.2.2. Constantes, variables y expresiones

Una declaración de una variable es una sentencia que proporciona información de la variable al compilador.

Sintaxis:– tipo variable

tipo es el nombre de un tipo de dato en Cvariable es un identificador válido en C

Ejemplos:– Long dNumero– Double HorasAcumuladas– Float NotaMedia

M. en C. Jorge Ochoa Somuano

40

1.2.2.2. Constantes, variables y expresiones

El formato general de una declaración de inicialización es:– Tipo nombre_variable = expresión;

expresión es cualquier expresión válida cuyo valor es del mismo tipo que tipo

char respuesta = ‘s’;int contador = 1;float peso = 86.3;

M. en C. Jorge Ochoa Somuano

41

1.2.2.2. Constantes, variables y expresiones

Duración de una variable– El ámbito o alcance de una variable se extiende

hasta los limites de la definición de su bloque.– Los tipos básicos de variables en C son:

Variables locales

Variables globales

Variables dinámicas

M. en C. Jorge Ochoa Somuano

42

1.2.2.2. Constantes, variables y expresiones

Variables locales– Son aquellas definidas en el interior de una

función y son visibles sólo en esa función específica. Las reglas son:

No pueden ser modif. por ninguna sentencia externa

Los nombres no han de ser únicos

No existen en memoria hasta que se ejecuta la función

Se liberan automáticamente cuando termina la función

M. en C. Jorge Ochoa Somuano

43

1.2.2.2. Constantes, variables y expresiones

Variables locales - Ejemplo

#include <stdio.h>

main () {int a, b, c, suma, numero; /* variables locales */printf (“Cuantos números a sumar:”);scanf (“%d”, &numero);

…suma = a+b+c;

…}

M. en C. Jorge Ochoa Somuano

44

1.2.2.2. Constantes, variables y expresiones

Variables globales– Son aquellas que se declaran fuera de la función y por

defecto son visibles a cualquier función, incluyendo main ().

#include <stdio.h>

int a, b, c; /* declaración de variables globales */

main () {int valor; /* declaración de una variable local */printf (“Tres valores: ”);scanf (“%d %d %d”, &a, &b, &c);valor = a+b+c;

…}

M. en C. Jorge Ochoa Somuano

45

1.2.2.2. Constantes, variables y expresiones

Variables dinámicas– Al igual que una variable local, una variable

dinámica se crea y libera durante la ejecución del programa.

– La diferencia entre una variable local y una dinámica es que la variable dinámica se crea tras su petición.

– Al igual que una variable global se pueden crear variables dinámicas que son accesibles desde múltiples funciones.

M. en C. Jorge Ochoa Somuano

46

1.2.2.3. Identificadores y palabras reservadas

Un identificador es una secuencia de caracteres, letras, dígitos y subrayados (_). El primer carácter debe ser una letra o _. Las letras mayúsculas y minúsculas son diferentes.

– Nombre_clase– Indice– indice– i– a

M. en C. Jorge Ochoa Somuano

47

1.2.2.3. Identificadores y palabras reservadas

Recomendaciones al escribir identificadores:

– Escribir identificadores de variables en letras minúsculas.

– Escribir constantes en mayúsculas.

– Escribir funciones con tipo de letra mixto

M. en C. Jorge Ochoa Somuano

48

1.2.2.3. Identificadores y palabras reservadas

Una palabra reservada (keyword) es una característica del lenguaje C asociada con algún significado especial.

Una palabra reservada no puede utilizarse como nombre de identificador o función.

void void () {…int char;…

}

M. en C. Jorge Ochoa Somuano

49

1.2.2.3. Identificadores y palabras reservadas

Palabras reservadas en C

auto double int struct

break else long switch

case enum register typedef

char extern return union

const float short unsigned

continue for signed void

default goto sizeof volatile

do if static while

M. en C. Jorge Ochoa Somuano

50

1.2.2.4. Sintaxis del lenguaje de programación

Tokens– Identificadores, palabras reservadas, literales,

operadores y otros separadores.

Comentarios Signos de puntuación y separadores

– ! % ^ & * ( ) - + = { } ~ [ ] \ ; ‘ : < > ? , . / “

Archivos de cabecera Tipos de datos Entradas y salidas

M. en C. Jorge Ochoa Somuano

51

1.2.2.4. Sintaxis del lenguaje de programación

Salida– La función printf () visualiza en la pantalla datos

del programa.

suma = 0;

suma = suma + 10;

printf (“%s %d”, “Suma= “, suma);

M. en C. Jorge Ochoa Somuano

52

1.2.2.4. Sintaxis del lenguaje de programación

La forma general qque tiene la función printf () es:

printf (cadena_de_control, dato1, dato2, …);

cadena_de_control contiene los tipos de los datos y forma de mostrarlos

dato1, dato2, … variables, constantes, datos de salida

M. en C. Jorge Ochoa Somuano

53

1.2.2.4. Sintaxis del lenguaje de programación

Suponiendo que:

i = 11; j = 12; c = ‘A’; n = 40.791512

printf (“%x %3d %c %.3f”, i, j, c, n);

Visualizaría en pantalla:

B 12 A 40.792

M. en C. Jorge Ochoa Somuano

54

1.2.2.4. Sintaxis del lenguaje de programación

Los códigos de formato más utilizados

%d El dato se convierte a entero decimal. %o El dato entero se convierte a octal. %x El dato entero se convierte a hexadecimal. %u El dato entero se convierte a entero sin signo. %c El dato se considera de tipo carácter. %e El dato se considera de tipo float. Se convierte a notación científica. %f El dato se considera de tipo float. Se convierte a notación decimal. %g El dato se considera de tipo float. Se conv. según el código %e o %f. %s El dato ha de ser una cadena de caracteres. %lf el dato se considera de tipo double.

M. en C. Jorge Ochoa Somuano

55

1.2.2.4. Sintaxis del lenguaje de programación

Caracteres de secuencias de escape \a alarma \b Retroceso de espacio \f Avance de página \n Retorno de carro y avance de línea \r Retorno de carro \t Tabulación \v Tabulación vertical \\ Barra invertida \? Signo de interrogación \” Comillas dobles \000 Número octal \xhh Número hexadecimal \0 Cero o nulo

M. en C. Jorge Ochoa Somuano

56

1.2.2.4. Sintaxis del lenguaje de programación

Ejemplos

printf (“\n”);

printf (“\n Tabla de números \n”);

printf (“\nNum1 \t Num2 \t Num3 \n”);

printf (“%c”, ‘\a’);

M. en C. Jorge Ochoa Somuano

57

1.2.2.4. Sintaxis del lenguaje de programación

Funcionamiento de las secuencias de escape.

#include <stdio.h>

main () { char sonidos = ‘\a’; char bs = ‘\b’;

printf (“%c%c”, sonidos, sonidos); printf (“ZZ”); printf (“%c%c”, bs, bs);

getch ();}

M. en C. Jorge Ochoa Somuano

58

1.2.2.4. Sintaxis del lenguaje de programación

Entrada– La función scanf () acepta información del

teclado.– La forma general que tiene la función scanf () es:

scanf (cadena_de_control, var1, var2, var3, …);

cadena_de_control contiene los tipos de los datos y si se desea su anchura

var1, var2, var3, … variables del tipo de los códigos de control.

Los argumentos var1, var2, … necesitan el operador de dirección &.

M. en C. Jorge Ochoa Somuano

59

1.2.2.4. Sintaxis del lenguaje de programación

Ejemplosprintf (“Introduzca v1 y v2: “);scanf (“%d %f”, &v1, &v2); /*lectura de valores*/

printf (“Precio de venta al público”);scanf (“%f”, &precio_venta);

printf (“Base y altura: ”);scanf (“%f %f”, &b, &h);

M. en C. Jorge Ochoa Somuano

60

1.2.2.4. Sintaxis del lenguaje de programación

Funcionamiento

#include <stdio.h>main () { char primero, ultimo; printf (“Introduzca su primera y última inicial: ”); scanf (“%c %c”, &primero, &ultimo); printf (“Hola, %c. %c. \n”, primero, ultimo); getch ();}

M. en C. Jorge Ochoa Somuano

61

1.2.2.4. Sintaxis del lenguaje de programación

Salida de cadena de caracteresLa función puts () escribe una cadena de caracteres en la salida estándar y añade el fin de línea. Sólo tiene un argumento.

Ejemplo:

puts (nombre);

printf (“%s\n”, nombre);

M. en C. Jorge Ochoa Somuano

62

1.2.2.4. Sintaxis del lenguaje de programación

Entrada de cadena de caracteresLa función gets () capta una cadena de caracteres del dispositivo estándar de entrada. Termina la entrada con un retorno de carro.

Ejemplo:

gets (nombre);

scanf (“%s”, &nombre);

M. en C. Jorge Ochoa Somuano

63

Temas vistos sin diapositivas

1.3 Captura de programas1.3.1. Entorno de edición

1.4 Compilación y ejecución1.4.1. Corrección de errores

1.4.2. Depuración y puesta a punto del programa

M. en C. Jorge Ochoa Somuano

64

1.5. Documentación de programas

Interna– Se incluye dentro del código del programa

fuente mediante comentarios que ayudan a la comprensión del código.

– Se recomienda que se incluya el mayor número de comentarios posibles, pero, que sean significativos.

M. en C. Jorge Ochoa Somuano

65

1.5. Documentación de programas

Comentarios– Los comentarios se encierran entre /* y */

/* Titulo: Ejemplo de un comentario */

/* Este es un ejemplo con varias líneas

de texto para el comentario */

M. en C. Jorge Ochoa Somuano

66

1.5. Documentación de programas

Encabezado para sus programas

/*--------------------------------------------

Archivo:

Nombre:

Fecha:

Descripción:

----------------------------------------------*/

M. en C. Jorge Ochoa Somuano