SlideShare una empresa de Scribd logo
1 de 112
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 1
09/03/2022
Representación de la
información en datos simples
y estructuras de control
Unidad 2
Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo
para uso de los cursos de Algoritmos y Lógica de Programación
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 2
09/03/2022
Objetivo general de la Unidad 2
Implementar los tipos de datos básicos y las estructuras de
control a través de un lenguaje de programación
estructurado para el diseño eficaz de los programas en la
resolución de diversos problemas.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 3
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 4
09/03/2022
Tipos de Datos Básicos
• Si nos detenemos a analizar los datos de entrada y de salida
podremos observar que se requieren números (base, altura,
área) y letras (mensajes).
• El computador puede manejar datos de diferente tipo, teniendo
cada uno, una representación interna basada en la cantidad de
bytes (8 bits) que ellos ocupan en memoria (RAM) y el orden
en el cual se colocan los bits.
• Usualmente la cantidad de bytes de un tipo de dato depende
del hardware del computador.
• Los tipos de datos básicos son:
– Numéricos
– Caracteres
– Lógicos
• Cada tipo de dato tiene dos características que lo definen:
– Dominio, corresponde al rango de valores que el tipo de dato puede
tomar.
– Conjunto de operaciones que se pueden realizar sobre el tipo de
dato
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 5
09/03/2022
Datos Numéricos
• La base y la altura corresponden a datos numéricos.
• La computadora no tiene espacio para representar todos
los números existentes, pues son infinitos. Dependiendo
del hardware, podrán representar solo un subconjunto
de estos números (Dominio).
• Los datos numéricos pueden ser de dos tipos:
– Enteros → integer, int
• Números completos, que no tienen componentes fraccionarios
• Pueden ser con o sin signo
• Algunas computadoras pueden representar cantidades enteras
desde –32768 a +32767
– Reales → real, float, double
• Siempre tienen un punto decimal
• Pueden ser positivos o negativos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 6
09/03/2022
Cadenas y Caracteres
• Los caracteres, representan las teclas del teclado, y
forman un conjunto finito.
• Cada tecla en el teclado, tiene una representación
numérica, de esta forma la computadora entiende lo
que tecleamos. Ella recibe el “número” y lo traduce
luego a la representación correspondiente.
• Las correspondencias código numérico – carácter, se
conocen como estándares, existen varios, el mas
usado es el ASCII
• El ASCII define 127 caracteres, con sus
correspondientes códigos, la letra A, por ejemplo,
tiene el código 65 (un entero), y así.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 7
09/03/2022
Cadenas y Caracteres
• Para poder distinguir los datos de tipo caracter (char),
estos se encierran en comillas simples.
• Los datos de tipo carácter se pueden clasificar en:
– Alfabéticos (‘a’, ’b’, ’c’, ’z’, ... , ’A’, ’B’, ’C’, ...., ’Z’)
– Numéricos (‘0’, ’1’, ’2’, ’3’,...,’9’)
– Especiales (‘+’, ’-’, ’;’, ’-’, ’:’, ’&’, ’$’...)
• Las cadenas (string), entonces, son un conjunto de
caracteres. Para poderlas distinguir, usualmente se las
encierra en comillas dobles.
– Ejemplo: “Es un rectángulo”, “Es un cuadrado”
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 8
09/03/2022
Datos Lógicos
• En el procesamiento, para conocer si el polígono es un
cuadrado o un rectángulo, se deberá verificar si la base
es igual en magnitud a la altura.
• Existen datos que solo pueden ser Falsos o Verdaderos.
Por Ejemplo:
– ¿La base y la altura son iguales?
– ¿Es rectángulo?
– ¿Es cuadrado?
• A este tipo de datos, se los conoce como datos
booleanos o lógicos → Boolean
• Usualmente se utilizan para representar las alternativas
(verdadero/falso) a ciertas condiciones.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 9
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 10
09/03/2022
Constantes y Variables
Calcular el área de un círculo cuyo radio es r
• La fórmula del área es A =  * r2
– ¿Cuánto vale A, si r es 9?
– ¿Cuánto vale A, si el valor de r varia a 2?
• ¿Que valor de esta fórmula tan sencilla nunca
va a cambiar?
• ¿Que valores dentro de la fórmula, siempre
estarán sujetos a cambios?
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 11
09/03/2022
Constantes
• Dentro de un cálculo o en los pasos para
solucionar un problema, existirán valores que
nunca van a cambiar y se los conoce como
constantes.
– Por ejemplo: Pi es una constante.
• Las constantes pueden ser datos de todo tipo.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 12
09/03/2022
Variables
• El valor del radio, y el valor del Área, siempre podrán
cambiar, son variables.
• Una variable es un dato cuyo valor puede cambiar
durante un cálculo, o en la resolución de un problema.
Por Ejemplo:
– El lado para calcular el perímetro del cuadrado
– Para registrarse, un alumno debe dar su número de
matrícula, el código de la materia, y el paralelo.
• Pueden existir variables de cualquiera de los tipos
mencionados.
• En computación, una variable es un espacio en memoria,
donde se almacena un dato, y este puede variar durante
un proceso dado.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 13
09/03/2022
Variables
• Para poder trabajar con variables hay que seguir ciertas
reglas:
– A una variable se le debe dar un nombre, o
identificador.
– El nombre de una variable:
• Sólo puede comenzar con letras o con el carácter _
• Puede contener letras, números y el carácter _ , y
no caracteres especiales (‘&’, ‘%’, ‘?’, etc)
• En ciertos lenguajes de programación, se hace
distinción entre mayúsculas y minúsculas.
– Por ejemplo: en lenguaje C la variable Lado no
es la misma que lado.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 14
09/03/2022
Ejemplos de Nombres de Variables
• Incorrecto:
– 1_lado: Una variable no puede empezar con un
número.
– total$: Una variable no puede incluir caracteres
especiales
– Código de materia: una variable no puede incluir
espacios en blanco ni tildes.
• Correcto: lado, codigo_materia, nota1
• Los nombres de variables deben ser
significativos y tener relación con el proceso en
el que están participando.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 15
09/03/2022
Ámbito de variables
Ambito: Área del programa
en la cual la variable es
valida (existe).
Caja
negra
Global: Valida en todo el programa.
Local: Su ámbito es limitado al bloque en
el cual se declaro y no puede ser accedida
fuera de dicho bloque.
Sección de
código
encerrada entre
llaves ({})
#include <stdio.h>
#include <stdlib.h>
int a, b = 1, c = 2;
int main() {
int d = 3, e = 3;
{
int f = 8;
int g = 9;
}
return 0;
}
Variables globales: a,
b, c
Variables locales: d, e,
f, g
f , g,
d, e,
a, b,
c
d, e,
a, b,
c
a, b,
c
Bloque
1
Bloque
2
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 16
09/03/2022
Ámbito de variables
• Los parámetros y variables, dentro de una función,
– Son variables con ámbito local
– Solo son validas en ese ambiente,
• Las variables también pueden tener un ámbito “global”
– Empiezan a existir desde su declaración, y
– Son liberadas con el alcance de un archivo: variables
externas
• Para darle privacidad a una variable
– Para que no pueda ser vista por otros archivos,
– Se la declara static, con ámbito global para archivo
únicamente
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 17
09/03/2022
Ocultamiento de variables
Ocultamiento de variables: Se da cuando se declara una variable con el mismo
nombre de una variable global (o de otra local con un ámbito mayor). Básicamente lo
que sucede es que el valor del ámbito mas interno prima sobre el valor del ámbito mas
externo.
#include <stdio.h>
#include <stdlib.h>
int a, b = 1;
int main() {
int a = 3;
printf("a: %dn",a);
printf("b: %dn",b);
b++;
{
int a = 10,b = -8, c = 2;
b++;
printf("a: %dn",a);
printf("b: %dn",b);
printf("c: %dn",c);
a+=8;
}
printf("a: %dn",a);
printf("b: %dn",b);
return 0;
}
Ocultamiento de la
variable global a.
Ocultamiento de
las variables
locales a y b.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 18
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 19
09/03/2022
Operador de Asignación
• Para que una variable pueda cambiar de valor,
debemos asignarle dicho valor.
• Para realizar esto, utilizamos el operador de
asignación(=)
• El formato general para cambiar el valor de una
variable es:
– Nombre de la variable = expresión
– A = 4
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 20
09/03/2022
• La asignación se efectúa de derecha a izquierda.
• Cualquier valor que haya tenido la variable antes de la
asignación, se pierde, es sobrescrito con el nuevo valor.
– A = 5
– A = A*5
• La computadora ejecuta la asignación de dos formas:
– Si hay operaciones del lado derecho, las efectúa, y calcula el
resultado, luego
– Asigna el resultado a la variable
En lenguaje C, el operador de asignación se puede usar para
cambiar el valor de variables de cualquier tipo, menos cadenas de
caracteres.
Operador de Asignación
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 21
09/03/2022
Operadores aritméticos
• Con los datos numéricos se pueden efectuar operaciones
matemáticas, a través de los operadores aritméticos:
Operador Significado Tipos de
operandos
Ejemplo Tipo de resultado Ejemplo
+ Suma Entero o real 4+2
4.35+ 2
4.35 + 2.5
Entero o real 6
6.35
6.85
- Resta Entero o real 4-2
4.35- 2
4.35 - 2.5
Entero o real 2
2.35
1.85
Div División entera Entero 10 div 6 Entero 1
Mod (%) Modulo Entero 10 mod 6 Entero 4
* Multiplicación Entero o real 4*2
4.35* 2
4.35 * 2.5
Entero o real 8
8.7
10.875
/ División Real 4.00/2.00
4.35/ 2.5
Real 2.00
1.74
^ Potenciación Entero o real 4^2
4.5 ^ 2
4.5 ^ 0.5
Entero o real 16
20.25
2.121
Precedencia
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 22
09/03/2022
Operadores Lógicos
• Con los datos lógicos se pueden efectuar
operaciones lógicas.
Operador Significado Ejemplo Tipo de
resultado
Resultado
No(not) Negación de un valor No(6>10) Entero o real Verdadero
Y(and) Conjunción (1<5) y
(5>10)
Ecuador
clasificó y
Colombia no
clasificó
Entero o real Falso
Verdadero
O (or) Disyunción (5>10) o
(10<9)
Entero o real Falso
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 23
09/03/2022
Operadores Relacionales
◼ Las operaciones relacionales, se pueden aplicar sobre cualquier dato, pero
siempre dan como resultado datos lógicos
Operador Significado Ejemplo Resultado
< Menor que El número de paralelos de Fundamentos es
menor que el número de paralelos de Cálculo I
Verdadero
> Mayor que 8>10 Falso
== Igual que 9 == 15 Falso
>= Mayor o
igual que
10 >= 10 Verdadero
<= Menor o
igual que
8 <= 10 Falso
!= Diferente de 5 <> 5
El precio de una entrada en el Supercine es
diferente de el de las entradas en el Cinemark
Falso
Verdadero
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 24
09/03/2022
Las Enumeraciones en las
Computadoras
• Para los computadores diferentes tipos de
datos se representan de diferentes formas
• Entonces diferentes datos pueden ser
representados de diferentes forma
• El proceso de listar todos los elementos en el
dominio de un tipo se denomina enumeración
• Para comprender mejor el concepto
trataremos de la representación de la
enumeración por la máquina
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 25
09/03/2022
Representación Interna de las
Enumeraciones
• En un computador los datos son
representados en forma numérica, puesto
que todas las operaciones son hechas con
números.
• Así un entero para cada elemento de la
lista de datos es asignado.
• A este proceso se le llama Codificación en
entero
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 26
09/03/2022
• En C la enumeración se la puede proveer fácilmente
mediante la sentencia #define la cual definía una
constante. Ej:
#define Domingo 0
#define Lunes 1
#define Martes 2
#define Miércoles 3
#define Jueves 4
#define Viernes 5
#define Sábado 6
Aquí se asigna un entero por cada día de la semana
Tipos de Datos Enumerados
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 27
09/03/2022
Tipos de Datos Enumerados:
Declaración
• En C se provee una sintaxis para declarar
un tipo de datos enumerados, de tal forma
que no es necesario colocar el valor
entero para cada elemento
• La sintaxis del tipo de dato enumerado es
la siguiente
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 28
09/03/2022
Tipos de Datos Enumerados: Sintaxis
Typedef enum {
lista de elementos
} nombre_del_tipo;
• Donde:
– La Lista de elementos es el conjunto de nombres a ser
representados, separados por comas
– El nombre del tipo identifica al nuevo tipo enumerado
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 29
09/03/2022
Ejemplo
Typedef enum{
Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado
} diaSemanaT;
• Aquí se define un nuevo tipo llamado diaSemanaT
• Este tipo de dato contiene los 7 valores definidos con
#define
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 30
09/03/2022
Tipos de Datos Enumerados
• Al definir un tipo enumerado, el compilador asigna
automáticamente los valores comenzando desde el 0 en
adelante
• Si se desea definir el inicio de la enumeración, se lo
debe hacer explícitamente en el inicio de la lista de
valores. Ejemplo:
Typedef enum {
Soltero =1,
Casado =2,
Separado= 3,
}estadoCivilT;
Typedef enum {
Soltero =1,
Casado ,
Separado,
}estadoCivilT;
Las dos formas de definición representan lo mismo.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 31
09/03/2022
Tipos de Datos Enumerados:
Operaciones
• El compilador de C convierte de manera
automática los valores del tipo enumerado en
valores enteros, por lo cual se pueden
realizar las mismas operaciones que se
realizan con los enteros
• Pero se debe tener cuidado con las
operaciones de asignación o de cambio de
valor, puesto que puede caer en un valor no
válido para el tipo de dato enumerado
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 32
09/03/2022
Tipos Escalares de Datos
• Tipos de datos tales como los
enumerados, que se comportan como
enteros son denominados como
escalares.
• Estos tipos de datos son automáticamente
convertidos a enteros siempre que lo use
en una expresión
• Ejemplo: Una variable de tipo enumerado
que puede ser usado en un bloque switch
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 33
09/03/2022
Ejemplo
Typedef enum {Norte, Este, Sur, Oeste} direccionT;
direccionT DireccionOpuesta (direccionT dir)
{
switch (dir){
case Norte : return (Sur);
case Este : return (Oeste);
case Sur : return (Norte);
case Oeste : return (Este);
}
}
Así si llamamos a la función con: DirecciónOpuesta(Norte),
retornará el valor de Sur
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 34
09/03/2022
Caracteres
• Son la parte básica para todo proceso de
datos
• Es la parte atómica de otros tipos de datos
como los Strings
• Son un tipo de dato escalar y por eso son
parte también del tipo enumerado
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 35
09/03/2022
Caracteres: Tipo de Dato char
• Representa un simple carácter.
• El dominio del tipo de datos char es el
conjunto de símbolos que pueden ser
presentados en pantalla o tipeados por
teclado.
• Internamente de la máquina cada carácter se
representa como un tipo enumerado usando
el código ASCII (código estándar americano
para el intercambio de información).
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 36
09/03/2022
El código ASCII
• Todo carácter está representado
internamente por la máquina como
cualquier tipo escalar
• El código usado es el código de
caracteres
• Este código podría ser asignado de forma
independiente, pero debido a la
interactividad con otras máquinas se usa
un estándar, el código ASCII
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 37
09/03/2022
Propiedades importantes del código
ASCII
• Los códigos para los caracteres que
representan dígitos del 0 al 9 son
consecutivos
• Las letras en el alfabeto están divididos en
dos rangos: uno para las mayúsculas (A-
Z) y otro para las minúsculas (a-z). Sin
embargo dentro de cada rango los valores
ASCII son consecutivos.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 38
09/03/2022
Constantes de Tipo Caracter
• Es un estándar para referirse a un carácter
específico en C
• Así para referirse a el código ASCII de la letra A,
se especifica mediante ‘A’, el cual es el 65
• Para referirse al código del carácter 9, de forma
similar, ‘9’
• Se debe tener cuidado que al referirse al carácter,
no es lo mismo que referirse al valor entero
• De tal forma que se puede trabajar tanto con los
caracteres como su código ASCII
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 39
09/03/2022
Caracteres Especiales
• Son aquellos caracteres representados
por el código ASCII que no se pueden
imprimir.
• Estos tipos de caracteres usan la
combinación de  más un carácter
• Se denominan Secuencias de Escape
• A continuación se detalla la tabla de estos
caracteres.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 40
09/03/2022
Secuencias de Escape
a Alerta de Sonido
b BackSpace
f Nueva página
n Nueva línea
r Retorno de linea
t Tabulación horizontal
v Tabulación vertical
0 Carácter nulo
 El carácter 
