La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Estructura de un programa C

Presentaciones similares


Presentación del tema: "Estructura de un programa C"— Transcripción de la presentación:

1 Estructura de un programa C
Semana 2 Estructura de un programa C

2 El lenguaje C Dennis Ritchie fue el encargado del diseño del lenguaje C y de se implementación. C ha sufrido numerosos cambios a lo largo de su historia. La primera versión del lenguaje data de 1978 y se conoce como K&R C, es decir, C de Kernighan & Ritchie. Descrita en la primera edición de su libro “The C Programming Language”.

3 El lenguaje C El 14 de diciembre de 1989 se acordó la definición de lo que es “C estándar” y se publico la especificación en 1990. Durante mucho tiempo se conoció a esta versión del lenguaje como ANSI-C para distinguirla asi del K&R C. C ha tenido un gran impacto en el diseño de otros muchos lenguajes. Ha sido la base para definir la sintaxis y ciertos aspectos de la semántica de lenguajes tan populares como C++, Java y C#.

4 Implementación de un Programa
Escribir el programa, codificar. Compilar. Probar el programa. Los pasos, por lo general, se repiten muchas veces para mejorar la calidad del programa en cada iteración.

5 Conceptos básicos de programación.
Código fuente: Es un archivo de texto plano que contiene una serie de sentencias, escrito por el programador en algún lenguaje. En el caso de C estos archivos deberían tener la extensión .c (el código en si) y .h (archivos de cabecera). Estos archivos serán transformados a lenguaje de maquina, mediante el compilador.

6 Proceso de Compilación
#include <stdio.h> void main (void){ printf(“Hola mundo \n”); return; }

7 C un lenguaje compilado.
Un archivo de texto con extensión “.c” llamado código fuente lo procesa un compilador de lenguaje C. El compilador lee y analiza todo el código. Si el programa esta correctamente escrito según la definición del lenguaje, el compilador genera un nuevo archivo con su traducción a código de maquina. Si no, muestra los errores que ha detectado. El resultado es un programa ejecutable.

8 Conceptos básicos de programación.
Código objeto: mediante un programa llamado compilador se transforma el código fuente en un lenguaje entendible por el computador. Los archivos de código objeto en c tiene la extensión .obj – “.o”.

9 Características. C es un lenguaje estructurado de nivel medio, ya que combina elementos de lenguajes de alto nivel (manipulación de bits, bytes, direcciones) y elementos básicos como números y caracteres. El código fuente C es portable, lo que significa que es independiente del computador y sistema operativo en el que opere, pero dependiente del compilador.

10 Estructura de un programa en C.
/* Descripción de Bibliotecas*/ #include <stdio.h> /* Función Principal*/ void main (void) { /* Cuerpo del programa*/ printf(“Hola mundo \n”); return; }

11 Estructura de un programa en C.
/* comentario*/ El texto escrito entre /* y */ son comentarios, sirven para entender mejor el código. Pueden estar en mas de una línea.

12 Estructura de un programa en C.
#include <stdio.h> Es la inclusión de un archivo de cabecera. Sirve para indicar al compilador que incluya otro archivo de bibliotecas de información. En este caso en stdio.h incluye las funciones de entrada y salida de datos estándar. STD=Standard IO=Input/Output

13 Estructura de un programa en C.
void main(void) Función principal del programa. Para que el programa ejecute correctamente debe tener void, es lo primero que se ejecuta al llamar a un programa. El primer void (vacío) significa que cuando el programa acabe no devolverá nada. El segundo void indica que la función main no requiere argumentos. OBS: Funciones en profundidad Certamen 2

14 Estructura de un programa en C.
{ Indica el comienzo de una función en este caso main. printf(“Hola mundo \n”); Cuerpo principal del programa, donde el programa hace algo. ; corresponde al final de una sentencia, de esta forma C separa una instrucción de otra.

15 Estructura de un programa en C.
return Hace que el programa devuelva un valor, o en este caso elegimos no retornar nada. } Esta llave indica el fin de la función.

16 Identificadores. Son nombres que nos permiten referenciar a valores guardados en memoria, como variables, constantes y funciones. Reglas que rigen a los identificadores Deben comenzar con una letra Pueden seguir letras, números o el carácter _ Ejemplos: hola Universidad_Santa_María PI AnsiC2007

