Upload
13scorpio87
View
9.619
Download
55
Embed Size (px)
DESCRIPTION
Presentación hecha por el MCC Ochoa Somuano docente de la Universidad del Mar (UMAR).
Citation preview
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