ANALISIS DE PROBLEMAS SOLUCIONES LOGICAS PREPARAR CAFÉ UTILIZANDO COMO HERRAMIENTA UNA CAFETERA ELECTRICA. Prof. Dra. ADDYS DE LAM
OBJETIVO ANALIZAR PROBLEMAS DE LA VIDA RUTINARIA PARA ENCONTRAR LAS DIFERENTES PARTES NECESARIAS PARA SU SOLUCION, ASOCIADAS A LA SOLUCION DE PROBLEMAS POR MEDIO DE LA PROGRAMACION. Prof. Dra. ADDYS DE LAM
Preparar Café en Cafetera Eléctrica Elementos Ahh!!! necesito Herramientas Procedimientos Prof. Dra. ADDYS DE LAM
Elementos Herramientas Procedimientos Materia Prima Café preparado Herramientas Depósitos Resultados Procedimientos Instrucciones (Procesos) Prof. Dra. ADDYS DE LAM
Materia Prima Depósitos Instrucciones (procesos) Resultados Datos Entradas Depósitos Áreas de Almacenamiento Espacio de Memoria Procesos aritméticos / lógicos Instrucciones (procesos) Declaraciones Resultados Salidas Prof. Dra. ADDYS DE LAM
PASOS PARA RESOLVER UN PROBLEMA OBJETIVOS: DEFINIR CONCEPTOS BASICOS DE PROGRAMACION. DESCRIBIR LOS PASOS PARA RESOLVER UN PROBLEMA UTILIZANDO AL COMPUTADOR COMO HERRAMIENTA DE APOYO. Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación 2 Definición Análisis ¿Cuál es el problema? E - P - S Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación Algoritmo Prueba de Escritorio Pseudocódigo Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación Codificación Traducción Compilación 1 no Compilación Prog. Fuente Errores sintaxis si Prog. Compilador Lista fuente con errores de sintaxis Lenguaje C Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación Ejecución 2 1 si Enlace Ejecución Errores ejecución Prog. Objeto Prog. Ejec. en leng. máquina no Resultados Datos Listado fuente Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación Verificación Implementación Procedimientos, entrenamiento en uso Datos Resultados Fuente Prof. Dra. ADDYS DE LAM
Ciclo de Vida de La Programación Mantenimiento Documentación Modificaciones, actualizaciones Interna (codificación) Externa Prof. Dra. ADDYS DE LAM
Elementos Café Azucar che leche Agua Leche Prof. Dra. ADDYS DE LAM
Herramientas Contenedor de agua Cafetera Contenedor del café en polvo Taza Contenedor del café líquido Taza para la leche Cucharita Prof. Dra. ADDYS DE LAM
Forma de Preparar un Café Procedimientos Instrucciones Uso de Cafetera Forma de Preparar un Café Prof. Dra. ADDYS DE LAM
Entradas “Cálculo de 3 Valores” Tipos de Datos Entradas x ----- x Alfanumérico 9 ----- 9 Enteros 9 ----- 9.99 Reales V1 entero V2 entero V3 entero Identificadores Prof. Dra. ADDYS DE LAM
Enunciado del problema Obtenga el promedio de tres valores enteros y presente los resultados bajo el siguiente formato: Universidad Tecnológica de Panamá Facultad de Ing. de Sistemas Computacionales Cálculo de Promedio Pág.. 99 Fecha: 99/99/99 Valor 1 Valor 2 Valor 3 Promedio 9---9 9---9 9---9 9---9.99 9---9 Cantidad de procesados Prof. Dra. ADDYS DE LAM
Procesos Promedio valores / total de valores prom (v1 + v2 + v3)/3 Prof. Dra. ADDYS DE LAM
Salidas Universidad Tecnológica de Panamá Fac. Ing. de Sistemas Computacionales Encabezado Cálculo de Promedio Fecha: 99/99/99 Pág.. 99 Valor 1 Valor 2 Valor 3 Promedio 9---9 9---9 9---9 9---9.99 Detalles Totales Cantidad de procesados 9---9 Entradas Procesos Prof. Dra. ADDYS DE LAM
Ejemplo: “Obtención del promedio de tres valores dados por el usuario” Algoritmo Inicio /*Declaración de variables*/ Real: prom Enteros: v1, v2, v3 /*Entrada de los tres valores*/ Visualizar(“Entre los tres valores”) Leer(v1,v2,v3) /*Calculo del promedio*/ prom=(v1+v2+v3)/3 /*Salida de resultados*/ Visualizar(“Valor 1, Valor 2, Valor 3, Promedio”) Visualizar(v1, v2, v3, prom) Fin Prof. Dra. ADDYS DE LAM
Programa #include <stdio.h> main() { /*Declaracion de variables*/ float prom; int v1,v2,v3; /*Entrada de los tres valores*/ printf (“Entre los tres valores:”); scanf (“%i %i %i”, &v1, &v2, &v3); /*Calculo del promedio*/ prom=(v1+v2+v3)/3; /*Salida de resultados*/ printf(“\n \t Valor 1 \t Valor 2 \t Valor 3 \t Promedio \n”); printf(“\t %i \t %i \t %i \t %5.2f”, v1, v2, v3, prom); } Prof. Dra. ADDYS DE LAM
Objetivos • Conocer el entorno del Lenguaje C. Conocer los elementos básicos del C. Manejar los diferentes tipos de datos. Definir constantes. Comprender los conceptos sobre constantes y variables. Conocer los diferentes operadores del C y cómo se construyen las expresiones. Prof. Dra. ADDYS DE LAM
INTRODUCCIÓN AL LENGUAJE C FUE DESARROLLADO EN LOS AÑOS 70 POR DENNIS RITCHIE EN LOS LABORATORIOS BELL. ES EL RESULTADO DE DOS LENGUAJES ANTERIORES, BCPL Y B. FUE DISEÑADO PARA EL DESARROLLO DE SISTEMAS OPERATIVOS (UNIX), SIN EMBARGO POSEE CARACTERÍSTICAS ESTRUCTURADAS DE ALTO NIVEL LO QUE PERMITE DESARROLLAR PROGRAMAS DE APLICACIÓN. SE DIO A CONOCER EN 1978 POR LA PUBLICACIÓN DE BRAIN KERNIGHAN Y RITCHIE. Prof. Dra. ADDYS DE LAM
INTRODUCCIÓN AL LENGUAJE C C ES UN LENGUAJE DE PROGRAMACIÓN ESTRUCTURADO DE PROPÓSITOS GENERALES. SE PUEDEN DESARROLLAR PROGRAMAS FUENTES CONCISOS, POR SU GRAN NÚMERO DE OPERADORES. TIENE UN CONJUNTO DE INSTRUCCIONES RELATIVAMENTE PEQUEÑO, PERO INCLUYE NUMEROSAS FUNCIONES DE BIBLIOTECA QUE MEJORAN LAS INSTRUCCIONES BÁSICAS. LOS PROGRAMAS SON PORTABLES, SE PUEDEN COMPILAR Y EJECUTAR EN MUCHAS COMPUTADORAS DIFERENTES CON MUY POCA MODIFICACIÓN. Prof. Dra. ADDYS DE LAM
El ENTORNO DE C EDITOR: PERMITE INTRODUCIR Y MODIFICAR EL CODIGO FUENTE C. COMPILADOR: ES EL PROGRAMA QUE CONVIERTE EL FUENTE C EN UN CODIGO ENTENDIBLE POR EL COMPUTADOR. ARCHIVOS PARA INCLUIR: ARCHIVOS SEPARADOS (INCLUDE) QUE FUEDEN SER UTILES EN CIERTAS SITUACIONES. ARCHIVOS DE BIBLIOTECAS: PROGRAMAS PREVIAMENTE COMPILADOS QUE REALIZAN FUNCIONES ESPECIFICAS. ENLAZADOR: COMBINA TODAS LAS PARTES NECESARIAS ( TALES COMO ARCHIVOS DE BIBLIOTECA) DE UN PROGRAMA C PARA PRODUCIR EL CODIGO EJECUTABLE FINAL. Prof. Dra. ADDYS DE LAM
ESTRUCTURA DE UN PROGRAMA EN C CONSTA DE UNA O MÁS FUNCIONES, UNA DE LAS CUALES SE LLAMA main. CADA FUNCIÓN DEBE CONTENER: CABECERA DE LA FUNCIÓN, QUE CONSTA DEL NOMBRE DE LA FUNCIÓN SEGUIDO DE LA LISTA OPCIONAL DE ARGUMENTOS ENCERRADOS EN PARÉNTESIS. LISTA DE DECLARACIONES DE ARGUMENTOS. SENTENCIA COMPUESTA, ENCERRADA CON UN PAR DE LLAVES { }. Prof. Dra. ADDYS DE LAM
ESTRUCTURA DE UN PROGRAMA EN C LAS SENTENCIAS DE EXPRESIÓN DEBEN TERMINAR EN PUNTO Y COMA (;). LOS COMENTARIOS PUEDEN APARECER EN CUALQUIER PARTE DEL PROGRAMA DELIMITADOS POR /* */. EJEMPLO: /*MI PRIMER COMENTARIO EN C*/ PUEDE USAR MAYÚSCULA O MINÚSCULA, AUNQUE ES COSTUMBRE ESCRIBIR EN MINÚSCULA LAS INSTRUCCIONES ORDINARIAS. MAYÚSCULA Y MINÚSCULA NO SON EQUIVALENTES EN C. Prof. Dra. ADDYS DE LAM
Main Función 1 Función 2 Función 3 Biblioteca Prof. Dra. ADDYS DE LAM
Biblioteca stdio.h math.h conio.h time.h . . . puts printf abs clrscr getdate gets getchar ceil gotoxy gettime cos textcolor getch putchar setdate exp window . . . settime scanf sqrt textbackground time fmod . . . Prof. Dra. ADDYS DE LAM . . . . . .
PROGRAMA SENCILLO EJEMPLO #include <stdio.h> /* Este programa solo visualiza un mensaje en la pantalla del computador */ main ( ) { puts("Bienvenidos al mundo del C"); printf (“ Este es mi primer programa en C”); } Prof. Dra. ADDYS DE LAM
ELEMENTOS BASICOS IDENTIFICADORES Nombres de constantes, variables, tipos, funciones y etiquetas de un programa. SINTAXIS: letra/_[letra/dígito/_]....... cualquier número de caracteres ( 31 significativos). EJEMPLO: suma calculo_promedio _ordenar ab123 Prof. Dra. ADDYS DE LAM
ELEMENTOS BASICOS PALABRAS CLAVES Identificadores predefinidos con significado especial para el compilador C. auto break case char const continue defaul do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while far fortran huge near pascal Las palabras claves deben escribirse en minúscula Prof. Dra. ADDYS DE LAM
ELEMENTOS BASICOS CARACTERES DEL C. Letras mayúsculas: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z Letras minúsculas: a b c d e f g h i j k l m n o p q r s t u v w x y z Dígitos decimales: 0 1 2 3 4 5 6 7 8 9 Carácter de subrayado: _ Carácter de espacio en blanco: espacio,tab,retorno de carro,avance de página,tab vertical y nueva línea. Carácteres especiales y signos de puntuación: , . ; ;: ?’”( ) [ ] { } < ! | / \ ~+ # % & ^ * - = > Prof. Dra. ADDYS DE LAM
TIPOS DE DATOS BASICOS: TIPOS ENTEROS: char, int, short, long, signed, unsigned y enum TIPOS REALES: float, double, long double OTROS TIPOS: poiters, arrays, struct TIPOS ENTEROS char: ( caracter --- 1byte ) enteros de -128 a 127 ASCII unsigned char: valor de 0 a 255 Ejemplo: char car; char abreviación de signed char. Prof. Dra. ADDYS DE LAM
int: ( entero) máquina de 16 bits -32768 a 32767 unsigned int 0 a 65535 Ejemplo: int n,x; int abreviación de signed int. short: ( entero corto -- 2 bytes ) -32768 a 32767 unsigned short 0 a 65535 Ejemplo: short i, j; short abreviación de signed short int long: ( entero largo -- 4 bytes) -2E31 a 2E31-1 unsigned long 0 a 4294967295 Ejemplo: long n ; long abreviación de signed long int Prof. Dra. ADDYS DE LAM
Ejemplo: enum dia_semana { lunes, martes, miercoles, enum: tipo enumerado. Ejemplo: enum dia_semana { lunes, martes, miercoles, jueves, viernes, sabado, domingo } hoy; enum dia_semana ayer; valor ordinal de lunes es 0. Ejemplo2: enum dia_semana { lunes = 1, martes, miercoles, valor ordinal de martes es 2. Prof. Dra. ADDYS DE LAM
TIPO REAL float: (simple precisión -- 4 bytes) hasta 7 dígitos significativos. negativos: -3.402823E+38 a -1.40129E-45 positivos: 1.40129E-45 a 3.402823E+38 double: ( doble precisión -- 8 bytes) hasta 15 dígitos negativos : - 1.79769313486231E+38 a - 4.94065E-324 positivos : 4.94065E-324 a 1.797693134862316E+308 long double: ( doble precisión largos -- 8 bytes) Precisión extendida -- depende del compilador. Prof. Dra. ADDYS DE LAM
TIPOS ADICIONALES DE DATOS pointers: ( punteros) dirección de memoria que apunta a un objeto. Ejemplo : int *p ; struct: variables que representan registros. Ejemplo: struct { float a, b; } complejo; struct persona char nombre[20]; long dni; }; struct persona reg; Prof. Dra. ADDYS DE LAM
union: representan registros variables ( alterna varios tipos ). Ejemplos; : union tipo_union { char var1; int var2; float var3; }; union tipo_union var_union; arrays: conjunto de objetos del mismo tipo. Ejemplo: int lista[40]; /* lista[0] a lista[39] */ Prof. Dra. ADDYS DE LAM
Declaración de variables o parámetros main() { int entero1, entero2; char caracter1, c, car2; float real1, r2; double d1, d2; short int s; long int entero_largo; unsigned char cc; } Prof. Dra. ADDYS DE LAM
NÚMEROS, CARACTER, CADENA DE CARACTERES. CONSTANTES EN C NÚMEROS, CARACTER, CADENA DE CARACTERES. CONSTANTES ENTERAS: pueden ser de base 10,8,16 Decimal: uno o más dígito ( 0..9), el primero distinto de 0, signo +,-. Ejemplo : 256 Octal: uno o más dígitos ( 0..7), precedidos por 0. Ejemplo: 0400 Hexadecimal: uno o más caracteres ( 0..9; A..F), precedidos por 0x o 0X. Ejemplo: 0x100 Prof. Dra. ADDYS DE LAM
Formato: [ dígitos][.dígitos][E/e[+/-]dígitos] CONSTANTES REALES: Formato: [ dígitos][.dígitos][E/e[+/-]dígitos] dígitos: 0..9 E/e: símbolo de exponente Ejemplos: 17.24 , .008E3, 27e-3, -0.025 CONSTANTES DE UN SOLO CARACTER: Encerradas entre ‘ ‘ ( comillas simples) Ejemplos: ‘ ‘ , ‘x’, ‘\n’ CONSTANTES DE CARACTERES: Encerradas entre “ “ ( comillas dobles). Ejemplos: - “ Entre un numero” - “ Esta cadena de caracteres es dema\ siado larga” - printf (“Primera cadena,” “Segunda cadena”); Prof. Dra. ADDYS DE LAM
SECUENCIA DE ESCAPE DE C Representan caracteres no imprimibles CARACTER SECUENCIA VALOR ASCI Sonido (bell) \a 007 Backspace \b 008 Tab horizontal \t 009 Tab vertical \v 011 Nueva línea \n 010 Form feed \f 012 Retorno del carro \r 013 Comillas (“) \” 034 Apóstrofo (‘) \’ 039 Interrogación ( ?) \? 063 Backslash ( \ ) \\ 092 Nulo \0 000 d=dígito octal \ddd h=dígito hexadecimal \xhh x ó X Ejemplo: letra ‘A’ = 065 ASCII = \’101’ octal = \’x41’ Prof. Dra. ADDYS DE LAM
CONSTANTES SIMBOLICAS: Nombre que sustituye una secuencia de caracteres ( constante numérica, carácter, cadena de caracteres). Cuando el programa se compila, las constantes simbólicas se reemplazan por su correspondiente secuencia de caracteres. Se definen al comienzo del programa. Formato: #define Nombre Texto - Nombre representa un nombre simbólico. - Texto representa la secuencia de caracteres asociada al nombre. - No se coloca ; al final ya que no es una verdadera sentencia de C. Prof. Dra. ADDYS DE LAM
CONSTANTES SIMBOLICAS: Ejemplo: #define INTERES 0.23 #define PI 3.141593 #define CIERTO 1 #define AMIGA “Marta” { ………. area = PI *radio*radio area = 3.141593*radio*radio } Prof. Dra. ADDYS DE LAM
COMO NOMBRAR CONSTANTES CON EL MODIFICADOR CONST Cuando inicializamos una variable dentro de una declaración, podemos marcar la variable de modo que el programa no pueda alterar su valor. Por ello, anteponemos la palabra const a la declaración. Const es un modificador de las variables que se declaran.A estás variables se les conoce como constantes declaradas. SINTAXIS: Const nombre_de_tipo nombre_variable = constante; Ejemplo const double PI = 3.14592; const int N_PROV = 9; Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Operador ? int main() { int a,b=2,c=3; a= b>0 ? c : c+1; /* Equivalente a if(b>0) a=c; else a=c+1; */ } Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
ENTRADA Y SALIDA DE DATOS Funciones: getchar, putchar, scanf, printf, gets, y puts. ENTRADA DE UN CARÁCTER……… LA FUNCION: getchar. Entrada de carácter uno a uno. Devuelve un carácter leído del dispositivo de entrada estándar. Es parte de la biblioteca estándar. (stdio.h) FORMATO: Variable de carácter = getchar(); Ejemplo: char c; ……. c= getchar(); Prof. Dra. ADDYS DE LAM
SALIDA DE UN CARÁCTER ……….. LA FUNCION : putchar Visualizar un carácter. Transmitir un carácter al dispositivo de salida estándar. Es parte de la biblioteca estándar. (stdio.h) FORMATO: putchar (variable de carácter) EJEMPLO: char c; ……. putchar (c); Prof. Dra. ADDYS DE LAM
ENTRADA DE DATOS …. LA FUNCIÓN scanf Introducir datos procedentes del dispositivo de entrada estándar. Introducir cualquier combinación de valores numéricos, caracteres sueltos y cadenas de caracteres. FORMATO: scanf (cadena de control, arg1, arg2, ……, arg n) Cadena de control: cadena de caracteres que contienes cierta información sobre el formato de los datos. Arg1, arg2,….., arg n: representan los datos. (punteros que indican las direcciones de memoria en donde se encuentran los datos). Prof. Dra. ADDYS DE LAM
CARACTERES DE CONVERSIÓN Carácter de conversión Significado c El dato es un carácter. d El dato es un entero decimal. e El dato es un valor en coma flotante. f El dato es un val or en coma flotante. g h El dato es un entero corto. i El dato es un entero decimal, octal o hexadecimal. o El dato es un entero octal. s El dato es una cadena de caracteres (carácter nulo al final) u El dato es un entero decimal sin signo. x El dato es un entero hexadecimal. [… ] El dato es una cadena de caracteres que pueden incluir caracteres de espaciado. Prof. Dra. ADDYS DE LAM
EJEMPLO: #include<stdio.h> main() { char letras [20]; int entero; float coste; …… scanf(“%s %d %f”, letras, &entero,&coste); } EJECUCIÓN: velocidad 12345 0.05 ó velocidad ó velocidad 12345 12345 0.05 0.05 Prof. Dra. ADDYS DE LAM
Nota: Cada nombre de variable debe ser precedido por un ampersand(&). Los nombres de arrays no deben ser precedidos por &. Conversión de caracteres tipo s: cadena que no incluye espacio en blanco. Prof. Dra. ADDYS DE LAM
ENTRADA DE DATOS …. LA FUNCIÓN scanf Introducir cadena de caracteres EJEMPLO: #include<stdio.h> { char linea[80]; ….. scanf(“%[ ABCDEFGHIJKLOPQRSTUVXZ]”, linea); } EJECUCIÓN: FIN DE SEMANA Se le asigna al array linea toda la cadena de caracteres. Observe que se acepta espacios en blancos, primer carácter la cadena de control[]. Fin de Semana Se le asigna al array linea solo la letra F Prof. Dra. ADDYS DE LAM
#include<stdio.h> main() { char linea[80]; ….. EJEMPLO 2: #include<stdio.h> main() { char linea[80]; ….. scanf(“%[^\n]”, linea); } Se leerá una cadena de caracteres de longitud no determinada (no más de 79) y se asignará a línea. Prof. Dra. ADDYS DE LAM
ESPECIFICACIOINES DE LONGITUD DE CAMPO: Limita el número de los caracteres especificando una longitud de campo máxima para el dato. EJEMPLO: #include<stdio.h> main() { char linea[80]; ….. scanf(“%3d %3d %3d”, &a, &b, &c); } EJECUCIÓN: 1 2 3 entonces a=1 , b=2, c =3 123 456 789 entonces a=123, b=456, c =789 123456789 entonces a=123, b=456, c =789 1234 5678 9 entonces a=123, b=4, c =567 Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
Obtener el promedio de tres valores dados por el usuario EJEMPLOS DE PROGRAMAS EN C Obtener el promedio de tres valores dados por el usuario PROGRAMA EN C #include <stdio.h> main() { /*Declaraciones*/ int v1,v2,v3; float prom; /* Solicita valores de entrada */ printf(“Entre los tres valores”); scanf (“%i %i %i”,&v1,&v2,&v3); /* Calculo del promedio */ prom = (v1+v2+v3)/3; /* Salida de resultados */ printf (“\n \t valor1 \t valor2 \t valor3 \t Promedio \n”); printf (“\t %i \t %i \t %i\t %.2f ”,v1,v2,v3,prom); } ALGORITMO INICIO /*DECLARACIONES*/ ENTEROS : V1,V2,V3 REAL: PROM /*SOLICITA VALORES DE ENTRADA */ VISUALIZAR (“ENTRE LOS TRES VALORES “) LEER (“%i%i%i”,V1,V2,V3) /* CALCULO DEL PROMEDIO */ PROM (V1+ V2+ V3)/3 /*SALIDA DE LOS RESULTADOS */ VISUALIZAR (“VALOR 1 VALOR 2 VALOR 3 PROMEDIO”) VISUALIZAR (“%i%i%i%f”,V1,V2,V3,PROM) FIN Prof. Dra. ADDYS DE LAM
Prof. Dra. ADDYS DE LAM
OTRA FORMA DE SOLUCION DEL PROBLEMA ............ printf (“Entre su nombre:”); scanf (“%[^\n]”,nombre); printf (“\n\nNombre: %-s\n\n”,nombre); ............. Prof. Dra. ADDYS DE LAM
Programa #include <stdio.h> main() { /*Declaracion de variables*/ int a,b,c; /*Entrada de los valores*/ printf (“Entre dos valores:”); scanf (“%i %i”, &a, &b); /*Calculo de la suma*/ c=a+b; /*Salida de resultados*/ printf(“La suma de %i + %i es: %i”, a,b,c); } Prof. Dra. ADDYS DE LAM