17 Identificadores. Están formados por letras y dígitos, excepto el primer carácter que debe ser una letra. Se pueden utilizar mayúsculas y minúsculas no tildada. OBS: No son equivalentes mayúsculas y minúsculas. ANSI C es sensible a mayúsculas o minúsculas, por lo tanto HoLa NO es lo mismo que HOLA.

18 Identificadores. Hay ciertas palabras claves en C que tienen un significado estándar y por eso no pueden ser utilizados como identificadores. Las palabras claves están en minúscula. Varios identificadores son reservados y no pueden ser utilizados por el programador Ejemplos: main int char if while for return

19 Constantes. Son identificadores con valores inalterables a lo largo de la ejecución de un programa. Constantes carácter: cualquier caracter individual encerrado en comillas simples como es representado como un numero entero entre 0 y 255 código ASCII. Constantes de caracteres: un conjunto de caracteres encerrados entre comillas dobles, como por ejemplo “hola”,”palabra”, “etc”

20 Constantes. Constantes numéricas: Números.
Constantes simbólicas: poseen un nombre como las variables, pero no pueden cambiar de valor se declaran con const.

21 Definición de las constantes.
const tipo nombre=valor; #define identificador valor Ejemplo #include <stdio.h> #define PI 3,14 #define TEXTO “Prueba” const int dolar=561; main…

22 Tipos de datos. Cuando en C se dice que una variable es de un tipo, se quiere decir que pertenece a un conjunto especifico de valores con los cuales se puede realizar un conjunto determinado de operaciones.

23 Variables. Similares a las constantes, la diferencia radica en que se les puede cambiar su valor y el tipo de dato que contienen debe ser definido. Reservan en una determinada posición de memoria, una determinada cantidad de memoria de acuerdo a su tipo, con un nombre que se usará para mantener un valor que puede ser referenciado y modificado en el programa. Todas las variables deben ser declaradas antes de ser usadas. int c;

24 Operador de tamaño sizeof.
Este se puede aplicar al nombre del tipo entre paréntesis o al identificador. En el primer caso devuelve el número de bytes que ocupa en memoria la variable de ese tipo, y en el segundo el número de bytes que ocupa la variable. sizeof(int) retorna 2 bytes

25 EJEMPLO: char car; /* car es una variable de tipo char */
CHAR (CARACTER) 1 BYTE RANGO: char unsigned char EJEMPLO: char car; /* car es una variable de tipo char */

26 EJEMPLO: int x; /* x es de tipo entero */
INT (ENTERO) 2 BYTES RANGO PARA 16 BITS: int unsigned int EJEMPLO: int x; /* x es de tipo entero */

27 EJEMPLO: short x,y; /* declara x e y como enteros cortos */
SHORT (ENTERO CORTO) 1 BYTE RANGO: short unsigned short EJEMPLO: short x,y; /* declara x e y como enteros cortos */

28 EJEMPLO: long var; /* var es de tipo long*/
LONG (ENTERO LARGO) 4 BYTES RANGO: long unsigned long EJEMPLO: long var; /* var es de tipo long*/

29 ENUM (ENUMERACIÓN) Tipo enumerado, lista de valores representados por identificadores. Ejemplo: enum semana { lunes, martes, miercoles, jueves, viernes, sabado, domingo} ; enum semana ayer /* ayer es un tipo enumerado semana * / /* lunes toma el valor 0 y domingo el valor 6* /

30 FLOAT (REALES EN SIMPLE PRECISION)
4 BYTES RANGO: E E45 negativos E E38 positivos Ejemplo: float x; /* x es un real */

31 DOUBLE (REALES EN DOBLE PRECISION)
8 BYTES RANGO: E E-324 negativos E E308 positivos EJEMPLO: double x; /* x es un real en doble precisión * /

32 Ejemplo: void f (int a); /* la función no retorna valores */
VOID (Vacío) Se utiliza para declarar funciones que no retornan ningun valor o no aceptan parametros. Ejemplo: void f (int a); /* la función no retorna valores */

33 Sentencias de declaración.
<tipo_dato> <identificador>; <tipo_dato> <identificador> = valor; <tipo_dato> <identificador1>, <identificador2>,…<identificadorn>; Ejemplo: float j; int i = 100; char a, b, c;

34 Declaración de variables.
Una vez que se ha declarado una variable es imposible hacerla cambiar de tipo. #include <stdio.h> int main(void) { int a; float a; /* ERROR!!! */ a = 2; return 0; }

