1 / 48

Introducción a la Programación

Introducción a la Programación. Práctica P5: Fundamentos y Estructuras de Control. Profesorado: Antonio Carlos Domínguez Brito Oscar Déniz Suárez. Lenguaje C: Estructura de un Programa. #include <stdio.h> #include <stdlib.h> # … # … … /* Otras definiciones */

xuan
Download Presentation

Introducción a la Programación

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introducción a la Programación Práctica P5: Fundamentos y Estructuras de Control Profesorado: Antonio Carlos Domínguez Brito Oscar Déniz Suárez

  2. Lenguaje C: Estructura de un Programa #include <stdio.h> #include <stdlib.h> # … # … … /* Otras definiciones */ int main(int argc, char *argv[]) { … /* Zona de */ … /* declaración */ … /* de variables */ … /* Zona de */ … /* instrucciones del */ … /* programa principal */ system("PAUSE"); return 0; } Cabecera de Programa: ficheros cabecera y otras definiciones Función main: cuerpo principal del programa NORMALMENTE LA FUNCIÓN MAIN SE ENCUENTRA EN UN FICHERO LLAMADO “main.c”

  3. Lenguaje C: Características • Algunas características son: • El Lenguaje C es sensible al uso de mayúsculas y minúsculas. • Las sentencias (instrucciones) terminan con el símbolo punto y coma ‘;’ y se componen de palabras reservadas o palabras clave, identificadores, constantes, operadores y separadores. • Se pueden establecer bloques de instrucciones mediante el uso de llaves: los símbolos abre-llave ‘{’ y cierra-llave ‘}’. • Los programas se componen de: • Palabras reservadas o palabras clave. • Variables y funciones de la librería estándar. • Variables y funciones definidas por el programador.

  4. Lenguaje C: Características • Palabras reservadas o palabras clave

  5. Lenguaje C: Identificadores • Un identificador permite identificar (nombrar) una variable o una función dentro de un programa. Siguen las siguientes reglas: • Se forma de una secuencia de símbolos pertenecientes SÓLO al conjunto de símbolos: • {‘a’, …, ‘n’, ‘o’, …, ‘z’, ‘A’, …, ‘N’, ‘O’, …, ‘Z’, ‘0’, …, ‘9’, ‘_’}. • El primer carácter o símbolo del identificador NO PUEDE SER un dígito numérico. • Se distinguen las letras mayúsculas de las minúsculas, así, el identificador “suma” de los identificadores “SUMA”, “Suma”, “sUMa”, etc. • Se pueden definir identificadores de hasta 31 símbolos de longitud.

  6. Lenguaje C: Identificadores • Ejemplos de identificadores válidos son: • tiempo, modulo, distancia_total, suma10,_el_producto_, Tiempo, Modulo, Distancia_Total, laSumaDeTodo, elProducto,miVariable, Tu_Variable, estaFuncion, _el_Identificador_ • Ejemplos de identificadores no válidos son: • 10_segundos, el-modulo, la distancia total, $dolares, %porciento,6seis6, • este-no-es-un-identificador-valido, módulo, estaFunción

  7. Lenguaje C: Constantes • Las constantes en C pueden ser de los siguientes tipos: • Constantes numéricas: son valores numéricos, o bien, enteros o en notación científica (punto flotante). • Constantes carácter: cualquier símbolo o carácter alfanumérico encerrado entre apóstrofos (Ejs.: ‘a’, ‘:’, ‘Z’, ‘+’, …). • Cadenas de caracteres: cualquier secuencia de símbolo o caracteres encerrado entre comillas (Ejs.: “esto es una cadena de caracteres”, “Hola Mundo!\n”, …). • Constantes simbólicas: son constantes que se identifican con un identificador.

  8. Lenguaje C: Operadores • Los operadores son símbolos que indican operaciones cuyos operandos son normalmente variables, y/o constantes, así como también funciones. En C hay diferentes tipos de operadores: • Aritméticos: { +, -, /, *, %, ++, --}. • De asignación: { =, +=, -=, *=, /= }. • Relacionales: { ==, <, >, <=, >=, !=}. • Lógicos: { &&, ||, ! }. • Otros: { &, |, ^, <<, >>, …}

  9. Lenguaje C: Separadores y Comentarios • Los separadores permiten que los programas sean legibles al permitir separar los diferentes elementos que aparecen en el programas (identificadores, sentencias, …). Los separadores son los llamados símbolos de formato: el espacio en blanco, el tabulador, y el salto de línea. • En el código fuente de un programa el programador puede introducir comentarios para dar mayor legibilidad al mismo. Los comentarios en Lenguaje C deben estar entre los dos pares de símbolos siguientes: • /*: indica comienzo de comentario • */: indica final de comentario • //: indica que el resto de la línea es un comentario • Ejemplos: • a=b+c; /* aquí se calcula la suma */ • printf(“a=%d\n”,a); // aquí se imprime la suma

  10. Lenguaje C: Variables • Tipos de datos fundamentales en C

  11. Lenguaje C: Variables • Variables Tipo Carácter • Ejemplos: • char identificador1 = ‘c’; • char identificador2, identificador3; • Contienen un único símbolo o carácter ASCII. • Almacenan un byte de información. • 1 byte = 8 bits  28=256 números binarios diferentes

  12. Lenguaje C: Variables • Variables Tipo Entero • Ejemplos: • short identificador1 = 345; • int identificador2 = -2345; • long identificador3= -4352359; • Almacenan números enteros. • Tienen diferentes tamaños: • Entero corto  short (<=4 bytes) • Entero normal  int (>=4 bytes) • Entero largo  long (>= 4 bytes) • Pueden aceptar los siguientes modificadores: • Entero con signo  signed • Entero sin signo  unsigned

  13. Lenguaje C: Variables • Variables Tipo Real • Ejemplos: • float identificador1 = -4.4567; • double identificador2,identificador3; • long double identificador4= 6.19e+23; • Almacenan números reales. • Tienen diferentes tamaños: • Simple precisión  float (4 bytes) • Doble precisión  double (8 bytes) • Cuadruple precisión  long double (16 bytes)

  14. Lenguaje C: Constantes • Constantes Enteras • Ejemplos: • 8797 // constante int o short • 0x3ae5 // constante int o short • 06573 // constante int o short • 7890L // constante long • 97987UL // constante unsigned long • Constantes Reales • Ejemplos: • 1.23 // constante float o double • 3.87e-3 // constante float o double • -9.005768e-12 // constante float o double

  15. Lenguaje C: Constantes • Constantes Carácter • Ejemplos: • ‘a’ // constante char • ‘g’ // constante char • ‘A’ // constante char • ‘\n’ // constante char (salto de línea) • ‘\0’ // constante char (carácter nulo) • ‘\t’ // constante char (tabulador horizontal) • Constantes Cadena de Carácteres • Ejemplos: • “Informática” // constante cadena (string) • “Hola Mundo!\n” // constante cadena (string) • “Esto es una frase” // constante cadena (string)

  16. Lenguaje C: Constantes • Constantes Enumeración • Ejemplos: • enum Dia {lunes, martes, miercoles, jueves, • viernes, sabado, domingo}; • enum Mes {enero=1, febrero, marzo, abril, mayo, • junio, julio, agosto, septiembre, • octubre, noviembre, diciembre}; • … • Dia diaCita=martes; • Mes mesCita=abril;

  17. Lenguaje C: Constantes • Variables constante • Ejemplos: • const int i=50; • const long double pi= 3,141592653589; • const char unaLetra=‘a’; • const char unaCadena[]=“Esto es una cadena”; • Se forman utilizando el cualificador const

  18. Lenguaje C: Operadores • Operadores Aritméticos • Suma: + • Resta: - • Multiplicación: * • División: / • Módulo (Resto de División Entera): % • Ejemplos: • y=a*x*x+b*x+c; • b=50%12; // el resultado es 2 • z=k*x+(r-909)/((456.78-q)*s); • l=2*pi*radio; • x1=(-b+sqrt(b*b-4*a*c))/(2*a); • x2=(-b-sqrt(b*b-4*a*c))/(2*a);

  19. Lenguaje C: Operadores • Operadores Asignación • Asignación: = • Suma y asignación: += • Resta y asignación: -= • Multiplicación y asignación: *= • División y asignación: /= • Ejemplos: • t=a*s*s+b*s+c; • b+=1; // equivalente a b=b+1; • c-=1; // equivalente a c=c-1; • d*=k; // equivalente a d=d*k; • e/=m; // equivalente a e=e/m;

  20. Lenguaje C: Operadores • Operadores Incrementales • Incremento: ++ • Decremento: -- • Sólo se pueden utilizar con variables de tipo entero o puntero. • Ejemplos: • i++; // equivalente a i=i+1; o a i+=1; • j--; // equivalente a j=j-1; o a j-=1; • a= (i++) + k; // operador de post-incremento • b= (++i) + k; // operador de pre-incremento

  21. Lenguaje C: Operadores • Operadores Relacionales: expresan condiciones lógicas • Igual que: == • Menor que: < • Mayor que: > • Menor o igual que: <= • Mayor o igual que: => • Distinto que: != • Ejemplos: • (a<b) // ¿a es menor que b? Depende de a y b • (r!=8) // ¿r es diferente de 8? Depende de r • SI LA CONDICIÓN ES VERDADERA SE EVALÚA COMO 1, SI ES FALSA SE EVALÚA COMO 0.

  22. Lenguaje C: Operadores • Operadores Lógicos: expresan condiciones lógicas compuestas • Y lógico: && • O lógico: || • NO lógico: ! • Ejemplos: • (a<b) && (k!=l) // ¿a es menor que b Y • // k es diferente de 1? • // Depende de a, b, k y l • (m>=n) || !(q==j) // ¿m es mayor o igual que n O • // q no es igual a j? Depende de • // m, n, q y j • SI LA CONDICIÓN COMPUESTA ES VERDADERA SE EVALÚA COMO 1, SI ES FALSA SE EVALÚA COMO 0.

  23. Lenguaje C: Operadores • Otros operadores: • Más unario: + (indica que una variable es positiva) • Menos unario: - (cambia el signo a una variable numérica) • sizeof (indica el tamaño en bytes de una variable) • Operador coma: ,(permite realizar varias sentencias en una sóla línea) • Operador Dirección: & (permite obtener la dirección de memoria donde se almacena una variable) • Operador Indirección: * (permite acceder a la memoria apuntada por una dirección de memoria) • Ejemplos: • a=-b; • r=sizeof(k);

  24. Lenguaje C: Expresiones • Ejemplos: • x1=(-b+sqrt(b*b-4*a*c))/(2*a); • x2=(-b-sqrt(b*b-4*a*c))/(2*a); • a=b=c=d=e=f=1; // multi-asignación • a=((b>c)&&(c>d))||((c==e)||(e==b)); // condición • // compuesta • zmas=sqrt(r*r-x*x-y*y) // semiesfera positiva • zmenos=sqrt(r*r-x*x-y*y) // semiesfera negativa

  25. Lenguaje C: Precedencia de Operadores

  26. Lenguaje C: Sentencias • Una sentencia de un programa en Lenguaje C es una instrucción de un programa. Hay tres tipos de sentencias: • Sentencias Generales • float espacio,espacio_inicial,tiempo,velocidad; • … • espacio=espacio_inicial+velocidad*tiempo; • printf(“Espacio recorrido =%f\n”,espacio); • Sentencia Vacía o Nula • ; // sentencia vacía o nula • Sentencias Compuestas o Bloques • … • { • int i,j,k,m; • … • i=j+k*m • } • …

  27. Lenguaje C: Estructuras de Control • Las estructuras o sentencias de control de flujo en C son las siguientes: • Sentencias Condicionales • if, if-else • switch-case • Operador Condicional ? • Sentencias Iterativas o Bucles • while • do-while • for • Sentencias de Salto Incondicional • continue • break • goto

  28. Lenguaje C: Sentencias Condicionales • Sentencia Condicional if: • … • if(expresion_logica) • sentencia; • … • Si expresion_logica se evalúa como verdadera (1) entonces se ejecuta sentencia. Si expresion_logica se evalúa como falsa (0) entonces sentencia no se ejecuta y el programa continua ejecutándose en la siguiente línea. • Ejemplos:

  29. Lenguaje C: Sentencias Condicionales • Sentencia Condicional if-else: • … • if(expresion_logica) • sentencia_1; • else • sentencia_2; • … • Si expresion_logica se evalúa como verdadera (1) entonces se ejecuta sentencia_1. Si expresion_logica se evalúa como falsa (0) entonces se ejecuta sentencia_2. • Ejemplos:

  30. Lenguaje C: Sentencias Condicionales • Sentencia Condicional if-else: • Ejemplos:

  31. Lenguaje C: Sentencias Condicionales • Sentencia Condicional switch: • … • switch(expresion_entera) • { • case expresion_cte_1: • sentencia_1; • [break;] • case expresion_cte_2: • sentencia_2; • [break;] • … • case expresion_cte_n: • sentencia_3; • [break;] • [default: • sentencia_default;] • } • … • Si expresion_entera es igual a alguna de la expresiones constantes {expresion_cte_1, …, expresion_cte_n} entonces se ejecuta la sentencia correspondiente de entre las sentencias {sentencia_1, …, sentencia_n}. • Si expresión_entera no coincide con ninguna de las expresiones constantes {expresion_cte_1, …, expresion_cte_n} se ejecuta la sentencia sentencia_default asociada con la sentencia default. • Las sentencias break saltan el resto de la sentencia condicional switch.

  32. Lenguaje C: Sentencias Condicionales • Sentencia Condicional switch: • Ejemplo:

  33. Lenguaje C: Sentencias Condicionales • Operador condicional ?: • … • (expresion_logica)? expresion_1: expresion_2; • … • Si expresion_logica se evalúa como verdadera (1) entonces se evalua expresion_1. Si expresion_logica se evalúa como falsa (0) entonces se evalúa expresion_2. • Ejemplo:

  34. Lenguaje C: Sentencias Iterativas o Bucles • Sentencia iterativa while: • … • while(expresion_logica) • sentencia; • … • Mientras expresion_logica se evalúe como verdadera (1) se ejecuta sentencia repetidamente. Cuando expresion_logica se evalúe como falsa (0) entonces la ejecución continua en la siguiente sentencia de programa. • Ejemplos:

  35. Lenguaje C: Sentencias Iterativas o Bucles • Sentencia iterativa do-while: • … • do • sentencia; • while(expresion_logica); • … • Inicialmente se ejecuta sentencia una vez.Luego mientras expresion_logica se evalúe como verdadera (1) sentencia se ejecuta repetidamente. Cuando expresion_logica se evalúe como falsa (0) entonces la ejecución continua en la siguiente sentencia de programa. • Ejemplos:

  36. Lenguaje C: Sentencias Iterativas o Bucles • Sentencia iterativa for: • … • for(sentencia_inicializacion; • expresion_logica; • sentencia_actualizacion) • sentencia; • … • Inicialmente se ejecuta sentencia_inicializacion. A continuación se evalúa expresion_logica. Si se evalúa como verdadera (1) se ejecuta sentencia, y luego sentencia_actualizacion. Luego se vuelve a evaluar expresion_logica y si es verdadera se vuelve a ejecutar sentencia, y luego sentencia_actualizacio. Esto se hará repetidamente hasta que expresion_logica se evalúe como falsa (0), en ese punto el bucle finaliza y la ejecución continua en la siguiente sentencia de programa.

  37. Lenguaje C: Sentencias Iterativas o Bucles • Sentencia iterativa for: • Ejemplo:

  38. Lenguaje C: Sentencias de Salto Incondicional • Sentencia continue: • … • continue; • … • Se utiliza dentro de sentencias repetitivas o bucles para obligar a la finalización de la iteración actual y reevaluación de la expresión lógica que controla la duración del bucle. • Ejemplo:

  39. Lenguaje C: Sentencias de Salto Incondicional • Sentencia break: • … • break; • … • Se utiliza dentro de la sentencia condicional switch, así como en sentencias repetitivas o bucles para obligar a la finalización de la sentencia y continuación del programa en la siguiente sentencia de programa. • Ejemplo:

  40. Lenguaje C: Sentencias de Salto Incondicional • Sentencia goto: • … • goto etiqueta; • … • etiqueta: sentencia; • … • La instrucción goto hace saltar la ejecución del programa a la sentencia sentencia etiquetada con la etiqueta etiqueta. • Ejemplo:

  41. Lenguaje C: Entrada/Salida Básica • Función printf: • … • printf(“cadena_formato”,expresion1,expresion2,…); • … • La función printf permite escribir texto por pantalla. La cadena_formato indica qué es lo que se va a escribir por pantalla en cada utilización de printf. Es posible incluir en cadena_formato referencias a expresiones que tras ser evaluadas deben incluirse en el texto que se imprimirá por pantalla. • Ejemplo: … int a=3; float x=23.0; char c=‘A’; printf(“Hola mundo!!\n”); printf(“Un entero %d\n”,a); printf(“Un real %f \ny un char %c\n”,x,c); …

  42. Lenguaje C: Entrada/Salida Básica • Función printf: Formato

  43. Lenguaje C: Entrada/Salida Básica • Función scanf: • … • scanf(“cadena_formato”,expresion1,expresion2,…); • … • La función scanf permite leer texto desde teclado. La cadena_formato indica qué es lo que se va a leer por teclado en cada utilización de scanf. Es posible incluir en cadena_formato referencias a expresiones que tras ser evaluadas deben incluirse en el texto que se imprimirá por pantalla. • Ejemplo: … int a; float x; char c; scanf(“%d”,&a); /* Lee un entero y lo almacena en a */ scanf(“%f %c”,&x,&c); /* Lee x y c */ …

  44. Lenguaje C: Entrada/Salida Básica • Función scanf: Formato

  45. Lenguaje C: Operaciones Básicas con Bucles • Generación de sucesiones numéricas: • Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), dicha sucesión se puede calcular mediante el siguiente algoritmo: • // Algoritmo sucesión • int main(int argc, char *argv[]) • { • double x; • int i,n; • … // se lee n • i=0; • x=x0; // x0 es el valor inicial de la sucesión • while(i<=n) • { • printf(“x%d=%f\n”,i,x); • i++; • x=f(i,x); // aquí se escribe la expresión de f(i,x) • } • printf(“x%d=%f\n”,i,x); • return 0; • }

  46. Lenguaje C: Operaciones Básicas con Bucles • Cálculo sumatorios de sucesiones numéricas: • Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), la suma se puede calcular mediante el siguiente algoritmo: • // Algoritmo sumatorio sucesión • int main(int argc, char *argv[]) • { • double x,suma; • int i,n; • … // se lee n • i=0; • x=x0; // x0 es el valor inicial de la sucesión • suma=x; • while(i<=n) • { • printf(“suma[%d elementos]=%f\n”,i,suma); • i++; • x=f(i,x); // aquí se escribe la expresión de f(i,x) • suma=suma+x; • } • printf(“suma[%d elementos]=%f\n”,i,suma); • return 0; • }

  47. Lenguaje C: Operaciones Básicas con Bucles • Cálculo de productos de sucesiones numéricas: • Dada una sucesión x0, x1, ... xn de números reales tal que xi = f(i , xi-1), la suma se puede calcular mediante el siguiente algoritmo: • // Algoritmo producto sucesión • int main(int argc, char *argv[]) • { • double x,producto; • int i,n; • … // se lee n • i=0; • x=x0; // x0 es el valor inicial de la sucesión • producto=x; • while(i<=n) • { • printf(“producto[%d elementos]=%f\n”,i,producto); • i++; • x=f(i,x); // aquí se escribe la expresión de f(i,x) • producto=producto*x; • } • printf(“producto[%d elementos]=%f\n”,i,producto); • return 0; • }

  48. Lenguaje C: Ejercicios Propuestos • [Segundo Grado] Realice un algoritmo en Lenguaje C que calcule las soluciones a una ecuación de segundo grado ax2+bx+c=0, teniendo en cuenta tanto las soluciones reales como las complejas. • [Pares] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x0=0, x1=2, x2=4, …, xn=2n tal que n es un número entero. • [Impares] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x0=1, x1=3, x2=5, …, xn=2n+1 tal que n es un número entero. • [Factorial] Realice un algoritmo en Lenguaje C que calcule la siguiente sucesión x1=1!, x2=2!, x3=3!, x4=4!, … xn=n!, tal que n es un número entero. • [Fibonacci] Realice un algoritmo en Lenguaje C que calcule la sucesión de Fibonacci f1=1, f2=1, f3, f4, f5, … fn tal que fi=fi-2+fi-1 y siendo n un número entero.

More Related