PSEUDOCODIGO DIAGRAMAS DE FLUJO Y ALGO DE C

  • Slides: 41
Download presentation
PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Problema Realizar un algoritmo que

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Problema Realizar un algoritmo que solicite al usuario dos números enteros, realice su suma y la imprima en pantalla.

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución a punta de parlacho:

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución a punta de parlacho: – Datos de entrada: Los dos números (necesito dos variables para llevarlos. Bauticémoslas como a y b). – Datos de salida: Variable en la cual se almacena el resultado de la suma (c). – Proceso: ¿Que es lo que tengo que hacer? • Solicitar al usuario los datos de entrada. • Sumar los datos de entrada. • Desplegar el resultado.

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución a punta de pseudocódigo:

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución a punta de pseudocódigo: Algoritmo(sumar) Variables: entero: a, b, c INICIO ESCRIBA(“Digite el primer numero (entero)”) LEA(a) ESCRIBA(“Digite el segundo numero (entero)”) LEA(b) c a + b ESCRIBA(“La suma es: ”, c) FIN_INICIO Fin(sumar)

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución en diagrama de flujo:

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Solución en diagrama de flujo:

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Todo lo anterior esta bien,

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C • Todo lo anterior esta bien, pero a la hora de la verdad eso no entiende el computador como llevarlo a cabo. • Lenguajes de alto nivel (Lenguaje C). Computadora mata a Flanders ? ? ? ?

¿Qué es C++? • ¿Qué es eso del C? , ¿Con que se come?

¿Qué es C++? • ¿Qué es eso del C? , ¿Con que se come? – Básicamente el primer paso es familizarnos con la sintaxis (expresiones, reglas, etc. ). – Formulación del algoritmo en termino de esa nueva sintaxis.

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C Algoritmo(sumar) Variables: entero: a, b, c

PSEUDOCODIGO, DIAGRAMAS DE FLUJO Y ALGO DE C Algoritmo(sumar) Variables: entero: a, b, c INICIO ESCRIBA(“Digite el primer numero (entero)”) LEA(a) ESCRIBA(“Digite el segundo numero (entero)”) LEA(b) c a + b ESCRIBA(“La suma es: ”, c) FIN_INICIO Fin(sumar) #include<stdio. h> int main(){ int a, b, c = 0; printf(“Digite el primer numero (entero): ”); scanf(“%d”, &a); printf(“Digite el segundo numero (entero): ”); scanf(“%d”, &b); c = a + b; printf(“El resultado de la suma es: %dn”, c); return 0; }