35 Declaración con inicialización.
El valor inicial de una variable declarada esta indefinido. Si se accede al valor de una variable no inicializada el compilador no arrojará error, pero existirá un comportamiento indeterminado.

36 #include <stdio.h> int main(void) { int a = 2;
Ejemplo. #include <stdio.h> int main(void) { int a = 2; float b = 2.0, c, d = 1.0, e; b = a + c; return 0; } ¿Cuánto vale b?

37 Operadores. Los operadores son símbolos especiales que indican determinadas acciones a realizar sobre las variables y/o constantes sobre las que actúan el programa.

38 Operadores aritméticos.
Existen dos tipos de operadores aritméticos: Binarios (dos operandos): + suma. - resta. * multiplicación. / división. % resto ó módulo.

39 Operadores aritméticos.
Unarios. ++ incremento (suma 1). -- decremento (resta 1). - cambio de signo.

40 Sintaxis operadores aritméticos.
Binarios: <variable 1> <operador> <variable 2> Por ejemplo a + b Unarios: <variable> <operador> y al revés <operador> <variable> Por ejemplo – a, --a, o a ++.

41 Post/pre incremento/decremento
Los operadores ++ y -- pueden ir antes o después de una expresión. La diferencia es que el pre-incremento primero suma 1 a la variable y luego se asigna, y en el post-incremento primero se asigna y luego suma. Ejemplo: int x = 1,y; y = x ++; /* ‘y’ es 1 y ‘x’ vale 2*/ y = ++ x; /* ‘x’ vale 2 e ‘y’ también vale 2*/

42 Algunos principios. La división de dos números enteros proporciona un número entero. Los operadores solo funcionan con datos numéricos, no es posible por ejemplo concatenar strings con el +. La dualidad carácter entero hace que se pueda utilizar la suma o la resta (o cualquier otro operador aritmético) con variables o valores del tipo char. Ejemplo ‘a’ + 1 es ‘b’ (o el valor 98, ya que ‘a’ es 97). Recordar que ‘a’ no es “a”.

43 Operadores de asignación.
Los operadores aritméticos recién vistos tienen su correspondiente operador de asignación. = asignación simple. += Suma. -= Resta. *= multiplicación. /= división. %= resto.

44 Operadores de asignación.
Con estos operadores se pueden escribir de forma mas breve expresiones del tipo: n = n + 3 se puede escribir como n += 3 k = k * ( x – 2 ) se puede sustituir por k *= x - 2

45 Operadores relacionales.
Estos se utilizan para comparar el contenido de dos variables. En C existen 6 básicos: > mayor que. < menor que. >= mayor o igual que. <= menor o igual que. == igual que. != distinto que.

46 Operadores relacionales.
El resultado que devuelven estos operadores es 1 para Verdadero y 0 para Falso, sin embargo C considera como Falso el valor 0 y Verdadero cualquier valor distinto de 0.

47 Los operadores básicos son tres:
Operadores lógicos. Los operadores básicos son tres: && And || Or ! Not Actúan sobre expresiones lógicas, permitiendo unirlas y formar otras más complejas.

48 Operadores a nivel de bits.
Permiten efectuar operaciones bit a bit entre dos variables o constantes. & And bit a bit. | Or bit a bit. ! Not bit a bit. << x Desplazamiento a la izquierda en x bits. >> x Desplazamiento hacia la derecha en x bits.

49 Precedencia de operadores
La prioridad en la tabla esta dada desde la más alta a la más baja. Por claridad, siempre es mejor utilizar paréntesis para inducir un orden en la evaluación de las expresiones.

50 Precedencia de operadores

51 Conversión explicita e implícita de tipos
Cuando se evalúa una expresión y el resultado se asigna a una variable, se debe tener en cuenta el tipo de todos los operandos y la variable en la que se almacena. Conversion Implícita: Si se asigna el valor de un entero int a una variable de menor tamaño de bytes como char, el entero corto cambia a un valor entero automáticamente.

52 Conversión explicita e implícita de tipos
Ejemplo: int char Se puede asignar un entero int a un char. C se encarga de hacer la conversión de tipos de ahí que se denomina conversión implícita.

53 Conversión explicita e implícita de tipos
Pero en 1 byte (char) no caben los 4 bytes (long). C toma los 8 bits menos significativos del int y los almacena en el char. O sea preserva el valor solo si el número esta entre -128 y 127.

