1 ANALISIS DE PROBLEMAS SOLUCIONES LOGICASPREPARAR CAFÉ UTILIZANDO COMO HERRAMIENTA UNA CAFETERA ELECTRICA. Prof. Dra. ADDYS DE LAM
2 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
3 Preparar Café en Cafetera EléctricaElementos Ahh!!! necesito Herramientas Procedimientos Prof. Dra. ADDYS DE LAM
4 Elementos Herramientas ProcedimientosMateria Prima Café preparado Herramientas Depósitos Resultados Procedimientos Instrucciones (Procesos) Prof. Dra. ADDYS DE LAM
5 Materia Prima Depósitos Instrucciones (procesos) Resultados DatosEntradas Depósitos Áreas de Almacenamiento Espacio de Memoria Procesos aritméticos / lógicos Instrucciones (procesos) Declaraciones Resultados Salidas Prof. Dra. ADDYS DE LAM
6 PASOS PARA RESOLVER UN PROBLEMAOBJETIVOS: DEFINIR CONCEPTOS BASICOS DE PROGRAMACION. DESCRIBIR LOS PASOS PARA RESOLVER UN PROBLEMA UTILIZANDO AL COMPUTADOR COMO HERRAMIENTA DE APOYO. Prof. Dra. ADDYS DE LAM
7 Ciclo de Vida de La Programación2 Definición Análisis ¿Cuál es el problema? E - P - S Prof. Dra. ADDYS DE LAM
8 Ciclo de Vida de La ProgramaciónAlgoritmo Prueba de Escritorio Pseudocódigo Prof. Dra. ADDYS DE LAM
9 Ciclo de Vida de La ProgramaciónCodificació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
10 Ciclo de Vida de La ProgramaciónEjecució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
11 Ciclo de Vida de La ProgramaciónVerificación Implementación Procedimientos, entrenamiento en uso Datos Resultados Fuente Prof. Dra. ADDYS DE LAM
12 Ciclo de Vida de La ProgramaciónMantenimiento Documentación Modificaciones, actualizaciones Interna (codificación) Externa Prof. Dra. ADDYS DE LAM
13 Elementos Café Azucar che leche Agua Leche Prof. Dra. ADDYS DE LAM
14 Herramientas Contenedor de agua Cafetera Contenedor del café en polvoTaza Contenedor del café líquido Taza para la leche Cucharita Prof. Dra. ADDYS DE LAM
15 Forma de Preparar un CaféProcedimientos Instrucciones Uso de Cafetera Forma de Preparar un Café Prof. Dra. ADDYS DE LAM
16 Entradas “Cálculo de 3 Valores” Tipos de Datos Entradasx x Alfanumérico Enteros Reales V1 entero V2 entero V3 entero Identificadores Prof. Dra. ADDYS DE LAM
17 Enunciado del problemaObtenga 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 Cantidad de procesados Prof. Dra. ADDYS DE LAM
18 Procesos Promedio valores / total de valores prom (v1 + v2 + v3)/3Prof. Dra. ADDYS DE LAM
19 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 Detalles Totales Cantidad de procesados 9---9 Entradas Procesos Prof. Dra. ADDYS DE LAM
20 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
21 Programa #include
22 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
23 INTRODUCCIÓN AL LENGUAJE CFUE 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
24 INTRODUCCIÓN AL LENGUAJE CC 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
25 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
26 ESTRUCTURA DE UN PROGRAMA EN CCONSTA 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
27 ESTRUCTURA DE UN PROGRAMA EN CLAS 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
28 Main Función 1 Función 2 Función 3 Biblioteca Prof. Dra. ADDYS DE LAM
29 Biblioteca stdio.h math.h conio.h time.h . . . puts printf abs clrscrgetdate gets getchar ceil gotoxy gettime cos textcolor getch putchar setdate exp window . . . settime scanf sqrt textbackground time fmod . . . Prof. Dra. ADDYS DE LAM . . . . . .
30 PROGRAMA SENCILLO EJEMPLO#include
31 ELEMENTOS BASICOS IDENTIFICADORESNombres 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
32 ELEMENTOS BASICOS PALABRAS CLAVESIdentificadores 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
33 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: 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
34 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 ASCII unsigned char: valor de 0 a 255 Ejemplo: char car; char abreviación de signed char. Prof. Dra. ADDYS DE LAM
35 int: ( entero) máquina de 16 bits -32768 a 32767 unsigned int a Ejemplo: int n,x; int abreviación de signed int. short: ( entero corto -- 2 bytes ) a 32767 unsigned short a 65535 Ejemplo: short i, j; short abreviación de signed short int long: ( entero largo -- 4 bytes) E31 a 2E31-1 unsigned long a Ejemplo: long n ; long abreviación de signed long int Prof. Dra. ADDYS DE LAM
36 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
37 TIPO REAL float: (simple precisión -- 4 bytes) hasta 7 dígitossignificativos. negativos: E+38 a E-45 positivos: E a E+38 double: ( doble precisión -- 8 bytes) hasta 15 dígitos negativos : E+38 a E-324 positivos : E-324 a E+308 long double: ( doble precisión largos -- 8 bytes) Precisión extendida -- depende del compilador. Prof. Dra. ADDYS DE LAM
38 TIPOS ADICIONALES DE DATOSpointers: ( 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
39 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
40 Declaración de variables o parámetrosmain() { 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
41 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 : Octal: uno o más dígitos ( 0..7), precedidos por 0. Ejemplo: Hexadecimal: uno o más caracteres ( 0..9; A..F), precedidos por 0x o 0X. Ejemplo: x100 Prof. Dra. ADDYS DE LAM
42 Formato: [ dígitos][.dígitos][E/e[+/-]dígitos] CONSTANTES REALES: Formato: [ dígitos][.dígitos][E/e[+/-]dígitos] dígitos: E/e: símbolo de exponente Ejemplos: , E3, e-3, 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
43 SECUENCIA DE ESCAPE DE C Representan caracteres no imprimibles CARACTER SECUENCIA VALOR ASCI Sonido (bell) \a Backspace \b Tab horizontal \t Tab vertical \v Nueva línea \n Form feed \f Retorno del carro \r Comillas (“) \” Apóstrofo (‘) \’ Interrogación ( ?) \? Backslash ( \ ) \\ Nulo \ 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
44 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
45 CONSTANTES SIMBOLICAS:Ejemplo: #define INTERES 0.23 #define PI #define CIERTO #define AMIGA “Marta” { ………. area = PI *radio*radio area = *radio*radio } Prof. Dra. ADDYS DE LAM
46 COMO NOMBRAR CONSTANTES CON EL MODIFICADOR CONSTCuando 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 = ; const int N_PROV = 9; Prof. Dra. ADDYS DE LAM
47 Prof. Dra. ADDYS DE LAM
48 Prof. Dra. ADDYS DE LAM
49 Prof. Dra. ADDYS DE LAM
50 Prof. Dra. ADDYS DE LAM
51 Prof. Dra. ADDYS DE LAM
52 Prof. Dra. ADDYS DE LAM
53 Prof. Dra. ADDYS DE LAM
54 Prof. Dra. ADDYS DE LAM
55 Prof. Dra. ADDYS DE LAM
56 Prof. Dra. ADDYS DE LAM
57 Prof. Dra. ADDYS DE LAM
58 Prof. Dra. ADDYS DE LAM
59 Prof. Dra. ADDYS DE LAM
60 Prof. Dra. ADDYS DE LAM
61 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
62 Prof. Dra. ADDYS DE LAM
63 ENTRADA Y SALIDA DE DATOSFunciones: 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
64 SALIDA DE UN CARÁCTER ……….. LA FUNCION : putcharVisualizar 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
65 ENTRADA DE DATOS …. LA FUNCIÓN scanfIntroducir 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
66 CARACTERES DE CONVERSIÓNCará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
67 EJEMPLO: #include
68 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
69 ENTRADA DE DATOS …. LA FUNCIÓN scanfIntroducir cadena de caracteres EJEMPLO: #include
70 #include
71 ESPECIFICACIOINES DE LONGITUD DE CAMPO: Limita el número de los caracteres especificando una longitud de campo máxima para el dato. EJEMPLO: #include
72 Prof. Dra. ADDYS DE LAM
73 Prof. Dra. ADDYS DE LAM
74 Prof. Dra. ADDYS DE LAM
75 Prof. Dra. ADDYS DE LAM
76 Obtener el promedio de tres valores dados por el usuarioEJEMPLOS DE PROGRAMAS EN C Obtener el promedio de tres valores dados por el usuario PROGRAMA EN C #include
77 Prof. Dra. ADDYS DE LAM
78 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
79 Programa #include