GENERALIDADES SOBRE
ALGORITMOS
MENU DEL DIA
• Pseudocódigo,
diagramas de flujo y
algo de C.
• Introducción al
lenguaje C. programa.
• Manejo de variables.
• Expresiones.
• Entrada y salida en C.
• Ejemplos
PSEUDOCODIGO, DIAGRAMAS
DE FLUJO Y ALGO DE C
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:
– 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 dos datos de
entrada.
• Desplegar el resultado.
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
• 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
???????
PSEUDOCODIGO, DIAGRAMAS DE
FLUJO Y ALGO DE 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
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: %d\n”,c);
return 0;
}
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: %d\n”,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
• 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 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 que van a ser usadas en
el programa. Sigue la siguiente Sintaxis:
tipo nom_var1 <, nom_var2, nom_var3 <= valor_inicial>, nom_varN>;
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 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 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.
N  1985 . 25610
1 9 8 5 . 2 5 6
Parte Entera
Parte
Fraccionaria
1
2
N  110  9 10  8 10  5 10  2 10  5 10  6 10
3
2
1
0
3
PARENTESIS (SISTEMAS NUMERICOS - 3)
Relación entre las bases mas comunes
BASE 16
BASE 10
BASE 8
BASE 2
0
0
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
6
6
0110
?
234
?
?
7
7
7
0111
?
?
417
?
8
8
10
1000
?
?
?
11100101
9
9
11
1001
4AF
?
?
?
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_var1 <, nom_var2, nom_var3 <= v_inicial3>,…,nom_varN>;
• 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:
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
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 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_var1 <, nom_var2, nom_var3 <= v_inicial3>,…,nom_varN>;
double nom_var1 <, nom_var2, nom_var3 <= v_inicial3>,…,nom_varN>;
• 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.4e38 a 3.4e38. (Siendo 1.2e-38 el valor positivo mas pequeño posible)
 double : -1.7e308 a 1.7e308 . (Siendo 2.3e-308 el valor positivo mas pequeño
posible)
• Archivos cabecera relacionados: float.h
real:
real:
real:
real:
real:
x
y
a = 4.5, b = 3.0
c = -9., d, e = 1.5e-15
f = 4.03e19, g =.03
float x;
double y;
float a = 4.5, b = 3.0;
float c = -9., d, e = 1.5e-15;
double f = 4.03e19, g =.03;
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_var1 <, nom_var2, nom_var3 <= v_inicial3>,…,nom_varN>;
• 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 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
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.4E-38 ,….,3.4E38
double
1e-8
8
1.7E-308,…,1.7E308
Declaración e inicialización de variables
tipo nom_var1 <, nom_var2, nom_var3 <= valor_inicial>, nom_varN>;
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 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
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
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 7L como un
entero de 32 bits.
Tipo
Sufijo
Ejemplo
long
L
long a = -5L
long long
LL
long long b = 0xALL
unsigned long
UL
unsigned long c = 3UL
Unsigned long
long
ULL
Unsigned long long d =
9ULL
ENTRADA Y SALIDA EN C
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(‘cadena1’,…,’cadenaN’,var1,var2,…,varN);
printf(“cadena_de_control_y_formato”, <dato1,dato2,. . .,datoN>);
• Cadena de control: Contiene los datos y la forma de
mostrarlos. Es lo que va entre comillas.
• Datos (dato1, dato2,…,datoN): Variables, constantes o en
general expresiones de salida.
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 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)
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(var1,var2,…,varN);
printf(“especificacion_de_formato”, <<&>dato1,<&>dato2,. . .,<&>datoN>);
• Especificación de formato: Contiene caracteres de control asociados a las variables a las
cuales serán los datos llevados.
• Datos (dato1, dato2,…,datoN): 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
relacionados
• Realización de operaciones.
• Similitud al Pseudocódigo.
• Como lo hago en C?
EXPRESIONES
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 + 3*(2 + 3));
a = b = 4*6 + (4 + 3*(2 + 3));
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 operador_relacional operador_2
– Lógicos (!, &&, ||)
Nombre del operador
Simbolo en C
NOT
!
AND
&&
OR
||
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.
Y COMO DICE UN VIEJO AMIGO
Descargar

INTRODUCCION AL LENGUAJE C