’ El caracter ‘
” El carácter “
ddd
El carácter que representa el código ASCII para el número
octal ddd
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 41
09/03/2022
Aritmética de Caracteres
• En C los caracteres pueden ser
manipulados como si fueran enteros, sin
requerir conversiones especiales
• Esto se da debido a que son
representados en un valor ASCII
manejado como entero
• Se debe tener cuidado al querer asignar
un valor entero a un carácter, pues puede
no corresponder al rango del código ASCII
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 42
09/03/2022
Caracteres: Operaciones
• Sumar un entero a un carácter
• Restando un entero de un caracter
• Restando un caracter de otro
• Comparando dos caracteres entre sí
• Se debe tomar en cuenta que al sumar o
restar no se salga del rango de
representación ASCII
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 43
09/03/2022
Ejemplos
• char RandomLetra(void)
{
return (RandomInteger(‘A’, ‘Z’));
}
• if (ch >= ‘0’ && ch <=‘9’)
• if (ch >= ‘A’ && ch <=‘Z’)
• if (ch >= ‘a’ && ch <=‘z’)
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 44
09/03/2022
La interfaz ctype.h
• Contiene un gran número de funciones para
determinar el tipo de carácter, entre las
principales tenemos:
• islower(ch) retorna TRUE si el carácter ch es minúscula
• isupper(ch) retorna TRUE si el carácter ch es mayúscula
• isalpha(ch) retorna TRUE si ch es un valor alfabético
• isdigit(ch) retorna TRUE si ch es un dígito
• isalnum(ch) retorna TRUE si ch es un valor alfanumérico
• ispunct(ch) retorna TRUE si ch es un símbolo de puntuación
• isspace(ch) retorna TRUE si ch es un carácter en blanco
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 45
09/03/2022
La interface ctype.h
• Funciones de conversión de caracteres
– tolower(ch) Si ch es una letra mayúscula, retorna su equivalente
en minúscula
– toupper(ch) Si ch es una letra minúscula, retorna su equivalente
en mayúscula
• La implementación de la función tolower es:
char tolower(char ch)
{
if (ch>=‘A’ && ch<=‘Z’){
return (ch + (‘a’ – ‘A’));
} else {
return (ch);
}
}
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 46
09/03/2022
Sentencias de Control que Involucran
Caracteres
• Se puede implementar este tipo de
sentencias debido a que todo caracter es
de tipo escalar
• Se pueden incluir en Sentencias For y
Switch.
• Ej. :
for (ch = ‘A’; ch<=‘Z’; ch++)
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 47
09/03/2022
Ejemplo
Bool EsVocal(char ch)
{
switch(tolower(ch)){
case ‘a’: case ‘e’ : case ‘i’ : case ‘o’ : case ‘u’ : return
(TRUE);
default : return (FALSE);
}
}
• Este ejemplo identifica si ch es una vocal
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 48
09/03/2022
Entrada y salida de Caracteres
• Existen funciones para la entrada y salida
de caracteres
• Para ingresar caracteres existen las
funciones getchar y putchar de la librería
estandard de I/O, las que se tratarán más
adelante
• Para mostrar caracteres se usa la función
printf con el formato %c
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 49
09/03/2022
Ejemplo Entrada/Salida caracter
main()
{
char ch;
printf (“Las vocales son:”);
for (ch= ‘A’; ch<= ‘Z’; ch++){
if (EsVocal(ch)) printf (“%c”, ch);
}
printf(“n”);
}
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 50
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 51
09/03/2022
Operaciones con Cadenas y
Caracteres
• Con los caracteres se pueden aplicar las mismas
funciones que sobre los números enteros, debido
a que en la computadora cada carácter tiene su
código numérico correspondiente.
• Ejemplo:
– ‘A’ + 2 = ‘C’
– ‘E’ – 1 = ‘D’
• En lenguaje C, sobre las cadenas, se pueden
efectuar operaciones, a través de “funciones”,
más no de operadores. Veremos mas adelante
dicha sintaxis.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 52
09/03/2022
Operaciones Relacionales
• En la computadora se debe tener mucho cuidado con el uso
de operadores relacionales y datos reales, pues los datos
reales no se pueden almacenar con toda la precisión que
quisiéramos y las comparaciones dan resultados
inesperados).
En el lenguaje de programación que veremos más
adelante, los operadores relacionales no se podrán
aplicar sobre las cadenas de caracteres.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 53
09/03/2022
Expresiones
• Una vez que conocemos todos los operadores,
variables, tipos de datos, podemos construir
expresiones.
• Son combinaciones de constantes, variables,
operadores, paréntesis y quizás nombres de funciones
especiales, por ejemplo:
)
/
/(
)
( a
w
u
y
x +
+
2
)^
1
2
(
2
)^
1
2
( y
y
x
x −
+
−
◼ El evaluar la expresión consiste en: Reemplazar las
variables por valores y luego obtener su resultado.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 54
09/03/2022
Expresiones Predefinidas y
Paradigmas de Programación
• En la programación existen ciertas tareas comúnmente
repetidas. Por ejemplo: solicitar el ingreso de datos,
mostrar mensajes, mostrar resultados.
• A estos patrones se los conoce como expresiones
predefinidas.
• En el programa que suma dos números, como parte de
la fase de entrada se solicitaba al usuario ingresar los
números.
• En cada ocasión el programa solicitaba la entrada
realizando las siguientes tareas:
– Mostrar en pantalla un mensaje solicitando el número.
– Leer el número desde el teclado.
• Estas tareas representan una expresión predefinida.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 55
09/03/2022
• La expresión predefinida – lectura de un entero –
tiene la forma:
Write (“cadena”);
Read (variable);
En Pseudocódigo:
printf (“cadena”);
scanf(“%d”,&variable);
En C:
Expresiones Predefinidas y
Paradigmas de Programación
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 56
09/03/2022
• Las dos líneas anteriores (pseudocódigo y/o en C)
representan un ejemplo de un paradigma de
programación.
• El paradigma indica la estructura sintáctica de una
expresión predefinida.
• En el paradigma, las letras en rojo muestran las partes
que necesitan reemplazarse con algo de la categoría
indicada. Como ejemplo, considere el siguiente
reemplazo:
printf (“1er numero”);
scanf(“%d”,&a);
Write (“1er número”);
Read (a);
Expresiones Predefinidas y
Paradigmas de Programación
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 57
09/03/2022
Formas Comprimidas
• Algunos lenguajes, entre ellos C, proveen estructuras que permiten
que el programador escriba menos código.
• Estas características se emplea en las operaciones más comunes.
– Operaciones de asignación
– Operaciones de incremento/decremento
• Suponga que una variable balance contiene el balance bancario y
que Ud. desea realizar un depósito cuyo valor se encuentra en la
variable deposito.
• El nuevo balance estaría dado por la expresión
balance + deposito.
• Posiblemente Ud. escribiría una asignación como:
nuevo_balance = balance + deposito;
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 58
09/03/2022
Formas Comprimidas
• En la mayoría de los casos, Ud. no querrá utilizar una nueva
variable para almacenar el nuevo balance.
• Al realizar un depósito, cambia el balance bancario y por ello sería
más natural cambiar el valor almacenado en la variable balance.
• En lugar de almacenar el resultado en una nueva variable
nuevo_balance, sería más útil sumar el balance con el depósito y
luego almacenar este resultado en la variable balance, utilizando la
siguiente asignación:
balance = balance + deposito;
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 59
09/03/2022
Formas comprimidas en operaciones de
asignación
• Operaciones de asignación
– balance = balance + deposito;
– balance += deposito;
– salario = salario * 2;
– salario *= 2
• En general
– variable = variable op expresión
variable op = expresión
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 60
09/03/2022
Formas Comprimidas
• Operador Incremental ( ++ )
– Se emplea para aumentar en uno el valor de una
variable
• x = x+1
• x += 1
• x++
• Operador decremental ( -- )
– Se emplea para disminuir en uno el valor de una
variable
• x = x-1
• x -= 1
• x--
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 61
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 62
09/03/2022
Conversión de Datos
• La conversión de datos se da cuando se asigna
a una variable un valor de un tipo diferente
• Hay dos formas de convertir datos:
– Automática(implícita)
• Se efectúa con la simple asignación.
• Por ejemplo:
Si n1 es una variable entera. Al realizar la
siguiente asignación:
n1 = 4.55
n1 se trunca, solo se le asigna 4.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 63
09/03/2022
Conversión de Datos
– Explícita (cast)
• En C se efectúa a través del operador cast.
• Este operador se lo utiliza, anteponiendo al valor,
el tipo de dato entre paréntesis.
• Por ejemplo:
Si n1 es una variable entera. Al realizar la
siguiente asignación:
n1 = (int) 4.55;
n1 se trunca, solo se le asigna 4.
• De forma general:
variable = (tipo de dato) valor;
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 64
09/03/2022
Contenido
• Tipos de datos (entero, real, carácter, etc.)
• Definición y ámbito de variables. Constantes
• Operadores: relacionales, aritméticos y lógicos
• Expresiones y operaciones sobre tipos de datos
• Conversiones de tipo de dato
• Estructuras de control: secuencias, decisiones y
ciclos
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 65
09/03/2022
Sentencias
• Las instrucciones u órdenes que le damos al
computador también se conocen como sentencias.
• Algunas bien simples ya las hemos utilizado: asignar
expresiones, imprimir en pantalla, leer datos
ingresados por teclado.
• Existen otras sentencias más complejas, para ordenar
la repetición de otras o que ayudan a elegir que
sentencias ejecutar.
• Podemos concluir que las sentencias pueden
clasificarse en dos grandes grupos:
– Sentencias simples
– Sentencias de control
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 66
09/03/2022
Sentencias Simples
• Se utilizan para dar órdenes sencillas al computador:
– Leer un entero
Read(n1); scanf(“%d”,&n1);
– Asignar resultado de expresiones
total = n1 + n2; total = n1 + n2;
– Mostrar por pantalla
Write (“El total es “, total); printf (“El total es %d”, total);
• En C las sentencias son expresiones que terminan con un ;
• Hay sentencias que se pueden escribir, pero que no son muy útiles:
n1 + n2;
• Al ejecutarse la sentencia, el resultado de la expresión se pierde, no
es asignado.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 67
09/03/2022
Asignaciones
• Las asignaciones, también expresiones, en las cuales interviene un
operador (=) y dos operandos.
• El operador = es, así como el +, -, etc, un operador binario.
• El resultado de la operación de asignación es el mismo valor que
se asigna al operando de la izquierda.
• Esta operación puede participar en una expresion, y ser evaluada:
El resultado de
esta expresión es
13
(x = 6) + (y = 7)
Las asignaciones escritas como parte de una expresión más larga se
conocen como asignaciones incrustadas.
Se trata de no utilizar esta forma de trabajar, pues hace los
programas difíciles de leer.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 68
09/03/2022
Asignaciones
• El uso más popular y conveniente de las asignaciones
incrustadas es al efectuar una asignación múltiple.
En este tipo de asignaciones se debe tener mucho
cuidado con que las variables que intervienen sean del
mismo tipo, para evitar conversiones de entre tipos
int i;
double d;
d = i = 1.5 i = 1
d = 1.0
n1 = n2 = n3 = 0;
n1 = (n2 = (n3 = 0));
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 69
09/03/2022
Bloques
• Una secuencia de pasos que se siguen para resolver un problema,
forman una “unidad coherente”, o bloque de sentencias
• Un bloque de sentencias se encierra entre llaves
{
sentencia1;
sentencia2;
sentencia3;
}
Así, podemos ahora concluir que el grupo de sentencias del programa
principal, es un bloque.
Las sentencias dentro de una sentencia de control, se consideran también un
bloque.
C trata los bloques como una sola sentencia, por lo cual los bloques también
se conocen como sentencias compuestas.
Las sentencias dentro de
un bloque conservan un
margen con respecto a
las llaves que las limitan
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 70
09/03/2022
Sentencias de Control
• Las sentencias que afectan la forma como se ejecutan
otras sentencias, se conocen como sentencias de
control.
• Son de dos tipos:
– Condicionales
• Nos permiten decidir que camino seguir, en base
al resultado de una condición: if, select (if, switch)
– Repetitivas
• Nos permiten repetir un grupo de sentencias un
número específico de veces, o hasta que cierto
evento se de: for, while, repeat, do… while().
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 71
09/03/2022
• Una sentencia de control, consiste de dos partes:
– Línea de control
• Especifica la naturaleza de la repetición, o de la condición.
– Cuerpo
• Formado por las sentencias que serán afectadas por la línea
de control, conforman un bloque.
• En el caso de las sentencias condicionales, el cuerpo puede
estar dividido en dos partes.
• Las sentencias que forman parte del cuerpo pueden ser
simples, o de control, en cuyo caso se habla de sentencias
anidadas.
Sentencias de Control
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 72
09/03/2022
Sentencias Condicionales: IF
• El resultado de una expresión que establece una condición es
TRUE o FALSE.
• Para construir expresiones condicionales, se utilizan los
operadores lógicos y los relacionales.
• Siempre es conveniente tener en cuenta lo siguiente:
– No confundir el operador de asignación = , con el operador de
equivalencia ==.
If(x = 0) …
If(x == 0) …
Los operadores relacionales sólo pueden ser usados para comparar tipos de
datos atómicos (que no están compuestos de otros tipos de datos). No pueden
ser utilizados para comparar cadenas.
Esta es la operación de
asignación, asigna 0 a x,
no compara.
Esta es la operación
relacional, pregunta
si x es igual a 0.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 73
09/03/2022
– Debemos tener mucho cuidado al interpretar las
condiciones, recordando siempre las Leyes de Morgan:
• Si x no es igual a 2 ni a 3
if (x!=2 && x!=3) ...
Otro error común se da al trasladar expresiones
relacionales matemáticas:
0 < x < 10 if ( 0 < x && x < 10) ...
Sentencias Condicionales: IF
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 74
09/03/2022
Evaluando Condiciones
• En lenguaje C, las expresiones que usan && y || se
evalúan de la siguiente forma:
Las subexpresiones son evaluadas de izquierda a derecha
La evaluación termina una vez que el resultado pueda ser
determinado
Si exp1 es falso en el caso a), entonces toda la expresión es falsa, y
allí termina la evaluación.
Si exp1 es verdadera en el caso b), entonces toda la expresión es
verdadera.
Se desea crear una condición para saber si y es divisible para x,
pero revisando que x no sea cero.
a) exp1 && exp2 b) exp1 || exp2
if ((x!=0) && (y%x == 0))
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 75
09/03/2022
Banderas
• Las variables de tipo Bool, se denominan también banderas.
La variable bool done:
Puede ser “activar” o “desactivar” para indicar terminos o
inicios de fases en un programa
bool done;
done = TRUE;
A una variable tipo bool también se le puede asignar el
resultado de cualquier expresión relacional y/o lógica
done = ( x == 0);
done = ( x !=0 && y%x == 0);
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 76
09/03/2022
Redundancias
• Al utilizar condiciones, un programador novato puede
cometer algunas “redundancias”, que debe evitar, para
mejorar la legibilidad, y la repetición innecesaria de
sentencias
if (x == 0)
{
done = TRUE;
}
else
{
done = FALSE;
}
end if
si (done == TRUE)…. Sin redundar if (done) ...
done = (x == 0);
Sin redundar
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 77
09/03/2022
Ejercicio en Clase
• Se desea que la computadora nos ayude a
determinar si un año dado es o no bisiesto.
– Los años bisiestos se dan cada 4 años, con la
excepción de los años que terminan en 00, que solo
son bisiestos si son divisibles para 400.
– El 1900 no era un año bisiesto, a pesar de que 1900
era divisible para 4.
– El año 2000 fue bisiesto, porque es divisible para 400
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 78
09/03/2022
inicio
Lee(año
)
((año%4 == 0)
&&(año%100!=
0)) ||
(y%400== 0)
Escribe(“Es
bisiesto”)
Escribe(“No
es bisiesto”)
fin
Begin ()
{
int anio;
bool EsBisiesto;
Write(“Programa para determinar año bisiesto”);
Write(“Ingrese año:”);
Read(anio);
EsBisiesto = ((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0)
if (EsBisiesto)
Write(anio,”es bisiesto”);
else
Write(anio,”no es bisiesto”);
}
End
void main()
{
int anio;
bool EsBisiesto;
printf(“Programa para determinar año bisieston”);
printf(“Ingrese anio:”);
scanf(“%d”,&anio);
EsBisiesto = ((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0)
if(EsBisiesto)
printf(” %d es bisieston”, anio);
else
printf(” %d no es bisieston”, anio);
}
• Las condiciones para que un año sea bisiesto son:
– Un año que no es divisible para 100, será bisiesto si es divisible para 4
– Será bisiesto si es divisible para 400
((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0)
Solución
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 79
09/03/2022
Sentencias Condicionales: IF
• En su forma mas simple, la sintaxis de la sentencia if:
if (condicion)
sentencia;
Sin embargo, si cuando la condición se cumple, se desea ejecutar un grupo
de sentencias, la forma sería:
if(condicion)
{
sentencia1;
sentencia2;
}
if(condicion)
{
sentencia1;
sentencia2;
}
else
{
sentencia1;
sentencia2;
}
La clausula
“entonces” .
Las sentencias se
ejecutan si se
cumple la
condicion
La clausula “else”. Las
sentencias dentro, se
ejecutan cuando no se
cumple la condicion
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 80
09/03/2022
Formas de la Sentencia IF
Varias sentencias, encerradas en un bloque.
Cuando el cuerpo consista de mas de una
sentencia.
Una sentencia si-sino(if-else), siempre usara
bloques para encerrar sus sentencias
if(condicion) sentencia;
if(condicion){
sentencias;
}
if(condicion){
sentenciasT;
} else {
sentenciasF;
}
Una sola sentencia, se usa solo cuando no
existe cláusula else, y el cuerpo de la
sentencia esta compuesto por una sola línea
En cascada. La cláusula else consiste de
sentencia if. Se utiliza cuando hay que elegir
entre mas de dos opciones. Si el programa
entra al ultimo else, es porque las otras
posibilidades fueron todas falsas
if(condicion1){
sentencias1;
} else if(condicion2){
sentencias2;
} else if(condicion3){
sentencias3;
} else {
sentencias;
}
No
hay
límite
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 81
09/03/2022
Ejercicio en Clase
• Se desea determinar si un número entero,
ingresado por teclado es par.
• Se desea determinar si un número, ingresado
por teclado es positivo, negativo, o cero.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 82
09/03/2022
Inicio
n< 0
Leer(n)
Escribir
(“Nega
tivo”)
Escribi
r(“Posi
tivor”)
Fin
Escribir(“?”)
Escribi
r(“Cer
o”)
n> 0
n== 0
Inicio
n mod 2 == 0
Leer(n)
Escribir
(“Impa
r”)
Escribi
r(“Par”
)
Fin
Escribir(“?”)
Begin()
{
int n;
Write(“Ingrese numero:”);
Read(n);
If (n>0){
Write(“Es positivo”);
} else if (n<0){
Write(“Es negativo”);
} else {
Write(“Es nulo”);
}
}End
void main()
{
int n;
printf(“Ingrese numero:”);
scanf(“%d”,&n);
if(n< 0){
printf(“%d es negativo”,n);
}else if(n >0){
printf(“%d es positivo”,n);
}else{
printf(“%d es nulo”,n);
}
}
Solución
Begin()
{
int n;
Write(“Ingrese numero:”);
Read(n);
If(n mod 2 == 0){
Write(“El numero es par”);
}else{
Write(“El numero es impar”);
}
}End
main()
{
int n;
printf(“Ingrese un numero:”);
scanf(“%d”,&n);
if(n%2 == 0){
printf(“%d es par”,n);
}else{
printf(“%d es impar”,n);
}
}
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 83
09/03/2022
Sentencias Condicionales: Select (SWITCH)
• La sentencia if es ideal para poder elegir entre dos opciones, sin
embargo, frente a mas opciones, se vuelve un poco tediosa y
confusa
• La sentencia select(switch en C) es mucho mas práctica en estos
casos
• La línea de control indica de quien va a depender la decisión, y el
cuerpo, indica las opciones disponibles
switch(e){
case c1:
sentencias1;
break;
case c2:
sentencias2;
break;
…
default:
sentenciasdef;
break;
}
Select(e){
case c1:
sentencias1;
break;
case c2:
sentencias2;
break;
…
default:
sentenciasdef;
break;
}
e es una expresión, puede
ser una sola variable o una
llamada a una función, o
una expresión completa Cada ci se refiere a un
valor constante entero,
no puede ser expresión
Select(e), significa
que las decisiones se
tomaran
dependiendo del
valor de e
Este grupo de
sentencias se
ejecutaran solo si e
coincide con c1
El caso debe
terminar, para
salir de la
sentencia. Si no
se termina, el
programa pasara
al siguiente caso
Este caso es
opcional. Las
sentencias de este
caso se ejecutaran
solo si e no
coincide con
ninguna otra opción
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 84
09/03/2022
Ejercicio en Clase
• Dados tres números enteros denominados
OP, A y B, se pide en función del valor de OP
calcular la operación entre A y B según se
indica a continuación:
– Para OP= 0 → A+B
– Para OP= 1 → A-B
– Para OP= 2 → A*B
– Para OP= 3 → A/B
– Para OP distinto de estos valores se devolverá el
número 0
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 85
09/03/2022
Begin()
{
int a, b, op;
Write(“Ingrese la operacion:”);
Read(op);
Write(“Ingrese A:”);
Read(a);
Write(“Ingrese B:”);
Read(b);
select(op){
case 0:
Write(a+b);
break;
case 1:
Write(a-b);
break;
case 2:
Write(a*b);
break;
case 3:
Write(a/b);
break;
default:
Write(“0”);
}
}End
void main()
{
int a, b, op;
printf(“Ingrese la operacion:”);
scanf(“%d”,&op);
printf(“Ingrese A:”);
scanf(“%d”,&a);
printf(“Ingrese B:”);
scanf(“%d”,&b);
switch(op){
case 0:
printf(“La suma es: %d”, a+b);
break;
case 1:
printf(“La resta es: %d”, a-b);
break;
case 2:
printf(“La multiplicacion es: %d”,
a*b);
break;
case 3:
printf(“La division es: %.2f”, a/b);
break;
default:
printf(“0”);
}
}
Escribir(“0”)
Inicio
Fin
Leer(a);
Leer(b);
Leer(op);
Escribir(a+b
)
op == 0
op == 1
op == 2
op == 3
Escribir(a-
b)
Escribir(a*b
)
Escribir(a/b
)
SOLUCION
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 86
09/03/2022
Sentencias Repetitivas: WHILE
• Es la sentencia repetitiva mas simple.
• El grupo de sentencias dentro de esta sentencia de control, se ejecuta
repetidamente MIENTRAS la condición especificada sea
VERDADERA
• Cuando la condición cambia a FALSO, la repetición termina, y el
programa sigue su curso normal, a la siguiente sentencia
• La condición se evalúa antes de comenzar cada ciclo del lazo
• Si durante un ciclo, la condición cambia a FALSO, el programa no se
entera hasta que se termine el ciclo, y comience el siguiente
while (condicion)
{
sentencias
}
while (condicion)
{
sentencias;
};
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 87
09/03/2022
Ejercicio en Clase
• Escribir un programa que sume los dígitos en un
entero positivo, ingresado por teclado.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 88
09/03/2022
Begin()
{
int n, sumdig;
Write(“Ingrese el numero:”);
Read(n);
sumdig = 0;
/*Aquí debe efectuarse la suma de los digitos*/
Write(“La suma de los digitos es ”,sumdig);
}
Solución
• Debemos llevar un acumulado de la suma de los dígitos,
tal como en los otros ejemplos
Inicio
Escribir(“?”)
Leer(n)
sumdig = 0
Escribir(
sumdig)
Fin
Aquí va el
proceso de
desglosar
y
acumular
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 89
09/03/2022
Solución
• Si pudiésemos saber fácilmente saber cuantos dígitos contiene un entero,
podríamos usar la sentencia for.
• La forma mas fácil en este caso, es sumar dígito tras digito HASTA que
descubramos que hemos llegado hasta el último.
• ¿Como “desglosamos” una cantidad, en sus digitos?
• Con el uso de los operadores para división entera y residuo, este problema es
sencillo de resolver:
– El ultimo digito de una cifra, se puede obtener dividiendo la cifra para 10, el
residuo. Ejemplo:
1729 div 10 = 172 1729 mod 10 = 9
1729 div 10 = 172 1729 mod 10 = 9
172 div 10 = 17 172 mod 10 = 2
Si repetimos este proceso, sucesivamente sobre el resultado de la división,
habremos logrado “desglosar”
17 div 10 = 1 17 mod 10 = 7
1 div 10 = 0 1 mod 10 = 1
Hasta aquí debería llegar
Hasta que la division
de cómo resultado 0.
Debe dividirse
sucesivamente
MIENTRAS la
division no de 0
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 90
09/03/2022
Begin()
{
int n, sumdig;
Wtite(“Ingrese el numero:”);
Read(n);
sumdig = 0;
/*Aquí debe efectuarse la suma de los digitos*/
While(n>0){
sumdig = sumdig + (n mod 10);
n = n div 10;
}
Write(“La suma de los digitos es”,sumdig);
}
End
void main()
{
int n, sumdig;
printf(“Ingrese el numero:”);
scanf(“%d”,&n);
sumdig = 0;
/*Aquí debe efectuarse la suma de los digitos*/
while(n>0){
sumdig = sumdig + n%10;
n = n / 10;
}
printf(“La suma de los digitos es %dn”,sumdig);
}
Solución
Inicio
Escribir(“?”)
Leer(n)
sumdig = 0
n > 0
sumdig =
sumdig + (n
mod 10)
n = n / 10
Escribir(
sumdig)
Fin
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 91
09/03/2022
Lazos infinitos
• Debemos tener mucho cuidado con la condición de un lazo
mientras
• El valor de esta debe de cambiar en alguno de los ciclos de lazo,
para que este pueda terminar
• De lo contrario estaríamos hablando de un lazo infinito
• Si en el ejercicio anterior hubiésemos usado la siguiente condición:
while(n >= 0)
{
sumdig = sumdig + n%10;
n = n / 10;
}
• En este caso, cuando n llega a 0, la condición aun sería TRUE, y el
lazo continuaría infinitamente.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 92
09/03/2022
El caso de la Centinela
• Recordemos que ya usamos un lazo while para darle al usuario la oportunidad
de decidir hasta cuando quería ingresar datos
• En este caso, usamos un lazo MIENTRAS cuya condición jamás cambiaria a
FALSO
• De lejos, podría parecer un lazo infinito, pero dentro de las sentencias, se
controlaba el fin del lazo con el uso de un valor centinela
• Se podría decir que los ciclos debían continuar mientras no se ingrese el valor
de la centinela
mientras(TRUE){
/*Ingreso del valor*/
si(valor == centinela) Terminar;
/*Procesar Valor*/
}
mientras(valor != centinela){
/*Ingreso del valor*/
/*Procesar Valor*/
}
Para la primera vez, no
existe valor ingresado!!!
/*Ingreso del valor*/
mientras(valor != centinela){
/*Procesar Valor*/
/*Ingreso del valor*/
}
Write(“?”);
Read(valor)
While(valor != centinela){
balance = balance + valor;
Write(“?”);
Read(valor);
}
Al hacer esto, existen algunos inconvenientes:
El orden de las operaciones en el lazo, no es
“natural”, no se lee primero y se calcula
despues, lo que hace al prorama mas dificil de
seguir
Se escribe dos veces las mismas sentencias
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 93
09/03/2022
Sentencias Repetitivas: FOR
• Es muy popular cuando se desea repetir un grupo de acciones un número de
veces determinado.
• A su vez, la línea de control esta compuesta por 3 sentencias:
• Inicio indica como debe ser inicializado el lazo for, usualmente aquí se le da
un valor inicial a la variable índice
• Condición sería escrita tal y como en un lazo mientras. Indica que las
sentencias dentro se repetirán mientras la condicion sea evaluada
VERDADERA, cuando cambie a FALSO, terminará y se continuará en el flujo
normal del programa, a la siguiente sentencia
• Avance indica como va a cambiar el valor de la variable índice, de ciclo en
ciclo. Usualmente cambia de uno en uno, pero podría retroceder, avanzar de
dos en dos, etc.
• En C las sentencias de inicio, condición y avance son opcionales, pero los ;
deben ir
for (inicio; condicion; avance)
{
sentencias;
}
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 94
09/03/2022
Ejercicio en clase
• Escribir un programa que simule el conteo de despegue
de un cohete espacial. El conteo debe comenzar en 10,
terminar en 0 y dar la orden de Despegue!!
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 95
09/03/2022
Begin()
{
int i;
For (i = 10 to 0; dec 1){
Write(i);
}
Write(“DESPEGUE!!”);
}End
#define CONT_INICIO 10
main()
{
int i;
for(i = CONT_INICIO; i >=0; i --)
{
printf(“%dn”,i);
}
printf(“DESPEGUE!!n”);
}
Solución
Inicio
i = 10
i >=0
i = i +1
Fin
Escribir(“
Despegu
e”)
Escribir(i)
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 96
09/03/2022
Lazos FOR anidados
• Esto se refiere a incluir en el cuerpo de
una sentencia for, otra sentencia del
mismo tipo
• En estos casos, los ciclos de lazo for más
interno son ejecutados, por cada
repetición del lazo for más externo.
• Cada lazo for debe tener su propia
variable índice.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 97
09/03/2022
Ejercicio en Clase
• Escribir un programa que muestre una tabla de
multiplicar del 1 al 10, con el siguiente formato
1*1
1*2
1*3
1*4
..
1*10
5*1
5*2
5*3
5*4
..
5*10
1
2
3
4
5
6
7
8
9
10
1 2 3 4 5 6 7 8 9 10
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 98
09/03/2022
Solución
• En este caso hay repetición del 1 al 10,
para saber por quién
multiplicar(columnas), y hay una repetición
del 1 al 10, para generar las tablas(filas).
• Los números de las columnas cambian
mas rápido(lazo más interno).
• Los números de las filas, permanencen
más tiempo presentes(lazo más externo).
• Cuando termina cada fila, se da un enter.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 99
09/03/2022
inicio
i = 1
i <=10 j = 1
j <= 10 mult = i * j
fin
Escribir(mult)
Escribir(“n”)
Begin()
{
int i,j;
For(i=0 to 10; inc 1){
For(j=1 to 10; inc 1){
Write(i*j);
}
Write(“n”);
}
}
End
#define LIMITE_INF 1
#define LIMITE_SUP 10
void main()
{
int i,j;
for(i = LIMITE_INF; i <= LIMITE_SUP; i=i+1){
for(j = LIMITE_INF; j <= LIMITE_SUP; j = j +1)
{
printf(“%4d”, i*j);
}
printf(“n”);
}
}
Solución
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 100
09/03/2022
• La sentencia FOR
• Es idéntica a:
for(i=0; i <10; i = i +1)
{
/*cuerpo*/
}
i = 0;
while(i < 10)
{
/*cuerpo*/
i = i +1;
}
Aquí debe realizarse el
incremento de i.
Aquí debe inicializarse la
variable i.
Relación entre el FOR y el WHILE
while(condicion)
{
sentencias;
avance;
} end while
for (inicio; condicion; avance)
{
sentencias;
}
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 101
09/03/2022
• La variable índice de un lazo for puede ser un entero, o un real, no hay
ninguna regla sobre eso.
for(x = 1.0; x <= 2.0; x = x + 0.1)
printf(“%dn”; x);
• Sin embargo, debemos tomar en cuenta que los reales en la
computadora no son datos precisos. El valor 0.1 es muy parecido a
1/10, pero no exactamente.
• Al acumular estos valores en x, la imprecisión, también se acumulará, y
puede darse el caso de que 2.0, sea realmente en el computador
2.000000001
• Esto ocasionaría que la condición jamás se cumpla(lazo infinito), por lo
cual es mejor trabajar con enteros:
for(i = 10; i <= 20; i = i + 1)
{
x = i / 10.0;
printf(“%dn”,x);
}
Sentencia FOR con Números Reales
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 102
09/03/2022
Formato de Salida
• En el lenguaje C, el procedimiento printf permite
mostrar información de una forma conveniente.
• Hemos utilizado printf para mostrar números enteros,
reales, caracteres y cadenas de caracteres; Sin
embargo, sólo hemos utilizado parte de sus
capacidades.
• Para escribir programas que con un formato de salida
más complejo, necesitamos conocer el procedimiento
printf en mayor detalle.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 103
09/03/2022
Formato de Salida
• Una llamada al procedimiento printf tiene el
siguiente paradigma:
printf(“cadena de control”,exp1, exp2,…);
• El número de expresiones pasadas como
argumentos dependen del número de datos
(valores) que necesiten mostrarse. Incluso, pueden
no existir estos valores, en cuyo caso la llamada
sería:
printf(“cadena de control”);
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 104
09/03/2022
Formato de Salida
• La sentencia:
printf(“Hola mundo.n”);
• Imprime la H, la o, la l y así sucesivamente hasta
imprimir el punto y el caracter de fin de línea.
• Si printf encuentra el signo de porcentaje (%) entre los
caracteres de la línea de control, responde de una
manera especial.
• printf trata al signo de % y la letra que lo sigue (letra
clave), como un repositorio en el cual colocará el valor
que corresponda a dicha posición. Ese valor es
reemplazado por la primera expresión no utilizada luego
de la cadena de control, el segundo % por la segunda
expresión y así sucesivamente hasta terminar con todos
los argumentos y signos de %.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 105
09/03/2022
Formato de Salida
• Por ejemplo:
printf(“%d + %d = %dn”, n1, n2, total);
• Si lo valores de n1, n2 y total son 2, 3 y 5. La llamada
anterior, imprimirá por pantalla:
• Es muy importante asegurarse que el número de
sustituciones de signos de porcentajes coincida
exactamente con el número de expresiones que son
pasadas como argumentos de printf.
2 + 3 = 5
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 106
09/03/2022
Códigos de Formato para printf
• El poder real de printf radica en que puede mostrar valores en una
variedad de formatos.
• Para determinar como el valor debe ser mostrado, el % en la
cadena de control es seguido de una letra que especifica el formato
de salida. Esta letra es llamada código de formato.
• Los códigos de formato más comúnmente utilizados son:
%d Enteros decimales
%f Flotantes
%e Exponenciales
%c Caracteres
%s Cadenas (strings)
%% Signo de porcentaje
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 107
09/03/2022
Controlando espacios, alineamiento y precisión
• Suponga que Ud. debe mostrar una tabla con parte de
la información ambiental. La tabla mostrará información
como: estado, área total, áreas verdes y porcentaje de
reforestación.
• De manera ideal, las primeras líneas deberían
mostrarse en una tabla similar a la siguiente:
Estado
Alabama
Alaska
Arizona
Arkansas
California
Area Total
50750
591000
114000
53187
158706
Areas Verdes
33945
201632
30287
26542
61532
Porcentaje
66.9%
34.1%
26.6%
49.9%
38.8%
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 108
09/03/2022
Controlando espacios, alineamiento y
precisión
• Si printf sólo contará con códigos de formato, lo mejor que se
podría hacer sería:
printf(“%s %d %d %f%%n”,estado,aTotal,aVerdes,porc);
• Desafortunadamente, esta llamada sólo colocaría la información
una a continuación de otra y la salida sería algo como:
Estado Area Areas Verdes Porcentaje
Alabama 50750 33945 66.8867%
Alaska 591000 201632 34.1171%
Arizona 114000 30287 26.5675%
Arkansas 53187 26542 49.9032%
California 158706 64532 38.7711%
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 109
09/03/2022
Controlando espacios, alineamiento y
precisión
• Para generar la tabla de la forma requerida
debemos considerar las siguientes propiedades:
– El número de caracteres que se colocarán en cada
una de las columnas, conocido como ancho del
campo (field width).
– El alineamiento de la información. Para el ejemplo
mostrado los números son alineados a la derecha.
– Finalmente, la precisión de los datos numéricos a
mostrarse.
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 110
09/03/2022
Controlando espacios, alineamiento y precisión
• printf permite controlar: ancho, alineamiento y precisión
de los datos de salida incluyendo información como parte
del código de formato.
• La información adicional, es escrita entre el signo de % y
la letra clave.
Estado
Alabama
Alaska
Arizona
Arkansas
California
Area Total
50750
591000
114000
53187
158706
Areas Verdes
33945
201632
30287
26542
61532
Porcentaje
66.9%
34.1%
26.6%
49.9%
38.8%
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 111
09/03/2022
Controlando espacios, alineamiento y
precisión
%[flags][width][.prec] type
• Los flags pueden ser los caracteres:
+ siempre se imprime el signo, tanto + como –
- justifica a la izquierda el resultado, añadiendo espacios al final
blank si es positivo, imprime un espacio en lugar de un signo +
• En el campo width se especifica la anchura mínima de
la forma:
n se imprimen al menos n caracteres.
0n se imprimen al menos n caracteres y si la salida es menor, se
anteponen ceros
Algoritmos y Lógica de Programación Carrera de Software
Ph.D. Franklin Parrales 112
09/03/2022
Representación de la
información en datos simples
y estructuras de control
Unidad 2
Final de la unidad

Más contenido relacionado

La actualidad más candente

IIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de SoftwareIIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de SoftwareFranklin Parrales Bravo
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresAlvaro Enrique Ruano
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetosAngel Ordoñez
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaFranklin Parrales Bravo
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcionalAlejandra MA
 
Modelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosModelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosFernando Baculima
 
IIS Unidad 3B Proceso de desarrollo de software
IIS Unidad 3B Proceso de desarrollo de softwareIIS Unidad 3B Proceso de desarrollo de software
IIS Unidad 3B Proceso de desarrollo de softwareFranklin Parrales Bravo
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de ProgramaciónKudos S.A.S
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosJosé Antonio Sandoval Acosta
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Rubi Veronica Chimal Cuxin
 
Plantilla para realizar un manual de usuario de software
Plantilla para realizar un manual de usuario de software Plantilla para realizar un manual de usuario de software
Plantilla para realizar un manual de usuario de software Yaskelly Yedra
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datospepelebu1313
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosFranklin Parrales Bravo
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareJennifer Andrea Cano Guevara
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Yaskelly Yedra
 

La actualidad más candente (20)

IIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de SoftwareIIS Unidad1: Introducción a la Ingeniería de Software
IIS Unidad1: Introducción a la Ingeniería de Software
 
Programación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructoresProgramación Orientada a Objetos - constructores y destructores
Programación Orientada a Objetos - constructores y destructores
 
Programacion estructurada en objetos
Programacion estructurada en objetosProgramacion estructurada en objetos
Programacion estructurada en objetos
 
Listas, pilas y colas
Listas, pilas y colasListas, pilas y colas
Listas, pilas y colas
 
AD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuidaAD Unidad4: Programación paralela y distribuida
AD Unidad4: Programación paralela y distribuida
 
Programación lógica y funcional
Programación lógica y funcionalProgramación lógica y funcional
Programación lógica y funcional
 
Modelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datosModelo jerarquico y modelo de red de base de datos
Modelo jerarquico y modelo de red de base de datos
 
IIS Unidad 3B Proceso de desarrollo de software
IIS Unidad 3B Proceso de desarrollo de softwareIIS Unidad 3B Proceso de desarrollo de software
IIS Unidad 3B Proceso de desarrollo de software
 
Informe de pseint
Informe de pseintInforme de pseint
Informe de pseint
 
Fundamentos de Programación
Fundamentos de ProgramaciónFundamentos de Programación
Fundamentos de Programación
 
Componentes en-poo
Componentes en-pooComponentes en-poo
Componentes en-poo
 
Programacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetosProgramacion Orientada a Objetos - Unidad 2 clases y objetos
Programacion Orientada a Objetos - Unidad 2 clases y objetos
 
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
Informe técnico Unidad 4 Estructuras no lineales (Rubí Verónica)
 
DB1 Unidad 6: Indices
DB1 Unidad 6: IndicesDB1 Unidad 6: Indices
DB1 Unidad 6: Indices
 
Clases y objetos en Java
Clases y objetos en JavaClases y objetos en Java
Clases y objetos en Java
 
Plantilla para realizar un manual de usuario de software
Plantilla para realizar un manual de usuario de software Plantilla para realizar un manual de usuario de software
Plantilla para realizar un manual de usuario de software
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
EP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgosEP Unidad03: Planificación financiera y análisis de riesgos
EP Unidad03: Planificación financiera y análisis de riesgos
 
Tecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto softwareTecnicas de estimacion de costos de proyecto software
Tecnicas de estimacion de costos de proyecto software
 
Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)Ingenieria de software (conceptos básicos)
Ingenieria de software (conceptos básicos)
 

Similar a ALP Unidad 2: Representación de la información en datos simples y estructuras de control

Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programasRoberth Camana
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxMundoGamerHD
 
Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezederhenriquez
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datoslensh
 
Fundamentos de programación I.pptx
Fundamentos de programación I.pptxFundamentos de programación I.pptx
Fundamentos de programación I.pptxbenjamincordero6
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programaDavid Tuarez
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programaDavid Tuarez
 
Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2David Tuarez
 
Clase 2a - Solución de problemas básicos.pptx
Clase 2a - Solución de problemas básicos.pptxClase 2a - Solución de problemas básicos.pptx
Clase 2a - Solución de problemas básicos.pptxmiguelosorno7
 
Fundamentos de algoritmia
Fundamentos de algoritmiaFundamentos de algoritmia
Fundamentos de algoritmiaNilson Negrete
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño webDayraNieto9807
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño webkarenJulieth04
 
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Andres Garcia Garcia
 

Similar a ALP Unidad 2: Representación de la información en datos simples y estructuras de control (20)

Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programas
 
PSEUDOCODIGO
PSEUDOCODIGOPSEUDOCODIGO
PSEUDOCODIGO
 
Manual de c c++
Manual de c c++Manual de c c++
Manual de c c++
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
 
Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Introduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquezIntroduccion al lenguaje c_EderHenriquez
Introduccion al lenguaje c_EderHenriquez
 
Dev c 1 2011
Dev c  1 2011Dev c  1 2011
Dev c 1 2011
 
Tema 2
Tema 2Tema 2
Tema 2
 
Tipos de datos
Tipos de datosTipos de datos
Tipos de datos
 
Fundamentos de programación I.pptx
Fundamentos de programación I.pptxFundamentos de programación I.pptx
Fundamentos de programación I.pptx
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programa
 
Elementos basicos de un programa
Elementos basicos de un programaElementos basicos de un programa
Elementos basicos de un programa
 
Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2Elementos basicos de un programa Grupo 2
Elementos basicos de un programa Grupo 2
 
Tema nº 2 102
Tema nº 2 102Tema nº 2 102
Tema nº 2 102
 
Clase 2a - Solución de problemas básicos.pptx
Clase 2a - Solución de problemas básicos.pptxClase 2a - Solución de problemas básicos.pptx
Clase 2a - Solución de problemas básicos.pptx
 
TEMA Nº 2-102
TEMA Nº 2-102TEMA Nº 2-102
TEMA Nº 2-102
 
Fundamentos de algoritmia
Fundamentos de algoritmiaFundamentos de algoritmia
Fundamentos de algoritmia
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño web
 
Fundamentos de programación en diseño web
Fundamentos de programación en diseño webFundamentos de programación en diseño web
Fundamentos de programación en diseño web
 
Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3Introducción a la programación y la informática. Tema 3
Introducción a la programación y la informática. Tema 3
 

Más de Franklin Parrales Bravo

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaFranklin Parrales Bravo
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebFranklin Parrales Bravo
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaFranklin Parrales Bravo
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosFranklin Parrales Bravo
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebFranklin Parrales Bravo
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasFranklin Parrales Bravo
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosFranklin Parrales Bravo
 
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosFranklin Parrales Bravo
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosFranklin Parrales Bravo
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraFranklin Parrales Bravo
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareFranklin Parrales Bravo
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software Franklin Parrales Bravo
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosFranklin Parrales Bravo
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosFranklin Parrales Bravo
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoFranklin Parrales Bravo
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4Franklin Parrales Bravo
 
RD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesRD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesFranklin Parrales Bravo
 
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventosPOE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventosFranklin Parrales Bravo
 

Más de Franklin Parrales Bravo (20)

Presentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en CuencaPresentacion del congreso ETCM del 2021 en Cuenca
Presentacion del congreso ETCM del 2021 en Cuenca
 
IW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería WebIW Unidad 1: Introducción a la Ingeniería Web
IW Unidad 1: Introducción a la Ingeniería Web
 
IW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicuaIW Unidad 4: Web accesible, semántica y ubicua
IW Unidad 4: Web accesible, semántica y ubicua
 
IW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelosIW Unidad 3: Ingeniería Web dirigida por modelos
IW Unidad 3: Ingeniería Web dirigida por modelos
 
MOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modeladoMOD Unidad 2: Tipos de modelado
MOD Unidad 2: Tipos de modelado
 
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería WebIW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
IW Unidad 2: Metodologías y Técnicas de la Ingeniería Web
 
AD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidasAD Unidad3: Tecnologías de aplicaciones distribuidas
AD Unidad3: Tecnologías de aplicaciones distribuidas
 
AD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidosAD Unidad2: Diseño de programas paralelos y distribuidos
AD Unidad2: Diseño de programas paralelos y distribuidos
 
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidosAD Unidad1: Fundamentos de sistemas paralelos y distribuidos
AD Unidad1: Fundamentos de sistemas paralelos y distribuidos
 
EP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectosEP Unidad01: Principios básicos de la metodología de proyectos
EP Unidad01: Principios básicos de la metodología de proyectos
 
EP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestraEP Unidad02: Conceptos para el alcance, tiempo y muestra
EP Unidad02: Conceptos para el alcance, tiempo y muestra
 
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del SoftwareGCSW Unidad1: Objetos de la Gestión de Configuración del Software
GCSW Unidad1: Objetos de la Gestión de Configuración del Software
 
GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software GCSW Unidad2: Actividades de la gestión de configuración del software
GCSW Unidad2: Actividades de la gestión de configuración del software
 
POO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilosPOO Unidad 3: Interfaz gráfica de usuario e hilos
POO Unidad 3: Interfaz gráfica de usuario e hilos
 
POO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a ObjetosPOO Unidad 2: Programación Orientada a Objetos
POO Unidad 2: Programación Orientada a Objetos
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
RD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y EnrutamientoRD Unidad 3: IPv6, Routers y Enrutamiento
RD Unidad 3: IPv6, Routers y Enrutamiento
 
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
RD Unidad 2: Transmisión de datos. El mundo del TCP/IP y direccionamiento iPv4
 
RD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y RedesRD Unidad 1: Principios de Comunicación y Redes
RD Unidad 1: Principios de Comunicación y Redes
 
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventosPOE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
POE Unidad 2: Diseño y construcción de programas visuales y orientados a eventos
 

ALP Unidad 2: Representación de la información en datos simples y estructuras de control

  • 1. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 1 09/03/2022 Representación de la información en datos simples y estructuras de control Unidad 2 Material docente compilado por el profesor Ph.D. Franklin Parrales Bravo para uso de los cursos de Algoritmos y Lógica de Programación
  • 2. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 2 09/03/2022 Objetivo general de la Unidad 2 Implementar los tipos de datos básicos y las estructuras de control a través de un lenguaje de programación estructurado para el diseño eficaz de los programas en la resolución de diversos problemas.
  • 3. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 3 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 4. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 4 09/03/2022 Tipos de Datos Básicos • Si nos detenemos a analizar los datos de entrada y de salida podremos observar que se requieren números (base, altura, área) y letras (mensajes). • El computador puede manejar datos de diferente tipo, teniendo cada uno, una representación interna basada en la cantidad de bytes (8 bits) que ellos ocupan en memoria (RAM) y el orden en el cual se colocan los bits. • Usualmente la cantidad de bytes de un tipo de dato depende del hardware del computador. • Los tipos de datos básicos son: – Numéricos – Caracteres – Lógicos • Cada tipo de dato tiene dos características que lo definen: – Dominio, corresponde al rango de valores que el tipo de dato puede tomar. – Conjunto de operaciones que se pueden realizar sobre el tipo de dato
  • 5. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 5 09/03/2022 Datos Numéricos • La base y la altura corresponden a datos numéricos. • La computadora no tiene espacio para representar todos los números existentes, pues son infinitos. Dependiendo del hardware, podrán representar solo un subconjunto de estos números (Dominio). • Los datos numéricos pueden ser de dos tipos: – Enteros → integer, int • Números completos, que no tienen componentes fraccionarios • Pueden ser con o sin signo • Algunas computadoras pueden representar cantidades enteras desde –32768 a +32767 – Reales → real, float, double • Siempre tienen un punto decimal • Pueden ser positivos o negativos
  • 6. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 6 09/03/2022 Cadenas y Caracteres • Los caracteres, representan las teclas del teclado, y forman un conjunto finito. • Cada tecla en el teclado, tiene una representación numérica, de esta forma la computadora entiende lo que tecleamos. Ella recibe el “número” y lo traduce luego a la representación correspondiente. • Las correspondencias código numérico – carácter, se conocen como estándares, existen varios, el mas usado es el ASCII • El ASCII define 127 caracteres, con sus correspondientes códigos, la letra A, por ejemplo, tiene el código 65 (un entero), y así.
  • 7. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 7 09/03/2022 Cadenas y Caracteres • Para poder distinguir los datos de tipo caracter (char), estos se encierran en comillas simples. • Los datos de tipo carácter se pueden clasificar en: – Alfabéticos (‘a’, ’b’, ’c’, ’z’, ... , ’A’, ’B’, ’C’, ...., ’Z’) – Numéricos (‘0’, ’1’, ’2’, ’3’,...,’9’) – Especiales (‘+’, ’-’, ’;’, ’-’, ’:’, ’&’, ’$’...) • Las cadenas (string), entonces, son un conjunto de caracteres. Para poderlas distinguir, usualmente se las encierra en comillas dobles. – Ejemplo: “Es un rectángulo”, “Es un cuadrado”
  • 8. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 8 09/03/2022 Datos Lógicos • En el procesamiento, para conocer si el polígono es un cuadrado o un rectángulo, se deberá verificar si la base es igual en magnitud a la altura. • Existen datos que solo pueden ser Falsos o Verdaderos. Por Ejemplo: – ¿La base y la altura son iguales? – ¿Es rectángulo? – ¿Es cuadrado? • A este tipo de datos, se los conoce como datos booleanos o lógicos → Boolean • Usualmente se utilizan para representar las alternativas (verdadero/falso) a ciertas condiciones.
  • 9. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 9 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 10. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 10 09/03/2022 Constantes y Variables Calcular el área de un círculo cuyo radio es r • La fórmula del área es A =  * r2 – ¿Cuánto vale A, si r es 9? – ¿Cuánto vale A, si el valor de r varia a 2? • ¿Que valor de esta fórmula tan sencilla nunca va a cambiar? • ¿Que valores dentro de la fórmula, siempre estarán sujetos a cambios?
  • 11. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 11 09/03/2022 Constantes • Dentro de un cálculo o en los pasos para solucionar un problema, existirán valores que nunca van a cambiar y se los conoce como constantes. – Por ejemplo: Pi es una constante. • Las constantes pueden ser datos de todo tipo.
  • 12. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 12 09/03/2022 Variables • El valor del radio, y el valor del Área, siempre podrán cambiar, son variables. • Una variable es un dato cuyo valor puede cambiar durante un cálculo, o en la resolución de un problema. Por Ejemplo: – El lado para calcular el perímetro del cuadrado – Para registrarse, un alumno debe dar su número de matrícula, el código de la materia, y el paralelo. • Pueden existir variables de cualquiera de los tipos mencionados. • En computación, una variable es un espacio en memoria, donde se almacena un dato, y este puede variar durante un proceso dado.
  • 13. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 13 09/03/2022 Variables • Para poder trabajar con variables hay que seguir ciertas reglas: – A una variable se le debe dar un nombre, o identificador. – El nombre de una variable: • Sólo puede comenzar con letras o con el carácter _ • Puede contener letras, números y el carácter _ , y no caracteres especiales (‘&’, ‘%’, ‘?’, etc) • En ciertos lenguajes de programación, se hace distinción entre mayúsculas y minúsculas. – Por ejemplo: en lenguaje C la variable Lado no es la misma que lado.
  • 14. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 14 09/03/2022 Ejemplos de Nombres de Variables • Incorrecto: – 1_lado: Una variable no puede empezar con un número. – total$: Una variable no puede incluir caracteres especiales – Código de materia: una variable no puede incluir espacios en blanco ni tildes. • Correcto: lado, codigo_materia, nota1 • Los nombres de variables deben ser significativos y tener relación con el proceso en el que están participando.
  • 15. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 15 09/03/2022 Ámbito de variables Ambito: Área del programa en la cual la variable es valida (existe). Caja negra Global: Valida en todo el programa. Local: Su ámbito es limitado al bloque en el cual se declaro y no puede ser accedida fuera de dicho bloque. Sección de código encerrada entre llaves ({}) #include <stdio.h> #include <stdlib.h> int a, b = 1, c = 2; int main() { int d = 3, e = 3; { int f = 8; int g = 9; } return 0; } Variables globales: a, b, c Variables locales: d, e, f, g f , g, d, e, a, b, c d, e, a, b, c a, b, c Bloque 1 Bloque 2
  • 16. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 16 09/03/2022 Ámbito de variables • Los parámetros y variables, dentro de una función, – Son variables con ámbito local – Solo son validas en ese ambiente, • Las variables también pueden tener un ámbito “global” – Empiezan a existir desde su declaración, y – Son liberadas con el alcance de un archivo: variables externas • Para darle privacidad a una variable – Para que no pueda ser vista por otros archivos, – Se la declara static, con ámbito global para archivo únicamente
  • 17. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 17 09/03/2022 Ocultamiento de variables Ocultamiento de variables: Se da cuando se declara una variable con el mismo nombre de una variable global (o de otra local con un ámbito mayor). Básicamente lo que sucede es que el valor del ámbito mas interno prima sobre el valor del ámbito mas externo. #include <stdio.h> #include <stdlib.h> int a, b = 1; int main() { int a = 3; printf("a: %dn",a); printf("b: %dn",b); b++; { int a = 10,b = -8, c = 2; b++; printf("a: %dn",a); printf("b: %dn",b); printf("c: %dn",c); a+=8; } printf("a: %dn",a); printf("b: %dn",b); return 0; } Ocultamiento de la variable global a. Ocultamiento de las variables locales a y b.
  • 18. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 18 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 19. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 19 09/03/2022 Operador de Asignación • Para que una variable pueda cambiar de valor, debemos asignarle dicho valor. • Para realizar esto, utilizamos el operador de asignación(=) • El formato general para cambiar el valor de una variable es: – Nombre de la variable = expresión – A = 4
  • 20. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 20 09/03/2022 • La asignación se efectúa de derecha a izquierda. • Cualquier valor que haya tenido la variable antes de la asignación, se pierde, es sobrescrito con el nuevo valor. – A = 5 – A = A*5 • La computadora ejecuta la asignación de dos formas: – Si hay operaciones del lado derecho, las efectúa, y calcula el resultado, luego – Asigna el resultado a la variable En lenguaje C, el operador de asignación se puede usar para cambiar el valor de variables de cualquier tipo, menos cadenas de caracteres. Operador de Asignación
  • 21. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 21 09/03/2022 Operadores aritméticos • Con los datos numéricos se pueden efectuar operaciones matemáticas, a través de los operadores aritméticos: Operador Significado Tipos de operandos Ejemplo Tipo de resultado Ejemplo + Suma Entero o real 4+2 4.35+ 2 4.35 + 2.5 Entero o real 6 6.35 6.85 - Resta Entero o real 4-2 4.35- 2 4.35 - 2.5 Entero o real 2 2.35 1.85 Div División entera Entero 10 div 6 Entero 1 Mod (%) Modulo Entero 10 mod 6 Entero 4 * Multiplicación Entero o real 4*2 4.35* 2 4.35 * 2.5 Entero o real 8 8.7 10.875 / División Real 4.00/2.00 4.35/ 2.5 Real 2.00 1.74 ^ Potenciación Entero o real 4^2 4.5 ^ 2 4.5 ^ 0.5 Entero o real 16 20.25 2.121 Precedencia
  • 22. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 22 09/03/2022 Operadores Lógicos • Con los datos lógicos se pueden efectuar operaciones lógicas. Operador Significado Ejemplo Tipo de resultado Resultado No(not) Negación de un valor No(6>10) Entero o real Verdadero Y(and) Conjunción (1<5) y (5>10) Ecuador clasificó y Colombia no clasificó Entero o real Falso Verdadero O (or) Disyunción (5>10) o (10<9) Entero o real Falso
  • 23. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 23 09/03/2022 Operadores Relacionales ◼ Las operaciones relacionales, se pueden aplicar sobre cualquier dato, pero siempre dan como resultado datos lógicos Operador Significado Ejemplo Resultado < Menor que El número de paralelos de Fundamentos es menor que el número de paralelos de Cálculo I Verdadero > Mayor que 8>10 Falso == Igual que 9 == 15 Falso >= Mayor o igual que 10 >= 10 Verdadero <= Menor o igual que 8 <= 10 Falso != Diferente de 5 <> 5 El precio de una entrada en el Supercine es diferente de el de las entradas en el Cinemark Falso Verdadero
  • 24. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 24 09/03/2022 Las Enumeraciones en las Computadoras • Para los computadores diferentes tipos de datos se representan de diferentes formas • Entonces diferentes datos pueden ser representados de diferentes forma • El proceso de listar todos los elementos en el dominio de un tipo se denomina enumeración • Para comprender mejor el concepto trataremos de la representación de la enumeración por la máquina
  • 25. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 25 09/03/2022 Representación Interna de las Enumeraciones • En un computador los datos son representados en forma numérica, puesto que todas las operaciones son hechas con números. • Así un entero para cada elemento de la lista de datos es asignado. • A este proceso se le llama Codificación en entero
  • 26. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 26 09/03/2022 • En C la enumeración se la puede proveer fácilmente mediante la sentencia #define la cual definía una constante. Ej: #define Domingo 0 #define Lunes 1 #define Martes 2 #define Miércoles 3 #define Jueves 4 #define Viernes 5 #define Sábado 6 Aquí se asigna un entero por cada día de la semana Tipos de Datos Enumerados
  • 27. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 27 09/03/2022 Tipos de Datos Enumerados: Declaración • En C se provee una sintaxis para declarar un tipo de datos enumerados, de tal forma que no es necesario colocar el valor entero para cada elemento • La sintaxis del tipo de dato enumerado es la siguiente
  • 28. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 28 09/03/2022 Tipos de Datos Enumerados: Sintaxis Typedef enum { lista de elementos } nombre_del_tipo; • Donde: – La Lista de elementos es el conjunto de nombres a ser representados, separados por comas – El nombre del tipo identifica al nuevo tipo enumerado
  • 29. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 29 09/03/2022 Ejemplo Typedef enum{ Domingo, Lunes, Martes, Miércoles, Jueves, Viernes, Sábado } diaSemanaT; • Aquí se define un nuevo tipo llamado diaSemanaT • Este tipo de dato contiene los 7 valores definidos con #define
  • 30. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 30 09/03/2022 Tipos de Datos Enumerados • Al definir un tipo enumerado, el compilador asigna automáticamente los valores comenzando desde el 0 en adelante • Si se desea definir el inicio de la enumeración, se lo debe hacer explícitamente en el inicio de la lista de valores. Ejemplo: Typedef enum { Soltero =1, Casado =2, Separado= 3, }estadoCivilT; Typedef enum { Soltero =1, Casado , Separado, }estadoCivilT; Las dos formas de definición representan lo mismo.
  • 31. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 31 09/03/2022 Tipos de Datos Enumerados: Operaciones • El compilador de C convierte de manera automática los valores del tipo enumerado en valores enteros, por lo cual se pueden realizar las mismas operaciones que se realizan con los enteros • Pero se debe tener cuidado con las operaciones de asignación o de cambio de valor, puesto que puede caer en un valor no válido para el tipo de dato enumerado
  • 32. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 32 09/03/2022 Tipos Escalares de Datos • Tipos de datos tales como los enumerados, que se comportan como enteros son denominados como escalares. • Estos tipos de datos son automáticamente convertidos a enteros siempre que lo use en una expresión • Ejemplo: Una variable de tipo enumerado que puede ser usado en un bloque switch
  • 33. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 33 09/03/2022 Ejemplo Typedef enum {Norte, Este, Sur, Oeste} direccionT; direccionT DireccionOpuesta (direccionT dir) { switch (dir){ case Norte : return (Sur); case Este : return (Oeste); case Sur : return (Norte); case Oeste : return (Este); } } Así si llamamos a la función con: DirecciónOpuesta(Norte), retornará el valor de Sur
  • 34. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 34 09/03/2022 Caracteres • Son la parte básica para todo proceso de datos • Es la parte atómica de otros tipos de datos como los Strings • Son un tipo de dato escalar y por eso son parte también del tipo enumerado
  • 35. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 35 09/03/2022 Caracteres: Tipo de Dato char • Representa un simple carácter. • El dominio del tipo de datos char es el conjunto de símbolos que pueden ser presentados en pantalla o tipeados por teclado. • Internamente de la máquina cada carácter se representa como un tipo enumerado usando el código ASCII (código estándar americano para el intercambio de información).
  • 36. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 36 09/03/2022 El código ASCII • Todo carácter está representado internamente por la máquina como cualquier tipo escalar • El código usado es el código de caracteres • Este código podría ser asignado de forma independiente, pero debido a la interactividad con otras máquinas se usa un estándar, el código ASCII
  • 37. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 37 09/03/2022 Propiedades importantes del código ASCII • Los códigos para los caracteres que representan dígitos del 0 al 9 son consecutivos • Las letras en el alfabeto están divididos en dos rangos: uno para las mayúsculas (A- Z) y otro para las minúsculas (a-z). Sin embargo dentro de cada rango los valores ASCII son consecutivos.
  • 38. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 38 09/03/2022 Constantes de Tipo Caracter • Es un estándar para referirse a un carácter específico en C • Así para referirse a el código ASCII de la letra A, se especifica mediante ‘A’, el cual es el 65 • Para referirse al código del carácter 9, de forma similar, ‘9’ • Se debe tener cuidado que al referirse al carácter, no es lo mismo que referirse al valor entero • De tal forma que se puede trabajar tanto con los caracteres como su código ASCII
  • 39. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 39 09/03/2022 Caracteres Especiales • Son aquellos caracteres representados por el código ASCII que no se pueden imprimir. • Estos tipos de caracteres usan la combinación de más un carácter • Se denominan Secuencias de Escape • A continuación se detalla la tabla de estos caracteres.
  • 40. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 40 09/03/2022 Secuencias de Escape a Alerta de Sonido b BackSpace f Nueva página n Nueva línea r Retorno de linea t Tabulación horizontal v Tabulación vertical 0 Carácter nulo El carácter ’ El caracter ‘ ” El carácter “ ddd El carácter que representa el código ASCII para el número octal ddd
  • 41. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 41 09/03/2022 Aritmética de Caracteres • En C los caracteres pueden ser manipulados como si fueran enteros, sin requerir conversiones especiales • Esto se da debido a que son representados en un valor ASCII manejado como entero • Se debe tener cuidado al querer asignar un valor entero a un carácter, pues puede no corresponder al rango del código ASCII
  • 42. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 42 09/03/2022 Caracteres: Operaciones • Sumar un entero a un carácter • Restando un entero de un caracter • Restando un caracter de otro • Comparando dos caracteres entre sí • Se debe tomar en cuenta que al sumar o restar no se salga del rango de representación ASCII
  • 43. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 43 09/03/2022 Ejemplos • char RandomLetra(void) { return (RandomInteger(‘A’, ‘Z’)); } • if (ch >= ‘0’ && ch <=‘9’) • if (ch >= ‘A’ && ch <=‘Z’) • if (ch >= ‘a’ && ch <=‘z’)
  • 44. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 44 09/03/2022 La interfaz ctype.h • Contiene un gran número de funciones para determinar el tipo de carácter, entre las principales tenemos: • islower(ch) retorna TRUE si el carácter ch es minúscula • isupper(ch) retorna TRUE si el carácter ch es mayúscula • isalpha(ch) retorna TRUE si ch es un valor alfabético • isdigit(ch) retorna TRUE si ch es un dígito • isalnum(ch) retorna TRUE si ch es un valor alfanumérico • ispunct(ch) retorna TRUE si ch es un símbolo de puntuación • isspace(ch) retorna TRUE si ch es un carácter en blanco
  • 45. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 45 09/03/2022 La interface ctype.h • Funciones de conversión de caracteres – tolower(ch) Si ch es una letra mayúscula, retorna su equivalente en minúscula – toupper(ch) Si ch es una letra minúscula, retorna su equivalente en mayúscula • La implementación de la función tolower es: char tolower(char ch) { if (ch>=‘A’ && ch<=‘Z’){ return (ch + (‘a’ – ‘A’)); } else { return (ch); } }
  • 46. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 46 09/03/2022 Sentencias de Control que Involucran Caracteres • Se puede implementar este tipo de sentencias debido a que todo caracter es de tipo escalar • Se pueden incluir en Sentencias For y Switch. • Ej. : for (ch = ‘A’; ch<=‘Z’; ch++)
  • 47. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 47 09/03/2022 Ejemplo Bool EsVocal(char ch) { switch(tolower(ch)){ case ‘a’: case ‘e’ : case ‘i’ : case ‘o’ : case ‘u’ : return (TRUE); default : return (FALSE); } } • Este ejemplo identifica si ch es una vocal
  • 48. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 48 09/03/2022 Entrada y salida de Caracteres • Existen funciones para la entrada y salida de caracteres • Para ingresar caracteres existen las funciones getchar y putchar de la librería estandard de I/O, las que se tratarán más adelante • Para mostrar caracteres se usa la función printf con el formato %c
  • 49. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 49 09/03/2022 Ejemplo Entrada/Salida caracter main() { char ch; printf (“Las vocales son:”); for (ch= ‘A’; ch<= ‘Z’; ch++){ if (EsVocal(ch)) printf (“%c”, ch); } printf(“n”); }
  • 50. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 50 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 51. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 51 09/03/2022 Operaciones con Cadenas y Caracteres • Con los caracteres se pueden aplicar las mismas funciones que sobre los números enteros, debido a que en la computadora cada carácter tiene su código numérico correspondiente. • Ejemplo: – ‘A’ + 2 = ‘C’ – ‘E’ – 1 = ‘D’ • En lenguaje C, sobre las cadenas, se pueden efectuar operaciones, a través de “funciones”, más no de operadores. Veremos mas adelante dicha sintaxis.
  • 52. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 52 09/03/2022 Operaciones Relacionales • En la computadora se debe tener mucho cuidado con el uso de operadores relacionales y datos reales, pues los datos reales no se pueden almacenar con toda la precisión que quisiéramos y las comparaciones dan resultados inesperados). En el lenguaje de programación que veremos más adelante, los operadores relacionales no se podrán aplicar sobre las cadenas de caracteres.
  • 53. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 53 09/03/2022 Expresiones • Una vez que conocemos todos los operadores, variables, tipos de datos, podemos construir expresiones. • Son combinaciones de constantes, variables, operadores, paréntesis y quizás nombres de funciones especiales, por ejemplo: ) / /( ) ( a w u y x + + 2 )^ 1 2 ( 2 )^ 1 2 ( y y x x − + − ◼ El evaluar la expresión consiste en: Reemplazar las variables por valores y luego obtener su resultado.
  • 54. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 54 09/03/2022 Expresiones Predefinidas y Paradigmas de Programación • En la programación existen ciertas tareas comúnmente repetidas. Por ejemplo: solicitar el ingreso de datos, mostrar mensajes, mostrar resultados. • A estos patrones se los conoce como expresiones predefinidas. • En el programa que suma dos números, como parte de la fase de entrada se solicitaba al usuario ingresar los números. • En cada ocasión el programa solicitaba la entrada realizando las siguientes tareas: – Mostrar en pantalla un mensaje solicitando el número. – Leer el número desde el teclado. • Estas tareas representan una expresión predefinida.
  • 55. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 55 09/03/2022 • La expresión predefinida – lectura de un entero – tiene la forma: Write (“cadena”); Read (variable); En Pseudocódigo: printf (“cadena”); scanf(“%d”,&variable); En C: Expresiones Predefinidas y Paradigmas de Programación
  • 56. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 56 09/03/2022 • Las dos líneas anteriores (pseudocódigo y/o en C) representan un ejemplo de un paradigma de programación. • El paradigma indica la estructura sintáctica de una expresión predefinida. • En el paradigma, las letras en rojo muestran las partes que necesitan reemplazarse con algo de la categoría indicada. Como ejemplo, considere el siguiente reemplazo: printf (“1er numero”); scanf(“%d”,&a); Write (“1er número”); Read (a); Expresiones Predefinidas y Paradigmas de Programación
  • 57. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 57 09/03/2022 Formas Comprimidas • Algunos lenguajes, entre ellos C, proveen estructuras que permiten que el programador escriba menos código. • Estas características se emplea en las operaciones más comunes. – Operaciones de asignación – Operaciones de incremento/decremento • Suponga que una variable balance contiene el balance bancario y que Ud. desea realizar un depósito cuyo valor se encuentra en la variable deposito. • El nuevo balance estaría dado por la expresión balance + deposito. • Posiblemente Ud. escribiría una asignación como: nuevo_balance = balance + deposito;
  • 58. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 58 09/03/2022 Formas Comprimidas • En la mayoría de los casos, Ud. no querrá utilizar una nueva variable para almacenar el nuevo balance. • Al realizar un depósito, cambia el balance bancario y por ello sería más natural cambiar el valor almacenado en la variable balance. • En lugar de almacenar el resultado en una nueva variable nuevo_balance, sería más útil sumar el balance con el depósito y luego almacenar este resultado en la variable balance, utilizando la siguiente asignación: balance = balance + deposito;
  • 59. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 59 09/03/2022 Formas comprimidas en operaciones de asignación • Operaciones de asignación – balance = balance + deposito; – balance += deposito; – salario = salario * 2; – salario *= 2 • En general – variable = variable op expresión variable op = expresión
  • 60. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 60 09/03/2022 Formas Comprimidas • Operador Incremental ( ++ ) – Se emplea para aumentar en uno el valor de una variable • x = x+1 • x += 1 • x++ • Operador decremental ( -- ) – Se emplea para disminuir en uno el valor de una variable • x = x-1 • x -= 1 • x--
  • 61. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 61 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 62. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 62 09/03/2022 Conversión de Datos • La conversión de datos se da cuando se asigna a una variable un valor de un tipo diferente • Hay dos formas de convertir datos: – Automática(implícita) • Se efectúa con la simple asignación. • Por ejemplo: Si n1 es una variable entera. Al realizar la siguiente asignación: n1 = 4.55 n1 se trunca, solo se le asigna 4.
  • 63. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 63 09/03/2022 Conversión de Datos – Explícita (cast) • En C se efectúa a través del operador cast. • Este operador se lo utiliza, anteponiendo al valor, el tipo de dato entre paréntesis. • Por ejemplo: Si n1 es una variable entera. Al realizar la siguiente asignación: n1 = (int) 4.55; n1 se trunca, solo se le asigna 4. • De forma general: variable = (tipo de dato) valor;
  • 64. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 64 09/03/2022 Contenido • Tipos de datos (entero, real, carácter, etc.) • Definición y ámbito de variables. Constantes • Operadores: relacionales, aritméticos y lógicos • Expresiones y operaciones sobre tipos de datos • Conversiones de tipo de dato • Estructuras de control: secuencias, decisiones y ciclos
  • 65. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 65 09/03/2022 Sentencias • Las instrucciones u órdenes que le damos al computador también se conocen como sentencias. • Algunas bien simples ya las hemos utilizado: asignar expresiones, imprimir en pantalla, leer datos ingresados por teclado. • Existen otras sentencias más complejas, para ordenar la repetición de otras o que ayudan a elegir que sentencias ejecutar. • Podemos concluir que las sentencias pueden clasificarse en dos grandes grupos: – Sentencias simples – Sentencias de control
  • 66. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 66 09/03/2022 Sentencias Simples • Se utilizan para dar órdenes sencillas al computador: – Leer un entero Read(n1); scanf(“%d”,&n1); – Asignar resultado de expresiones total = n1 + n2; total = n1 + n2; – Mostrar por pantalla Write (“El total es “, total); printf (“El total es %d”, total); • En C las sentencias son expresiones que terminan con un ; • Hay sentencias que se pueden escribir, pero que no son muy útiles: n1 + n2; • Al ejecutarse la sentencia, el resultado de la expresión se pierde, no es asignado.
  • 67. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 67 09/03/2022 Asignaciones • Las asignaciones, también expresiones, en las cuales interviene un operador (=) y dos operandos. • El operador = es, así como el +, -, etc, un operador binario. • El resultado de la operación de asignación es el mismo valor que se asigna al operando de la izquierda. • Esta operación puede participar en una expresion, y ser evaluada: El resultado de esta expresión es 13 (x = 6) + (y = 7) Las asignaciones escritas como parte de una expresión más larga se conocen como asignaciones incrustadas. Se trata de no utilizar esta forma de trabajar, pues hace los programas difíciles de leer.
  • 68. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 68 09/03/2022 Asignaciones • El uso más popular y conveniente de las asignaciones incrustadas es al efectuar una asignación múltiple. En este tipo de asignaciones se debe tener mucho cuidado con que las variables que intervienen sean del mismo tipo, para evitar conversiones de entre tipos int i; double d; d = i = 1.5 i = 1 d = 1.0 n1 = n2 = n3 = 0; n1 = (n2 = (n3 = 0));
  • 69. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 69 09/03/2022 Bloques • Una secuencia de pasos que se siguen para resolver un problema, forman una “unidad coherente”, o bloque de sentencias • Un bloque de sentencias se encierra entre llaves { sentencia1; sentencia2; sentencia3; } Así, podemos ahora concluir que el grupo de sentencias del programa principal, es un bloque. Las sentencias dentro de una sentencia de control, se consideran también un bloque. C trata los bloques como una sola sentencia, por lo cual los bloques también se conocen como sentencias compuestas. Las sentencias dentro de un bloque conservan un margen con respecto a las llaves que las limitan
  • 70. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 70 09/03/2022 Sentencias de Control • Las sentencias que afectan la forma como se ejecutan otras sentencias, se conocen como sentencias de control. • Son de dos tipos: – Condicionales • Nos permiten decidir que camino seguir, en base al resultado de una condición: if, select (if, switch) – Repetitivas • Nos permiten repetir un grupo de sentencias un número específico de veces, o hasta que cierto evento se de: for, while, repeat, do… while().
  • 71. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 71 09/03/2022 • Una sentencia de control, consiste de dos partes: – Línea de control • Especifica la naturaleza de la repetición, o de la condición. – Cuerpo • Formado por las sentencias que serán afectadas por la línea de control, conforman un bloque. • En el caso de las sentencias condicionales, el cuerpo puede estar dividido en dos partes. • Las sentencias que forman parte del cuerpo pueden ser simples, o de control, en cuyo caso se habla de sentencias anidadas. Sentencias de Control
  • 72. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 72 09/03/2022 Sentencias Condicionales: IF • El resultado de una expresión que establece una condición es TRUE o FALSE. • Para construir expresiones condicionales, se utilizan los operadores lógicos y los relacionales. • Siempre es conveniente tener en cuenta lo siguiente: – No confundir el operador de asignación = , con el operador de equivalencia ==. If(x = 0) … If(x == 0) … Los operadores relacionales sólo pueden ser usados para comparar tipos de datos atómicos (que no están compuestos de otros tipos de datos). No pueden ser utilizados para comparar cadenas. Esta es la operación de asignación, asigna 0 a x, no compara. Esta es la operación relacional, pregunta si x es igual a 0.
  • 73. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 73 09/03/2022 – Debemos tener mucho cuidado al interpretar las condiciones, recordando siempre las Leyes de Morgan: • Si x no es igual a 2 ni a 3 if (x!=2 && x!=3) ... Otro error común se da al trasladar expresiones relacionales matemáticas: 0 < x < 10 if ( 0 < x && x < 10) ... Sentencias Condicionales: IF
  • 74. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 74 09/03/2022 Evaluando Condiciones • En lenguaje C, las expresiones que usan && y || se evalúan de la siguiente forma: Las subexpresiones son evaluadas de izquierda a derecha La evaluación termina una vez que el resultado pueda ser determinado Si exp1 es falso en el caso a), entonces toda la expresión es falsa, y allí termina la evaluación. Si exp1 es verdadera en el caso b), entonces toda la expresión es verdadera. Se desea crear una condición para saber si y es divisible para x, pero revisando que x no sea cero. a) exp1 && exp2 b) exp1 || exp2 if ((x!=0) && (y%x == 0))
  • 75. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 75 09/03/2022 Banderas • Las variables de tipo Bool, se denominan también banderas. La variable bool done: Puede ser “activar” o “desactivar” para indicar terminos o inicios de fases en un programa bool done; done = TRUE; A una variable tipo bool también se le puede asignar el resultado de cualquier expresión relacional y/o lógica done = ( x == 0); done = ( x !=0 && y%x == 0);
  • 76. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 76 09/03/2022 Redundancias • Al utilizar condiciones, un programador novato puede cometer algunas “redundancias”, que debe evitar, para mejorar la legibilidad, y la repetición innecesaria de sentencias if (x == 0) { done = TRUE; } else { done = FALSE; } end if si (done == TRUE)…. Sin redundar if (done) ... done = (x == 0); Sin redundar
  • 77. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 77 09/03/2022 Ejercicio en Clase • Se desea que la computadora nos ayude a determinar si un año dado es o no bisiesto. – Los años bisiestos se dan cada 4 años, con la excepción de los años que terminan en 00, que solo son bisiestos si son divisibles para 400. – El 1900 no era un año bisiesto, a pesar de que 1900 era divisible para 4. – El año 2000 fue bisiesto, porque es divisible para 400
  • 78. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 78 09/03/2022 inicio Lee(año ) ((año%4 == 0) &&(año%100!= 0)) || (y%400== 0) Escribe(“Es bisiesto”) Escribe(“No es bisiesto”) fin Begin () { int anio; bool EsBisiesto; Write(“Programa para determinar año bisiesto”); Write(“Ingrese año:”); Read(anio); EsBisiesto = ((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0) if (EsBisiesto) Write(anio,”es bisiesto”); else Write(anio,”no es bisiesto”); } End void main() { int anio; bool EsBisiesto; printf(“Programa para determinar año bisieston”); printf(“Ingrese anio:”); scanf(“%d”,&anio); EsBisiesto = ((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0) if(EsBisiesto) printf(” %d es bisieston”, anio); else printf(” %d no es bisieston”, anio); } • Las condiciones para que un año sea bisiesto son: – Un año que no es divisible para 100, será bisiesto si es divisible para 4 – Será bisiesto si es divisible para 400 ((anio%4 == 0) && (anio%100!=0)) || (anio%400 == 0) Solución
  • 79. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 79 09/03/2022 Sentencias Condicionales: IF • En su forma mas simple, la sintaxis de la sentencia if: if (condicion) sentencia; Sin embargo, si cuando la condición se cumple, se desea ejecutar un grupo de sentencias, la forma sería: if(condicion) { sentencia1; sentencia2; } if(condicion) { sentencia1; sentencia2; } else { sentencia1; sentencia2; } La clausula “entonces” . Las sentencias se ejecutan si se cumple la condicion La clausula “else”. Las sentencias dentro, se ejecutan cuando no se cumple la condicion
  • 80. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 80 09/03/2022 Formas de la Sentencia IF Varias sentencias, encerradas en un bloque. Cuando el cuerpo consista de mas de una sentencia. Una sentencia si-sino(if-else), siempre usara bloques para encerrar sus sentencias if(condicion) sentencia; if(condicion){ sentencias; } if(condicion){ sentenciasT; } else { sentenciasF; } Una sola sentencia, se usa solo cuando no existe cláusula else, y el cuerpo de la sentencia esta compuesto por una sola línea En cascada. La cláusula else consiste de sentencia if. Se utiliza cuando hay que elegir entre mas de dos opciones. Si el programa entra al ultimo else, es porque las otras posibilidades fueron todas falsas if(condicion1){ sentencias1; } else if(condicion2){ sentencias2; } else if(condicion3){ sentencias3; } else { sentencias; } No hay límite
  • 81. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 81 09/03/2022 Ejercicio en Clase • Se desea determinar si un número entero, ingresado por teclado es par. • Se desea determinar si un número, ingresado por teclado es positivo, negativo, o cero.
  • 82. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 82 09/03/2022 Inicio n< 0 Leer(n) Escribir (“Nega tivo”) Escribi r(“Posi tivor”) Fin Escribir(“?”) Escribi r(“Cer o”) n> 0 n== 0 Inicio n mod 2 == 0 Leer(n) Escribir (“Impa r”) Escribi r(“Par” ) Fin Escribir(“?”) Begin() { int n; Write(“Ingrese numero:”); Read(n); If (n>0){ Write(“Es positivo”); } else if (n<0){ Write(“Es negativo”); } else { Write(“Es nulo”); } }End void main() { int n; printf(“Ingrese numero:”); scanf(“%d”,&n); if(n< 0){ printf(“%d es negativo”,n); }else if(n >0){ printf(“%d es positivo”,n); }else{ printf(“%d es nulo”,n); } } Solución Begin() { int n; Write(“Ingrese numero:”); Read(n); If(n mod 2 == 0){ Write(“El numero es par”); }else{ Write(“El numero es impar”); } }End main() { int n; printf(“Ingrese un numero:”); scanf(“%d”,&n); if(n%2 == 0){ printf(“%d es par”,n); }else{ printf(“%d es impar”,n); } }
  • 83. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 83 09/03/2022 Sentencias Condicionales: Select (SWITCH) • La sentencia if es ideal para poder elegir entre dos opciones, sin embargo, frente a mas opciones, se vuelve un poco tediosa y confusa • La sentencia select(switch en C) es mucho mas práctica en estos casos • La línea de control indica de quien va a depender la decisión, y el cuerpo, indica las opciones disponibles switch(e){ case c1: sentencias1; break; case c2: sentencias2; break; … default: sentenciasdef; break; } Select(e){ case c1: sentencias1; break; case c2: sentencias2; break; … default: sentenciasdef; break; } e es una expresión, puede ser una sola variable o una llamada a una función, o una expresión completa Cada ci se refiere a un valor constante entero, no puede ser expresión Select(e), significa que las decisiones se tomaran dependiendo del valor de e Este grupo de sentencias se ejecutaran solo si e coincide con c1 El caso debe terminar, para salir de la sentencia. Si no se termina, el programa pasara al siguiente caso Este caso es opcional. Las sentencias de este caso se ejecutaran solo si e no coincide con ninguna otra opción
  • 84. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 84 09/03/2022 Ejercicio en Clase • Dados tres números enteros denominados OP, A y B, se pide en función del valor de OP calcular la operación entre A y B según se indica a continuación: – Para OP= 0 → A+B – Para OP= 1 → A-B – Para OP= 2 → A*B – Para OP= 3 → A/B – Para OP distinto de estos valores se devolverá el número 0
  • 85. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 85 09/03/2022 Begin() { int a, b, op; Write(“Ingrese la operacion:”); Read(op); Write(“Ingrese A:”); Read(a); Write(“Ingrese B:”); Read(b); select(op){ case 0: Write(a+b); break; case 1: Write(a-b); break; case 2: Write(a*b); break; case 3: Write(a/b); break; default: Write(“0”); } }End void main() { int a, b, op; printf(“Ingrese la operacion:”); scanf(“%d”,&op); printf(“Ingrese A:”); scanf(“%d”,&a); printf(“Ingrese B:”); scanf(“%d”,&b); switch(op){ case 0: printf(“La suma es: %d”, a+b); break; case 1: printf(“La resta es: %d”, a-b); break; case 2: printf(“La multiplicacion es: %d”, a*b); break; case 3: printf(“La division es: %.2f”, a/b); break; default: printf(“0”); } } Escribir(“0”) Inicio Fin Leer(a); Leer(b); Leer(op); Escribir(a+b ) op == 0 op == 1 op == 2 op == 3 Escribir(a- b) Escribir(a*b ) Escribir(a/b ) SOLUCION
  • 86. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 86 09/03/2022 Sentencias Repetitivas: WHILE • Es la sentencia repetitiva mas simple. • El grupo de sentencias dentro de esta sentencia de control, se ejecuta repetidamente MIENTRAS la condición especificada sea VERDADERA • Cuando la condición cambia a FALSO, la repetición termina, y el programa sigue su curso normal, a la siguiente sentencia • La condición se evalúa antes de comenzar cada ciclo del lazo • Si durante un ciclo, la condición cambia a FALSO, el programa no se entera hasta que se termine el ciclo, y comience el siguiente while (condicion) { sentencias } while (condicion) { sentencias; };
  • 87. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 87 09/03/2022 Ejercicio en Clase • Escribir un programa que sume los dígitos en un entero positivo, ingresado por teclado.
  • 88. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 88 09/03/2022 Begin() { int n, sumdig; Write(“Ingrese el numero:”); Read(n); sumdig = 0; /*Aquí debe efectuarse la suma de los digitos*/ Write(“La suma de los digitos es ”,sumdig); } Solución • Debemos llevar un acumulado de la suma de los dígitos, tal como en los otros ejemplos Inicio Escribir(“?”) Leer(n) sumdig = 0 Escribir( sumdig) Fin Aquí va el proceso de desglosar y acumular
  • 89. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 89 09/03/2022 Solución • Si pudiésemos saber fácilmente saber cuantos dígitos contiene un entero, podríamos usar la sentencia for. • La forma mas fácil en este caso, es sumar dígito tras digito HASTA que descubramos que hemos llegado hasta el último. • ¿Como “desglosamos” una cantidad, en sus digitos? • Con el uso de los operadores para división entera y residuo, este problema es sencillo de resolver: – El ultimo digito de una cifra, se puede obtener dividiendo la cifra para 10, el residuo. Ejemplo: 1729 div 10 = 172 1729 mod 10 = 9 1729 div 10 = 172 1729 mod 10 = 9 172 div 10 = 17 172 mod 10 = 2 Si repetimos este proceso, sucesivamente sobre el resultado de la división, habremos logrado “desglosar” 17 div 10 = 1 17 mod 10 = 7 1 div 10 = 0 1 mod 10 = 1 Hasta aquí debería llegar Hasta que la division de cómo resultado 0. Debe dividirse sucesivamente MIENTRAS la division no de 0
  • 90. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 90 09/03/2022 Begin() { int n, sumdig; Wtite(“Ingrese el numero:”); Read(n); sumdig = 0; /*Aquí debe efectuarse la suma de los digitos*/ While(n>0){ sumdig = sumdig + (n mod 10); n = n div 10; } Write(“La suma de los digitos es”,sumdig); } End void main() { int n, sumdig; printf(“Ingrese el numero:”); scanf(“%d”,&n); sumdig = 0; /*Aquí debe efectuarse la suma de los digitos*/ while(n>0){ sumdig = sumdig + n%10; n = n / 10; } printf(“La suma de los digitos es %dn”,sumdig); } Solución Inicio Escribir(“?”) Leer(n) sumdig = 0 n > 0 sumdig = sumdig + (n mod 10) n = n / 10 Escribir( sumdig) Fin
  • 91. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 91 09/03/2022 Lazos infinitos • Debemos tener mucho cuidado con la condición de un lazo mientras • El valor de esta debe de cambiar en alguno de los ciclos de lazo, para que este pueda terminar • De lo contrario estaríamos hablando de un lazo infinito • Si en el ejercicio anterior hubiésemos usado la siguiente condición: while(n >= 0) { sumdig = sumdig + n%10; n = n / 10; } • En este caso, cuando n llega a 0, la condición aun sería TRUE, y el lazo continuaría infinitamente.
  • 92. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 92 09/03/2022 El caso de la Centinela • Recordemos que ya usamos un lazo while para darle al usuario la oportunidad de decidir hasta cuando quería ingresar datos • En este caso, usamos un lazo MIENTRAS cuya condición jamás cambiaria a FALSO • De lejos, podría parecer un lazo infinito, pero dentro de las sentencias, se controlaba el fin del lazo con el uso de un valor centinela • Se podría decir que los ciclos debían continuar mientras no se ingrese el valor de la centinela mientras(TRUE){ /*Ingreso del valor*/ si(valor == centinela) Terminar; /*Procesar Valor*/ } mientras(valor != centinela){ /*Ingreso del valor*/ /*Procesar Valor*/ } Para la primera vez, no existe valor ingresado!!! /*Ingreso del valor*/ mientras(valor != centinela){ /*Procesar Valor*/ /*Ingreso del valor*/ } Write(“?”); Read(valor) While(valor != centinela){ balance = balance + valor; Write(“?”); Read(valor); } Al hacer esto, existen algunos inconvenientes: El orden de las operaciones en el lazo, no es “natural”, no se lee primero y se calcula despues, lo que hace al prorama mas dificil de seguir Se escribe dos veces las mismas sentencias
  • 93. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 93 09/03/2022 Sentencias Repetitivas: FOR • Es muy popular cuando se desea repetir un grupo de acciones un número de veces determinado. • A su vez, la línea de control esta compuesta por 3 sentencias: • Inicio indica como debe ser inicializado el lazo for, usualmente aquí se le da un valor inicial a la variable índice • Condición sería escrita tal y como en un lazo mientras. Indica que las sentencias dentro se repetirán mientras la condicion sea evaluada VERDADERA, cuando cambie a FALSO, terminará y se continuará en el flujo normal del programa, a la siguiente sentencia • Avance indica como va a cambiar el valor de la variable índice, de ciclo en ciclo. Usualmente cambia de uno en uno, pero podría retroceder, avanzar de dos en dos, etc. • En C las sentencias de inicio, condición y avance son opcionales, pero los ; deben ir for (inicio; condicion; avance) { sentencias; }
  • 94. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 94 09/03/2022 Ejercicio en clase • Escribir un programa que simule el conteo de despegue de un cohete espacial. El conteo debe comenzar en 10, terminar en 0 y dar la orden de Despegue!!
  • 95. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 95 09/03/2022 Begin() { int i; For (i = 10 to 0; dec 1){ Write(i); } Write(“DESPEGUE!!”); }End #define CONT_INICIO 10 main() { int i; for(i = CONT_INICIO; i >=0; i --) { printf(“%dn”,i); } printf(“DESPEGUE!!n”); } Solución Inicio i = 10 i >=0 i = i +1 Fin Escribir(“ Despegu e”) Escribir(i)
  • 96. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 96 09/03/2022 Lazos FOR anidados • Esto se refiere a incluir en el cuerpo de una sentencia for, otra sentencia del mismo tipo • En estos casos, los ciclos de lazo for más interno son ejecutados, por cada repetición del lazo for más externo. • Cada lazo for debe tener su propia variable índice.
  • 97. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 97 09/03/2022 Ejercicio en Clase • Escribir un programa que muestre una tabla de multiplicar del 1 al 10, con el siguiente formato 1*1 1*2 1*3 1*4 .. 1*10 5*1 5*2 5*3 5*4 .. 5*10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10
  • 98. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 98 09/03/2022 Solución • En este caso hay repetición del 1 al 10, para saber por quién multiplicar(columnas), y hay una repetición del 1 al 10, para generar las tablas(filas). • Los números de las columnas cambian mas rápido(lazo más interno). • Los números de las filas, permanencen más tiempo presentes(lazo más externo). • Cuando termina cada fila, se da un enter.
  • 99. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 99 09/03/2022 inicio i = 1 i <=10 j = 1 j <= 10 mult = i * j fin Escribir(mult) Escribir(“n”) Begin() { int i,j; For(i=0 to 10; inc 1){ For(j=1 to 10; inc 1){ Write(i*j); } Write(“n”); } } End #define LIMITE_INF 1 #define LIMITE_SUP 10 void main() { int i,j; for(i = LIMITE_INF; i <= LIMITE_SUP; i=i+1){ for(j = LIMITE_INF; j <= LIMITE_SUP; j = j +1) { printf(“%4d”, i*j); } printf(“n”); } } Solución
  • 100. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 100 09/03/2022 • La sentencia FOR • Es idéntica a: for(i=0; i <10; i = i +1) { /*cuerpo*/ } i = 0; while(i < 10) { /*cuerpo*/ i = i +1; } Aquí debe realizarse el incremento de i. Aquí debe inicializarse la variable i. Relación entre el FOR y el WHILE while(condicion) { sentencias; avance; } end while for (inicio; condicion; avance) { sentencias; }
  • 101. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 101 09/03/2022 • La variable índice de un lazo for puede ser un entero, o un real, no hay ninguna regla sobre eso. for(x = 1.0; x <= 2.0; x = x + 0.1) printf(“%dn”; x); • Sin embargo, debemos tomar en cuenta que los reales en la computadora no son datos precisos. El valor 0.1 es muy parecido a 1/10, pero no exactamente. • Al acumular estos valores en x, la imprecisión, también se acumulará, y puede darse el caso de que 2.0, sea realmente en el computador 2.000000001 • Esto ocasionaría que la condición jamás se cumpla(lazo infinito), por lo cual es mejor trabajar con enteros: for(i = 10; i <= 20; i = i + 1) { x = i / 10.0; printf(“%dn”,x); } Sentencia FOR con Números Reales
  • 102. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 102 09/03/2022 Formato de Salida • En el lenguaje C, el procedimiento printf permite mostrar información de una forma conveniente. • Hemos utilizado printf para mostrar números enteros, reales, caracteres y cadenas de caracteres; Sin embargo, sólo hemos utilizado parte de sus capacidades. • Para escribir programas que con un formato de salida más complejo, necesitamos conocer el procedimiento printf en mayor detalle.
  • 103. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 103 09/03/2022 Formato de Salida • Una llamada al procedimiento printf tiene el siguiente paradigma: printf(“cadena de control”,exp1, exp2,…); • El número de expresiones pasadas como argumentos dependen del número de datos (valores) que necesiten mostrarse. Incluso, pueden no existir estos valores, en cuyo caso la llamada sería: printf(“cadena de control”);
  • 104. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 104 09/03/2022 Formato de Salida • La sentencia: printf(“Hola mundo.n”); • Imprime la H, la o, la l y así sucesivamente hasta imprimir el punto y el caracter de fin de línea. • Si printf encuentra el signo de porcentaje (%) entre los caracteres de la línea de control, responde de una manera especial. • printf trata al signo de % y la letra que lo sigue (letra clave), como un repositorio en el cual colocará el valor que corresponda a dicha posición. Ese valor es reemplazado por la primera expresión no utilizada luego de la cadena de control, el segundo % por la segunda expresión y así sucesivamente hasta terminar con todos los argumentos y signos de %.
  • 105. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 105 09/03/2022 Formato de Salida • Por ejemplo: printf(“%d + %d = %dn”, n1, n2, total); • Si lo valores de n1, n2 y total son 2, 3 y 5. La llamada anterior, imprimirá por pantalla: • Es muy importante asegurarse que el número de sustituciones de signos de porcentajes coincida exactamente con el número de expresiones que son pasadas como argumentos de printf. 2 + 3 = 5
  • 106. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 106 09/03/2022 Códigos de Formato para printf • El poder real de printf radica en que puede mostrar valores en una variedad de formatos. • Para determinar como el valor debe ser mostrado, el % en la cadena de control es seguido de una letra que especifica el formato de salida. Esta letra es llamada código de formato. • Los códigos de formato más comúnmente utilizados son: %d Enteros decimales %f Flotantes %e Exponenciales %c Caracteres %s Cadenas (strings) %% Signo de porcentaje
  • 107. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 107 09/03/2022 Controlando espacios, alineamiento y precisión • Suponga que Ud. debe mostrar una tabla con parte de la información ambiental. La tabla mostrará información como: estado, área total, áreas verdes y porcentaje de reforestación. • De manera ideal, las primeras líneas deberían mostrarse en una tabla similar a la siguiente: Estado Alabama Alaska Arizona Arkansas California Area Total 50750 591000 114000 53187 158706 Areas Verdes 33945 201632 30287 26542 61532 Porcentaje 66.9% 34.1% 26.6% 49.9% 38.8%
  • 108. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 108 09/03/2022 Controlando espacios, alineamiento y precisión • Si printf sólo contará con códigos de formato, lo mejor que se podría hacer sería: printf(“%s %d %d %f%%n”,estado,aTotal,aVerdes,porc); • Desafortunadamente, esta llamada sólo colocaría la información una a continuación de otra y la salida sería algo como: Estado Area Areas Verdes Porcentaje Alabama 50750 33945 66.8867% Alaska 591000 201632 34.1171% Arizona 114000 30287 26.5675% Arkansas 53187 26542 49.9032% California 158706 64532 38.7711%
  • 109. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 109 09/03/2022 Controlando espacios, alineamiento y precisión • Para generar la tabla de la forma requerida debemos considerar las siguientes propiedades: – El número de caracteres que se colocarán en cada una de las columnas, conocido como ancho del campo (field width). – El alineamiento de la información. Para el ejemplo mostrado los números son alineados a la derecha. – Finalmente, la precisión de los datos numéricos a mostrarse.
  • 110. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 110 09/03/2022 Controlando espacios, alineamiento y precisión • printf permite controlar: ancho, alineamiento y precisión de los datos de salida incluyendo información como parte del código de formato. • La información adicional, es escrita entre el signo de % y la letra clave. Estado Alabama Alaska Arizona Arkansas California Area Total 50750 591000 114000 53187 158706 Areas Verdes 33945 201632 30287 26542 61532 Porcentaje 66.9% 34.1% 26.6% 49.9% 38.8%
  • 111. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 111 09/03/2022 Controlando espacios, alineamiento y precisión %[flags][width][.prec] type • Los flags pueden ser los caracteres: + siempre se imprime el signo, tanto + como – - justifica a la izquierda el resultado, añadiendo espacios al final blank si es positivo, imprime un espacio en lugar de un signo + • En el campo width se especifica la anchura mínima de la forma: n se imprimen al menos n caracteres. 0n se imprimen al menos n caracteres y si la salida es menor, se anteponen ceros
  • 112. Algoritmos y Lógica de Programación Carrera de Software Ph.D. Franklin Parrales 112 09/03/2022 Representación de la información en datos simples y estructuras de control Unidad 2 Final de la unidad