INTRODUCCION AL LENGUAJE C ANATOMIA DE UN PROGRAMA EN C Librerías (uso de directivas

INTRODUCCION AL LENGUAJE C ANATOMIA DE UN PROGRAMA EN C Librerías (uso de directivas del preprocesador) #include<stdio. h> int main(){ int a, b, c = 0; printf(“Digite el primer numero: ”); scanf(“%d”, &a); printf(“Digite el segundo numero: ”); scanf(“%d”, &b); c = a + b; printf(“El resultado de la suma es: %dn”, c); return 0; } Programa principal Declaración de variables (las variables son locales en este caso). Instrucciones (Expresiones aritméticas y lógicas, condicionales (SI), ciclos (HAGA, MIENTRAS)).

INTRUCCION AL LENGUAJE C • Plantilla básica de un programa en C

INTRUCCION AL LENGUAJE C • Plantilla básica de un programa en C

INTRUCCION AL LENGUAJE C • Esto nos lleva a la siguiente conclusion algoritmo (nombre_algoritmo)

INTRUCCION AL LENGUAJE C • Esto nos lleva a la siguiente conclusion algoritmo (nombre_algoritmo) variables: tipo_1: lista_variables_1 tipo_2: lista_variables_2. . . tipo_N: lista_variables_N constantes: lista_identificadores = valor INICIO sentencia_1 sentencia_2. . . sentencia_N FIN_INICIO fin(nombre_algoritmo) #include <librerias_del_sistema> #include “librerias_propias” variables_globales; int main() { variables_locales; sentencia_1; sentencia_2; . . . sentencia_N; Return 0; }

MANEJO DE VARIABLES • Variables: Existen tres tipos de datos básicos; los enteros, los

MANEJO DE VARIABLES • Variables: Existen tres tipos de datos básicos; los enteros, los números de coma flotante (reales) y caracteres. • C cuenta con varias clases de tipos de datos fundamentales: enteros, caracteres y datos de coma flotante. Variables Pseudocódigo Enteras Reales alfanuméricas Variables en C (Tipos de datos) int float double char

MANEJO DE VARIABLES • • Declaración: consiste en definir cada una de las variables

MANEJO DE VARIABLES • • Declaración: consiste en definir cada una de las variables que van a ser usadas en el programa. Sigue la siguiente Sintaxis: tipo nom_var 1 <, nom_var 2, nom_var 3 <= valor_inicial>, nom_var. N>; En C Toda variable debe ser declarada antes de ser usada. Cosa que no se declara cosa que no existe y error!!!. La inicialización de esta es opcional TABLA SENCILLA DE EQUIVALENCIAS C-PSEUDOCODIGO variables: entero: num_estudiantes real: prom_grupo, estatura, peso entero: num_clases = 0 Pseudocódigo Lenguaje C entera int real float double alfanumérica char int num_estudiantes; float prom_grupo, estatura, peso; int num_clases = 0;

PARENTESIS (Bit, Byte, Word) Definición: Unidades usadas para describir unidades de datos o memoria

PARENTESIS (Bit, Byte, Word) Definición: Unidades usadas para describir unidades de datos o memoria en el computador Bit: Unidad mas pequeña de memoria usada para mantener uno de dos posibles valores, ‘ 1’ o ‘ 0’. 0 1 Byte: Unidad de memoria equivalente a 8 bits. 10010010 Word: Unidad de memoria que depende de la arquitectura del computador.

PARENTESIS (SISTEMAS NUMERICOS) Por sistema numérico nos referimos a la forma como un dato

PARENTESIS (SISTEMAS NUMERICOS) Por sistema numérico nos referimos a la forma como un dato numérico es representado. Este consiste básicamente de un conjunto ordenado de símbolos llamados dígitos, con relaciones definidas para la suma (+), resta (-), multiplicación (x) y división (÷) BASE SISTEMA NÚMERICO DIGITOS 2 Binario 0, 1 8 Octal 0, 1, 2, 3, 4, 5, 6, 7 10 Decimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 16 Hexadecimal 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F Se emplean dos tipos de notaciones, la notación posicional y la notación polinomial. 1 9 8 5. 2 5 6 Parte Entera Parte Fraccionaria

PARENTESIS (SISTEMAS NUMERICOS - 3) Relación entre las bases mas comunes BASE 16 BASE

PARENTESIS (SISTEMAS NUMERICOS - 3) Relación entre las bases mas comunes BASE 16 BASE 10 BASE 8 BASE 2 0 0000 1 1 1 0001 2 2 2 0010 3 3 3 0011 4 4 4 0100 5 5 5 0101 BASE 16 6 0110 ? 234 ? ? 7 7 7 0111 ? ? 417 ? 8 8 10 1000 ? ? ? 11100101 9 9 11 1001 4 AF ? ? ? A 10 12 1010 B 11 13 1011 C 12 14 1100 D 13 15 1101 E 14 16 1110 F 15 17 1111 Realizar algunos ejercicios de conversión de bases BASE 10 BASE 8 BASE 2

VARIABLES ENTERAS (TIPO int) • Declaración: int nom_var 1 <, nom_var 2, nom_var 3

VARIABLES ENTERAS (TIPO int) • Declaración: int nom_var 1 <, nom_var 2, nom_var 3 <= v_inicial 3>, …, nom_var. N>; • Tamaño de almacenamiento: Depende de la arquitectura puede ser 2 o 4 bytes. • Rango de la variable: Depende del tamaño de almacenamiento ü 2 bytes: -32768 a 32767 ü 4 bytes: -2147483648 a 2147483647 • Archivos cabecera relacionados: limits. h (En el cual se definen un numero de identificadores útiles para definir los limites de datos de tipo entero) entero: entero: num_vacas num_perros, num_gatos , num_gallos num_est = 45, num_prof = 3 num_x = -9, num_y, num_z num_deudas = 400000 int int int num_vacas; num_perros, num_gatos , num_gallos; num_est = 45, num_prof = 3; num_x = -9, num_y, num_z; num_deudas = 400000;

VARIABLES DE REALES (TIPO float o double) • Declaración: Se manejan dos tipos de

VARIABLES DE REALES (TIPO float o double) • Declaración: Se manejan dos tipos de datos para las variables reales, por un lado están los datos tipo float empleadas para variables con precisión simple por el otro están los datos tipo double para variables con doble precisión. La sintaxis para declarar este tipo de variables se muestra a continuación: float nom_var 1 <, nom_var 2, nom_var 3 <= v_inicial 3>, …, nom_var. N>; double nom_var 1 <, nom_var 2, nom_var 3 <= v_inicial 3>, …, nom_var. N>; • Tamaño de almacenamiento: Depende de la precisión del tipo de dato: ü float: 4 bytes. (Precisión de 6 dígitos). ü double: 8 bytes (Precisión de 15 dígitos). • Rango de la variable: ü float: -3. 4 e 38 a 3. 4 e 38. (Siendo 1. 2 e-38 el valor positivo mas pequeño posible) ü double : -1. 7 e 308 a 1. 7 e 308. (Siendo 2. 3 e-308 el valor positivo mas pequeño posible) • Archivos cabecera relacionados: float. h real: real: x y a = 4. 5, b = 3. 0 c = -9. , d, e = 1. 5 e-15 f = 4. 03 e 19, g =. 03 float x; double y; float a = 4. 5, b = 3. 0; float c = -9. , d, e = 1. 5 e-15; double f = 4. 03 e 19, g =. 03;

VARIABLES TIPO CARACTER (TIPO char) • Declaración: Estas variables son empleadas para el manejo

VARIABLES TIPO CARACTER (TIPO char) • Declaración: Estas variables son empleadas para el manejo de datos alfanumericos tales como letras del alfabeto y otros caracteres tales como #, $, % y * entre otros, tambien pueden ser usadas para la representación de números enteros: char nom_var 1 <, nom_var 2, nom_var 3 <= v_inicial 3>, …, nom_var. N>; • Tamaño de almacenamiento: 1 byte • Rango de la variable: -128 a 127 • Los caracteres representados se hallan en la tabla ASCII la cual asocia un valor entero positivo a un carácter determinado. • Nota: Es de anotar que solo hablamos de un solo carácter. El caso de las cadenas alfanuméricas después lo trataremos. alfanumerico: sexo = ‘F’ alfanumerico: grado = ‘A’, caracter = 64 alfanumerico: letra char sexo = ‘F’; char grado = ‘A’, caracter = 64; char letra

SOBRE LOS NOMBRES DE LAS VARIABLES • Identificadores: Nombres que se le dan a

SOBRE LOS NOMBRES DE LAS VARIABLES • Identificadores: Nombres que se le dan a las constantes o variables. • Reglas a seguir en el momento de nombrar una variable: ü Los identificadores no pueden tener el mismo nombre de las palabras reservadas. ü Elegir nombres significativos (es decir, relacionados con aquello a lo que esta haciendo referencia la variable). ü El primer carácter del nombre de una variable puede ser un letra (mayúscula o minúscula) o una raya baja (_). ü Un nombre de una variable puede tener como caracteres letras (mayúsculas y minúsculas), dígitos y el carácter raya baja (_). Declaración errónea de las variables Declaración correcta de las variables

PALABRAS RESERVADAS

PALABRAS RESERVADAS

RECORDERIS TIPOS FUNDAMENTALES DE DATOS • Cuando declaro una variable la elección del tipo

RECORDERIS TIPOS FUNDAMENTALES DE DATOS • Cuando declaro una variable la elección del tipo de dato depende del propósito para el cual voy a usar la variable. Tipo Ejemplo Tamaño en bytes Rango (minimo-maximo) char ´c´ 1 0, …, 255 int 1024 2 (o 4, depende de la arquitectura) -32768, …, 32767 (si el tamaño en bytes es 2) float 10. 5 4 3. 4 E-38 , …. , 3. 4 E 38 double 1 e-8 8 1. 7 E-308, …, 1. 7 E 308 Declaración e inicialización de variables tipo nom_var 1 <, nom_var 2, nom_var 3 <= valor_inicial>, nom_var. N>;

RECORDERIS TIPOS FUNDAMENTALES DE DATOS (2) Una variable no puede ser usada antes no

RECORDERIS TIPOS FUNDAMENTALES DE DATOS (2) Una variable no puede ser usada antes no ha sido previamente declarada.

MANEJO DE VARIABLES Hemos visto que las variables tienen un rango ¿Pero que pasa

MANEJO DE VARIABLES Hemos visto que las variables tienen un rango ¿Pero que pasa si una variable determinada se pasa del rango? • Respuesta: Sucede un overflow de la variable. • Hay un conjunto de calificadores que pueden ser aplicados a los tipos básicos (int, char, double y float). Modificador Descripción long Fuerza a un tipo int a ser de 4 bytes, y fuerza a un tipo double a ser mas largo que double. No puede ser usado con short Fuerza a un tipo int a ser de 2 bytes de longitud. No puede ser usado con long. unsigned Causa que el compilador (y CPU) para tratar el numero como positivo solamente. (para un entero de 16 bit: 32768 a 32767 0 a 65535).

MANEJO DE VARIABLES

MANEJO DE VARIABLES

MANEJO DE VARIABLES Algunas veces usted podria desear que el compilador almacene un pequeño

MANEJO DE VARIABLES Algunas veces usted podria desear que el compilador almacene un pequeño numero como un entero long. Para hacer que una constante pequeña sea tratada como un tipo long, se añada l o L como sufijo. Asi un sistema con int de 16 bit y con long de 32 bit tratara el entero 7 como un entero de 16 bits y el entero 7 L como un entero de 32 bits. Tipo Sufijo Ejemplo long L long a = -5 L long LL long b = 0 x. ALL unsigned long UL unsigned long c = 3 UL Unsigned long ULL Unsigned long d = 9 ULL

ENTRADA Y SALIDA EN C

ENTRADA Y SALIDA EN C

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (1) Como hemos visto ya hemos trabajado

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (1) Como hemos visto ya hemos trabajado con algunos de los diferentes tipos de datos que C nos brinda pero aun no tenemos manera de ver que valor tienen pues no las hemos desplegado en pantalla. C proporciona varias funciones para imprimir datos en pantalla, por ahora solo nos vamos a centrar en la función printf la cual es una de las implementaciones en C de la función ESCRIBA (vista antes por nosotros en Pseudocódigo).

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (2) ESCRIBA(‘cadena 1’, …, ’cadena. N’, var

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (2) ESCRIBA(‘cadena 1’, …, ’cadena. N’, var 1, var 2, …, var. N); printf(“cadena_de_control_y_formato”, <dato 1, dato 2, . . . , dato. N>); • Cadena de control: Contiene los datos y la forma de mostrarlos. Es lo que va entre comillas. • Datos (dato 1, dato 2, …, dato. N): Variables, constantes o en general expresiones de salida.

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (3) Para imprimir variables en pantalla usando

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (3) Para imprimir variables en pantalla usando la función printf, cada tipo de dato tiene su especificador de control, la siguiente tabla muestra los especificadores basicos Especificador Significado %d Usado para imprimir un valor entero en decimal %o Usado para imprimir datos enteros en notación octal %x (%X) Usado para imprimir variables enteras en notación hexadecimal %#o, %#x Permite imprimir variables enteras en cualquiera de los dos formatos mostrando los prefijos %u Permite imprimir valores enteros sin signo %ld Permite imprimir variables tipo long %lo Imprime variables tipo long en formato octal %lx Imprime variables tipo long en formato hexadecimal

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (4) Especificador Significado %h Permite imprimir variables

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (4) Especificador Significado %h Permite imprimir variables tipo short %hd Imprime variables tipo short en formato decimal %hx Imprime variables tipo short en formato decimal %lu Imprime variables tipo unsigned long %lld Permite imprimir variables tipo long %llu Permite imprimir variables tipo long sin signo %c Usado para imprimir caracteres sencillos %s Usado para imprimir cadenas de caracteres

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (5)

IMPRIMIENDO VARIABLES EN PANTALLA - ASPECTOS BASICOS (5)

MANEJO DE VARIABLES – ¿COMO ENTRAR INGRESAR VALORES A LAS VARIABLES? ¿Ahora entramos en

MANEJO DE VARIABLES – ¿COMO ENTRAR INGRESAR VALORES A LAS VARIABLES? ¿Ahora entramos en el caso opuesto como puedo yo como usuario y no como programador asignar el valor a una variable, es decir como llevo un valor ingresado por teclado a una variable? Al igual que en el caso escriba, C proporciona varias funciones para la entrada de datos. Una de las funciones de C que implementa la función LEA (implementada en Pseudocódigo) es la función scanf.

ASPECTOS BASICOS DE LA ENTRADA EN C LEA(var 1, var 2, …, var. N);

ASPECTOS BASICOS DE LA ENTRADA EN C LEA(var 1, var 2, …, var. N); printf(“especificacion_de_formato”, <<&>dato 1, <&>dato 2, . . . , <&>dato. N>); • Especificación de formato: Contiene caracteres de control asociados a las variables a las cuales serán los datos llevados. • Datos (dato 1, dato 2, …, dato. N): Variables, en las cuales seran almacenados los datos ingresados desde el teclado.

EXPRESIONES • Que es una expresión? Es una sucesión de operadores y operandos debidamente

EXPRESIONES • Que es una expresión? Es una sucesión de operadores y operandos debidamente relacionados • Realización de operaciones. • Similitud al Pseudocódigo. • Como lo hago en C?

EXPRESIONES

EXPRESIONES

EXPRESIONES • Operadores y expresiones: – Aritméticos, lógicos y relacionales (+, - , *,

EXPRESIONES • Operadores y expresiones: – Aritméticos, lógicos y relacionales (+, - , *, /, %). – De manipulación de bits – Condicionales. – Especiales. • Cuando concurren en una misma expresión diferentes tipos de operadores se dan las reglas de prioridad y asociatividad.

EXPRESIONES • Aterrizando un poco lo anterior puntaje = -(2 + 5)*6 + (4

EXPRESIONES • Aterrizando un poco lo anterior puntaje = -(2 + 5)*6 + (4 + 3*(2 + 3)); a = b = 4*6 + (4 + 3*(2 + 3));

EXPRESIONES • Operadores – Operador de asignación (=) • Sintaxis: Variable = expresión •

EXPRESIONES • Operadores – Operador de asignación (=) • Sintaxis: Variable = expresión • Ejemplos: a = b*n, c = c + 1; d = d%3 • Abreviados (a = a op b, donde op puede ser +, -, *, /, %). – Operadores aritméticos • Binarios (+, -, *, /, %): c = a+b • Unitarios (++, --). – Pre(incremento/decremento): ++c, --c – Post(incremento/decremento): d++, d--. • Cuando concurren en una misma expresión diferentes tipos de operadores se dan las reglas de prioridad y asociatividad. Prioridad (mayor a menor) Asociatividad () Izquierda - derecha +, - (unitario) Derecha - izquierda *, /, % Izquierda – derecha +, - Izquierda - derecha = Derecha - izquierda

EXPRESIONES • Operadores – Relacionales (==, !=, <, >, <=, >=) • Sintaxis: operador_1

EXPRESIONES • Operadores – Relacionales (==, !=, <, >, <=, >=) • Sintaxis: operador_1 operador_relacional operador_2 – Lógicos (!, &&, ||) Nombre del operador Simbolo en C NOT ! AND && OR ||

EXPRESIONES • Operadores – Operadores de manipuladion de bits • • • Solo se

EXPRESIONES • Operadores – Operadores de manipuladion de bits • • • Solo se aplican a variables o constantes char, int o long. Algunos son: &, |, ^, ~, <<, >> Se pueden combinar con el operador de asignacion para formar abreviados. (a<<=b es lo mismo que a = a << b) – Operadores especiales • • Algunos son: *, &, . , -> Operador condicional ternario (? ) Operador coma (, ): Llamadas de funciones, declaracion de variables. Operador(): Sirve para la agrupacion de expresiones. Operador []: Usado en arrays. Operador sizeof(). Devuelve el tamaño en bytes de una variable o tipo de dato. Cast: Permite la conversión explicita de tipos.