54 Operadores de conversión de tipos.
Conversión Explícita: Puede convertir un valor de un tipo de datos a otro compatible indicándolo explícitamente y NO delegando la conversión a C. Ejemplo: #include <stdio.h> int main(void) { int a = 1,b = 2; float x; x = a / ( float ) b; return ( 0 ); }

55 Operadores de entrada y salida.
Para la salida de datos se utiliza habitualmente printf. Es una función disponible en la biblioteca stdio.h El uso mas simple es para mostrar una cadena por pantalla. printf ( “un string” ); Para incluir salto de línea se debe incluir \n. printf ( “un string\n” );

56 Operadores de entrada y salida.
Para mostrar números enteros o flotantes se debe usar necesariamente cadenas con formato.

57 Ejemplo. Si a es una variable de tipo int con valor 5, b es una variable de tipo float con valor 1.0, y c es una variable de tipo char con valor 100, esta llamada a la función printf : printf ( "Un entero: %d, un flotante: %f, un byte: %hhd\n", a, b, c ); Por pantalla… Un entero: 5, un flotante: , un byte: 100

58 Operadores de entrada y salida.
Las marcas de formato para enteros aceptan modificadores. Un número positivo: reserva un número de espacios determinado (el que se indique) para representar el valor y muestra el entero alineado a la derecha. Ejemplo: la sentencia printf ( "[%6d]", 10 ); muestra en pantalla: [ 10]

59 Operadores de entrada y salida.
Un número negativo: reserva tantos espacios como indique el valor absoluto del número para representar el entero y muestra el valor alineado a la izquierda. Ejemplo: la sentencia printf ( "[%-6d]", 10 ); muestra en pantalla: [10 ]

60 Operadores de entrada y salida.
Un número que empieza por cero: reserva tantos espacios como indique el valor absoluto del número para representar el entero y muestra el valor alineado a la izquierda. Los espacios que no ocupa el entero se rellenan con ceros. Ejemplo: la sentencia printf ( "[%06d]", 10 ); muestra en pantalla: [000010]

61 Operadores de entrada y salida.
El signo +: muestra explícitamente el signo (positivo o negativo) del entero. Ejemplo: la sentencia printf ( "[%+6d]", 10 ); muestra en pantalla: [ +10]

62 Operadores de entrada y salida.
Hay dos notaciones alternativas para la representación de flotantes que podemos seleccionar mediante la marca de formato adecuada:

63 Operadores de entrada y salida.
La forma convencional muestra los números con una parte entera y una decimal separadas por un punto. La notación científica representa al número como una cantidad con una sola cifra entera y una parte decimal, pero seguida de la letra e y un valor entero. Por ejemplo, en notación científica, el número 10.1 se representa con e+01.

64 Operadores de entrada y salida.
Los modificadores de formato que se han presentado para los enteros son válidos para flotantes, además la posibilidad de fijar la precisión: Un punto seguido de un número: indica cuántos decimales se mostrarán. Ejemplo: la sentencia printf ( "[%6.2f]", 10.1 ); muestra en pantalla: [ 10.10]

65 Marcas de formato para texto.
C distingue entre caracteres y cadenas:

66 Marcas de formato para texto.
Por ejemplo printf ( "[%c]", 97 ); muestra en pantalla: [a] El valor 97 también puede representarse con el literal ’a’, así que esta otra sentencia printf ( "[%c]", ’a’ ); también muestra en pantalla:

67 Marcas de formato para texto.
printf ( "[%s]", "un string” ); En pantalla se muestra esto: [un string] También puedes usar números positivos y negativos como modificadores de estas marcas. Su efecto es reservar los espacios que se indique y alinear a derecha o izquierda.

68 Entrada por teclado. La función scanf, disponible al incluir stdio.h, permite leer datos por teclado. Se usa de un modo similar a printf: su primer argumento es una cadena con marcas de formato. A éste le siguen una o más direcciones de memoria. Si se desea leer por teclado el valor de una variable entera a: scanf ( "%d", &a );

69 Entrada por teclado. scanf recibe: Una cadena cuya marca de formato indica de qué tipo es el valor que vamos a leer por teclado:

70 Entrada por teclado. La dirección de memoria que corresponde al lugar en el que se depositará el valor leído. Se debe proporcionar una dirección de memoria por cada marca de formato indicada en el primero argumento. \n.

71 Ya se viene … … el CERTAMEN
FIN Ya se viene … … el CERTAMEN


Descargar ppt "Estructura de un programa C"

Presentaciones similares


Anuncios Google