Está en la página 1de 32

Solució n de problemas por computador Isaac Zú ñ iga Silgado

TEXTO GUÍA: Eugenia Bahit. Curso: Python para Principiantes 2012.


www.eugeniabahit.com. Buenos Aires, Argentina.

4. ELEMENTOS GENERALES DE UN PROGRAMA [3][4]

En el momento de escribir un programa para luego ejecutarlo en una


computadora, el programador debe elegir el lenguaje de programació n que
utilizará para elaborarlo.

Los programas de computador de la mayoría de los lenguajes de programació n de


alto nivel, se compone de una serie de elementos que alimentan su estructura
bá sica. Estos elementos bá sicos son: los datos, las variables, constantes e
instrucciones del programa, las librerías (funciones y procedimiento) que se van a
utilizar y los comentarios, entre otros.

Cada lenguaje de programació n define un repertorio de instrucciones, que son con


los que dispone el programador para elaborar sus programas. También define un
conjunto de palabras que vienen con significado propio en el lenguaje y que el
programador no puede utilizarlas para definir cualquier identificador que necesite
para elaborar el có digo fuente del programa.

Sintaxis de un lenguaje: Conjunto de reglas que tenemos que seguir a la hora de


escribir un programa en un lenguaje tal que si no seguimos esas reglas de sintaxis
el traductor (compilador/interprete) nos da errores y no nos deja solucionar el
problema.

Palabras reservadas: Son un conjunto de palabras especiales que nos sirven para
definir la estructura del programa, y solo se pueden usar para el fin para el que
está n reservadas.

4.1 ESTRUCTURA BÁ SICA DE UN PROGRAMA

Cada lenguaje de programació n exige o no una estructura rígida para organizar los
elementos que conformará n el programa. A continuació n se muestran las estructuras
generales de un programa escrito en lenguaje C/C++, Java y Python.

Estructura general de un programa en lenguaje C/C++:

Un programa simple en C/C++ tiene la siguiente estructura [6]:

Comentarios
Inclusión de archivos
main()
{
variables locales
flujo de sentencias (instrucciones)
Solució n de problemas por computador Isaac Zú ñ iga Silgado

}
Definición de funciones creadas por el programador utilizadas en main()

Los comentarios nos sirven para escribir informació n que nos referencie al programa
pero que no forme parte de él. Por ejemplo especificar que hace el programa, quien lo
elaboró , en que fecha, que versió n es, etc.

En C/C++, todo está constituido a base de funciones. El programa principal no es la


excepció n. main() indica la funció n principal del programa la cual se delimita con
llaves, esta es la primera que se ejecuta en el programa.

El Flujo de sentencias se refiere a todas las instrucciones que conforman el


programa, es decir, la secuencia de instrucciones que resuelven el problema.
Los conceptos de inclusió n de archivos, variables y funciones creadas por el
programador, se explicará n má s adelante.

Ejemplo. Con este ejemplo mostramos la estructura de una aplicació n C/C+


+ simple.

/*Programa que despliega un mensaje de bienvenida en la pantalla*/


#include<stdio.h>
#include<conio.h>
void main()
{
printf("BIENVENIDO AL CURSO DE C ESTANDAR");
}

Estructura general de un programa en lenguaje Java [7]:

Un programa simple en Java tiene la siguiente estructura:

Tomado de: http://profejavaoramas.blogspot.com/2010/04/estructura-de-un-


programa-en-java.html

Donde Nombre de la clase es el nombre de la clase principal que contiene el có digo


fuente que deberá guardarse en la computadora con el sufijo .java (NombreClase.java).
Todas las aplicaciones Java tienen un método main que a su vez, contiene un conjunto
Solució n de problemas por computador Isaac Zú ñ iga Silgado

de instrucciones. En Java los conjuntos o bloques de sentencias se indican entre llaves


({ y }).

Ejemplo. Con este ejemplo mostramos la estructura de una aplicació n Java


simple. El nombre de la clase Saludo deberá guardarse como Saludo.java

public class Saludo


{
    public static void main(String[] args)
  {
        System.out.println("Hello World!"); 
    } // Fin del método main
}
// Fin de la clase Saludo

Estructura general de un programa en lenguaje Python [8]:

El lenguaje Python no exige una estructura rígida en los có digos, pero se debe tener
presente que los mó dulos y funciones deben ser programados o cargados antes de ser
invocados en el có digo. La sintaxis se debe tener muy presente y poner especial
atenció n en los espacios o INDENTACION, ya que Python identifica los finales de
bloques con estos espacios.

Existen dos maneras de usar el intérprete de Python: en modo de comandos y en modo


de guión. En modo de comandos, se escriben sentencias en lenguaje Python en
el intérprete de comandos de Python y éste muestra el resultado inmediatamente; en
el modo guió n, alternativamente, se puede escribir el programa en un archivo y usar el
intérprete para ejecutar el contenido de dicho archivo.

Ejemplo. El mismo ejemplo del programa escrito en C/C++ y Java, en


lenguaje Python, para imprimir un mensaje de saludo en la pantalla, se
escribe tan solo:

print (“hola mundo”)

4.2 ELEMENTOS BÁ SICOS DE UN LENGUAJE DE PROGRAMACIÓ N [3] [4] [5]

Estos elementos definen las entidades primitivas para el desarrollo de algoritmos y


elaboració n de cualquier programa de computador. Todos los lenguajes de
programació n tienen en cuenta o manejan un conjunto o todas estas entidades.

4.2.1 Datos y Tipos de datos


Solució n de problemas por computador Isaac Zú ñ iga Silgado

Los programas trabajan con datos, los leen o los generan, los procesan y los
transforman en informació n para la toma de decisiones.

Dato: es cualquier objeto de informació n con los que trabajan los programas.

Todos los datos tienen un tipo asociado a ellos. Esto nos sirve para poder conocer con
qué informació n se trabaja.

La asignació n (o mejor, el manejo) de tipos de datos tiene dos objetivos principales:

 Detectar errores de operaciones aritméticas en los programas. Ejemplos: el


resultado de operar variables reales y enteras nos da como resultado un dato
real; el resultado de operar variables reales nos da como resultado un dato
real; el resultado de operar variables enteras nos da como resultado un dato
entero; etc.
 Determinar como ejecutar las operaciones. Ejemplos: en una expresió n
aritmética solo debe utilizarse datos numéricos; y en una condició n se deben
comparar variables del mismo tipo.

Existen dos (2) tipos de datos de datos: los simples (primitivos) y los estructurados
(no primitivos).

Tipos de datos simples

Los tipos de datos simples son:

 Numéricos: incluye los reales y los enteros. Se utilizan en las expresiones


aritméticas y relacionales.
 Ló gicos: también denominados booleanos porque toman uno de dos valores,
verdadero (true) o falso (false).
 Caracter. Está n formados por una letra, digito o caracter especial. Este tipo de
dato no se puede utilizar en una expresió n aritmética.

Por definició n, un caracter es una representació n simbó lica. Los caracteres se


clasifican de la siguiente manera: a) las letras mayú scula y minú sculas; b) los
dígitos, compuestos por los nú meros enteros del cero (0) al nueves (9); y los
caracteres especiales, compuestos por los símbolos que no son ni letra ni
dígitos, por el ejemplo: el asterisco, el punto, los dos puntos, el signo de
interrogació n, el de admiració n, signo de subrayado, el espacio en blanco, las
letras con tilde, las comillas, etc. - ! " # $ % & ' ( ) * +, -. /

Tipos de datos estructurado o compuestos

Son aquellos que no está n considerados por el lenguaje y tendrá n que ser definidos
por el programador, empleando para ello los tipos de datos simples o bá sicos.
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Los tipos de datos estructurados son:

 Arreglos (vectores y matrices). Un arreglo es una estructura de datos temporal


compuesta por un conjunto de datos homogéneos que deben ser tratados en
forma similar. Dato temporal significa que solo existen en la memoria
principal (RAM) del computador, una vez termina el programa o se apaga el
computador, estas de destruyen.
 Cadena. También denominada string, es una sucesió n de caracteres, es decir
está n formadas por uno o má s caracteres.
 Registro. Es una unidad completa de informació n. Técnicamente, está
compuestos por varios campos (datos).
 Archivo. Se considera una estructura de datos permanente. Ellos residen en
unidades de almacenamiento secundario como los discos, memorias USB,
cintas; la idea es poder utilizar estos datos en un futuro (es decir, después de
terminar el programa que los procesa, o después de apagar el computador).
 Apuntador. Con estos tipos de datos se puede hacer referencia directa a una
regió n o bloque de memoria, es decir, este tipo de dato contiene una direcció n
de memoria.

4.2.2 Variables

Una variable es un espacio en la memoria de la computadora que permite almacenar


temporalmente un dato/valor durante la ejecució n de un proceso, y su contenido
puede cambiar durante la ejecució n del programa.

Para que un programa pueda reconocer una variable se debe darle un nombre. Por lo
tanto, una variable tiene asociado un nombre y un valor.

Las variables se clasifican en dos grandes categorías, que son: a) por su contenido o
valor: numéricas, ló gicas, cará cter, etc; b) por su uso: de trabajo, contadores y
acumuladores.

Variables de trabajo: reciben el resultado de una expresió n aritmética, relacional o


ló gica y que se usan normalmente dentro de un programa ya sea para obtener otros
resultados o para realizar otros procesos. Por ejemplo, cuando calculamos el valor de
un descuento para poder obtener el valor total a pagar que es el resultado final que
nos piden, en este caso el descuento se considera una variable de trabajo.

Contadores: se utilizan para llevar el control del nú mero de ocasiones en que se


realiza una operació n o se cumple una condició n.

Acumuladores: Es una variable que sirve para llevar la suma acumulativa de una serie
de valores que se van leyendo o calculando progresivamente.

4.2.3 Constantes
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Una constante es un dato numérico o alfanumérico que no puede cambiar durante la


ejecució n de un programa. Ejemplos: el valor de PI, el valor de la gravedad, el
porcentaje de un interés que se debe aplicar a una transacció n financiera o comercial,
etc.

A las constantes también se les denomina literales cuando se utilizan directamente en


una instrucció n de asignació n o en una expresió n o como pará metro (en una funció n o
en una instrucció n de salida), Ejemplos de literales:

 X = 1. El uno se considera un literal.


 Y = 3.5*X + W + 7. El 3.5 y el 7 se consideran un literales.
 cout “X * 2 = ” << X << “ *” << 2 << “=” << x*2. Se consideran literales: “X * 2 = ”,
“*”, 2 y el =.

4.2.4 Identificadores

Los identificadores representan los nombres de los objetos de un programa


(constantes, variables, estructuras de datos, registros y sus campos, procedimientos,
funciones y etiquetas, entre otros).

Un identificador es una secuencia de caracteres que sirve para identificar una posició n
de memoria que nos permite acceder a su contenido. En pocas palabras, un
identificador es el nombre que le damos a una posició n/direcció n de memoria. En este
sentido, en una posició n de memoria podemos guardar un valor o dato.

Cada lenguaje de programació n utiliza reglas que permiten al programador conocer


los caracteres que son permitidos y la cantidad mínima y má xima que se deben
utilizar en un identificador. Estas reglas que hay que seguir en un identificador, son:

 Nú mero má ximo y mínimo de caracteres a utilizar.


 Caracteres que son permitidos.
 Caracteres que no son permitidos.

4.2.5 Operadores

Los operadores son símbolos que se utilizan para definir las operaciones que el
computador puede realizar con los datos.

Los operadores son símbolos que relacionan de forma diferente los valores de una o
má s variables y/o constante. Los valores sobre los que actú an los operadores se
denominan operandos.

Tipos de operadores:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

 Aritméticos. Estos permiten la realizació n de operaciones matemá ticas (suma,


resta, multiplicació n, divisió n y mó dulo) con los valores de las variables y las
constantes.
 Relacionales. Se utilizan en problemas donde se hace necesario comparar
valores para tomar decisiones.
 Lógicos. Se usan con valores ló gicos (verdadero y falso). También está n
pensados para construir instrucciones condicionales compuestas.
 Asignación. Se utilizan para la inicializació n de las variables y para guardar
resultados de operaciones aritméticas, relacionales y ló gicas.
 Concatenación. Se utiliza para unir datos alfanuméricos.

Para manejar estos operadores, cada uno de los lenguajes de programació n debe
definir los siguientes requerimientos:

 Utilizar símbolos diferentes para hacer referencia a cada operador en


particular. Esto evita la ambigü edad.
 Establecer la prioridad o precedencia entre ellos. Con esto se puede saber qué
operadores se ejecutan primero en una expresió n. Esto evita obtener
resultados erró neos.

La mayoría de los lenguajes de programació n tienen cinco operadores aritméticos


básicos cuyo significado se muestra en la tabla siguiente.

Operado
Nombre Ejemplo Algunos lenguajes de programació n tienen otros
r
operadores como el de divisió n entera (DIV),
+ Suma 7=3+4 potenciació n (^ ó **), entre otros.
Diferenci
- -1=3-4
a
* Producto 12=3*4
2.8=20/
/ Cociente Casi todos los lenguajes de programació n tienen
7
los siguientes operadores relacionales cuyo
% o MOD Mó dulo 6=20%7
significado se muestra en la tabla siguiente.

Operador Nombre ejemplo Significado


< menor que a<b a es menor que b
> mayor que a>b a es mayor que b
== igual a a==b a es igual a b
!= no igual a a!=b a no es igual a b
<= menor que o igual a a<=5 a es menor que o igual a b
>= mayor que o igual a a>=b a es menor que o igual a b
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Los operadores relacionales son símbolos que se usan para comparar dos valores. Si el
resultado de la comparació n es correcto la expresió n considerada es verdadera, en
caso contrario es falsa. Por ejemplo, 8>4 (ocho mayor que cuatro) es verdadera, se
representa por el valor true del tipo bá sico boolean, en cambio, 8<4 (ocho menor que
cuatro) es falsa, false. En la primera columna de la tabla anterior, se dan los símbolos
de los operadores relacionales, el la segunda, el nombre de dichos operadores, y a
continuació n su significado mediante un ejemplo.

Se debe tener especial cuidado en no confundir el operador asignació n con el


operador relacional igual a. Las asignaciones se realizan con el símbolo =, las
comparaciones con ==.

Los lenguajes de programació n también manejan operadores lógicos. Estos se


utilizan en los programas para implementar instrucciones condicionales compuestas.

Mientras que los operadores aritméticos se usan principalmente con nú meros, los


operadores ló gicos está n pensados para usarse con valores ló gicos (verdadero y
falso). Hay solo tres operadores ló gicos: y (AND), o (OR) y no (NOT).

Los operadores ló gicos son:

 AND (el resultado es verdadero si ambas expresiones son verdaderas)


 OR (el resultado es verdadero si alguna expresió n es verdadera)
 NOT (el resultado invierte la condició n de la expresió n)

AND y OR trabajan con dos operandos y retornan un valor ló gico basadas en las
denominadas tablas de verdad. El operador NOT actú a sobre un operando. Estas
tablas de verdad son conocidas y usadas en el contexto de la vida diaria, por ejemplo:
"si hace sol Y tengo tiempo, iré a la playa", "si NO hace sol, me quedaré en casa", "si
llueve O hace viento, iré al cine". Las tablas de verdad de los operadores AND, OR y
NOT se muestran en las tablas siguientes

El operador ló gico AND

X y resultado
True true true
True false false
False true false
False false false

El operador ló gico OR
Solució n de problemas por computador Isaac Zú ñ iga Silgado

X y resultado
True true true
True false true
false true true
false false false

El operador ló gico NOT

x Resultado
true False
false True

Existen lenguajes de programació n que también tienen en cuentan los siguientes


conceptos:

 La asignació n mú ltiple. Por ejemplo, inicializar en la misma línea varias


variables, así: c=a=b=321.
 Los operadores unarios. Estos actú an sobre un ú nico operando, por ejemplo:
o ++ Incremento. i++ equivale a i=i+1, que significa añ adir 1 a i . El resultado
se guarda en i.
o -- Decremento. I-- equivale a i=i-1, que significa quitar 1 a i. El resultado se
guarda en i.
o La sentencia j=i++ equivale a incrementar i en 1 y el resultado lo guarda en
j.
o La sentencia j=i-- equivale a decrementar (quitar 1 a i) i en 1 y el resultado
lo guarda en j.

4.2.6 Expresiones

El computador utiliza los operadores y las expresiones para poder ejecutar las
operaciones sobre los datos.

Una expresión es un conjunto de variables, constantes y literales de tipos


compatibles entre sí, estos elementos está n combinados mediante operadores vá lidos;
la expresió n má s simple está formada por un ú nico elemento (variable, literal o
constante) sin ningú n operador.
 
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Toda expresió n tiene asociada un tipo que corresponde con el tipo del valor que
devuelve la expresió n cuando se evalú a, por lo que habrá tantos tipos de expresiones
como tipos de datos. Habrá expresiones numéricas y ló gicas.

A continuació n se muestran algunas expresiones típicas (aritméticas, relacionales y


ló gicas, alfanuméricas):

Expresiones aritméticas

Una expresió n aritmética es una combinació n de constantes y/o variables, unidas o


relacionadas con operadores aritméticos.

SIGNO SIGNIFICADO
+ Suma
- Resta
* Multiplicació n
/ Divisió n
^ Potenciació n
() Agrupa operaciones
 
El orden  de prioridad  en la evolució n  de los operadores  aritméticos es el siguiente:
 
1)    Paréntesis
2)    Potenciació n
3)    Multiplicació n y Divisió n
4)    Suma y Resta

Ejemplo: Si  a = 9; b =2;  c =5;  d = 3


                                  
Expresión Aritmética Resultado
a+b*c 19
(a+b)*c 55
((a + c – b) * b) / (c + d ) 3
(c + d) ^ b 64
 

Expresiones relacionales

Una expresió n relacional es una combinació n de constantes y/o variables, unidas o


relacionadas con operadores relacionales. Se utiliza para relacionar expresiones que
al ser evaluadas producen un valor booleano: verdadero o falso.

SIGNO SIGNIFICADO
< Menor que
> Mayor que
Solució n de problemas por computador Isaac Zú ñ iga Silgado

= Igual a
<= Menor o igual que
>= Mayor o igual que
<> Distinto de

No existen prioridades en el orden de evaluació n de los operadores relacionales. Si es


necesario establecer alguna prioridad en el orden de evaluació n, se deben utilizar los
paréntesis.

Ejemplo: si a = 9;  b = 2; c = 5;  d = 3

Expresión relacional Resultado


c  <  a Verdadero
a  >= c Verdadero
a –  b   >   d Falso
d  <=  c –  b Verdadero
d  <  c -  b Falso
 

También se puede comparar datos alfanuméricos (estos datos también son tipo
cadena o string). En este caso se comparan uno a uno los caracteres, comenzando
desde la izquierda. Si los datos tienen diferentes longitudes, pero son exactamente
iguales hasta el ú ltimo cará cter del má s corto, entonces se considera que el má s largo 
es el mayor. El ú nico caso en que  los datos son iguales, es cuando tienen la misma
longitud  y los mismos caracteres, en el mismo orden. Las letras minú sculas son
mayores que las mayú sculas. Tenga en cuenta que el espacio en blanco también es un
cará cter.

Ejemplo:                  

Expresión relacional Resultado


“E”   <    “F” Verdadero
“e”  <    “F” Falso
“NADAR”  =   “NADAR” Verdadero
“2”   <     “12” Falso
“B” >   “ASTRO” Verdadero
 

Expresiones lógicas

Una expresió n ló gica es una combinació n de constantes y/o variables y/o expresiones
matemá ticas o relacionales, unidas o relacionadas con operadores lógicos.

Permiten      realizar     operaciones    con    expresiones relacionales, efectuando


combinació n de condiciones que generan  un resultado booleano: verdadero o falso.
Solució n de problemas por computador Isaac Zú ñ iga Silgado

SIGNOS SIGNIFICADO
AND Producto ló gico (y)
OR Suma ló gica  (0)
NOT Negació n  (NO)
 

Orden de prioridad en la evaluació n de los operadores ló gicos:

1)    NOT
2)    AND
3)    OR
 
AND: es el operador ló gico de conjunció n. La expresió n que se evalú a  de có mo
resultado verdadero si y solo si todos las condiciones  son verdaderas. Dicho de otra
manera, es  suficiente que unas de las  condiciones sea falsa para que el resultado sea
falso.

Condició n 1 Condició n  2 Resultado


A B A   AND  B
Falso Falso Falso
Falso Verdadero Falso
Verdadero Falso Falso
Verdadero Verdadero Varadero
 

Ejemplo: si  a = 9;   b = 2;  c =5;   d = 3

Expresión Lógica Resultado


(a > b) AND (b<= c)
Verdadero
{V}         {V}
( c > d ) AND (c = a)
Falso
{V}     {F}
b = ( c – d ) AND ( a + b) > = ( c * d )
Verdadero
{V}    {V}
(c = 5) AND (c >b) AND (a <=  d)
Falso
{F}        {F}           {F}
(C = 5) AND (b < c) AND (a >= d)
Verdadero
{V}          {V}         {V}

OR: es el operador ló gico de disyunció n. La expresió n que se evalú a da como


resultado falso sí y solo sí todas las condiciones son falsas. Dicho de otra manera, es
suficiente que una de las condiciones sea verdadera para que el resultado sea
verdadero.

Condición1 Condición 2 Resultado


Solució n de problemas por computador Isaac Zú ñ iga Silgado

A B A OR B
Falso Falso Falso
Falso Verdadero Verdadero
Verdadero Falso Verdadero
Verdadero Verdadero Verdadero
 

            Ejemplo: si  a = 9;   b = 2;  c =5;   d = 3

Expresión Lógica Resultado


(a > b) OR (b<= c)
Verdadero
{V}        {V}
( C > d ) OR  (c = a)
Falso
{V}     {F}
b = ( c – d ) OR ( a + b) > = ( c * d )
Verdadero
{V}               {V}
(c > 5) OR  (c >b) OR  (a <=  d)
Falso
{F}        {F}          {F}
(C <> 5) OR   (b  < c) OR   (a >= d)
{V}         {V}             {V} Verdadero

                       

NOT: es  el operador ló gico de negació n. Afecta a una sola expresió n, a cambio su


estado ló gico: si era falso se convierte en verdadero y viceversa.

Condición 1 Resultado
A Not A

FALSO VERDADERO

VERDADERO FALSO

  EJEMPLOS: A =9, B: 2, C: 5, D: 3

Expresión  lógica Resultado


NOT (A < B)
VERDADERO
{F}
NOT   (( B  + D) < A)
FALSO
{V}
NOT ( C  = D )
VERDADERO
{F}
 
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Expresiones alfanuméricas

Una expresió n alfanumérica se utilizan para unir datos alfanuméricos. Recuerde que
los datos alfanuméricos no pueden utilizarse en expresiones aritméticas

OPERADOR SIGNICADO

+ CONCATENACION

            EJEMPLOS: SI NOMBRE = “JUAN¨”  Y APELLIDO = “PEREZ”

EXPRESION ALFANUMERICA RESULTADO


NOMBRE + APELLIDO “JUANPEREZ”
“NOMBRE: +  “ ”  + APELLIDO “JUAN PEREZ”
“5 “  + “17” “517”

Como se pudo observar, para asignar un valor a una variable o constante


alfanumérica, dicho valor debe estar encerrado entre comilla.

En síntesis,

a) Estos cuatro (4) tipos de expresiones se pueden combinar para establecer las
condiciones y/o comparaciones en las en las sentencias condicionales.
b) Orden de evaluación (Reglas de prioridad). En el momento de establecer un
condició n combinando varios o todos los tipos de expresiones, se debe seguir y
respetar el siguiente orden de precedencia de los operadores.

1º.    Paréntesis (comenzando por lo mas internos)


2º.    Potencias
3º.    Productos y divisiones
4º.    Sumas y restas
5º.    Concatenació n
6º.    Relacionales
7º.    NOT
8º.    AND
9º.    OR

Ejercicios: Evalué las siguientes expresiones aritméticas, ló gicas y relacionales.


Describa paso a paso como se llega al resultado final en cada ejercicio.

1) (45 <= 7) OR (NOT (5>=7))


2) 2+8-1 mod 1
3) 3*2^5 mod 1
4) 7 mod (5 mod 3)
5) 7 mod 5 mod 3
Solució n de problemas por computador Isaac Zú ñ iga Silgado

6) NOT ((5 / 2 * 3 – 1) = 4 div 2 mod 2 OR (10 < = 3 + 3 - 2) AND (3 / 4) ^2 * (2 +


10 mod 3))
7) (3*2^5 mod 1 + 8*(3-5) < (2+8-1 mod 1)
8) A es verdadero; A OR (3+5*8) < 3 AND ((-6/3 div 4)*2 < 2)
9) B = -12; (-B*2 <> 8*3 mod 4) AND (“A”> “B”)

4.2.7 Comentarios

El có digo fuente de un programa no solo puede contener instrucciones propias del


programa. También puede incluir comentarios, estos son ignorados por los
compiladores e intérpretes, son notas que los programadores utilizan para poder
documentarlo y comprenderlo mejor. Por ejemplo, se pueden utilizar comentarios
para explicar un bloque de instrucciones, el uso de una variable o funció n en
particular, también se utilizan para la integració n con sistemas de control de
versiones, etc. Es decir, Los comentarios son añ adidos usualmente con el propó sito de
hacer el có digo fuente má s fá cil de entender con vistas a su mantenimiento o
reutilizació n.

Los comentarios pueden ser de dos tipos: de una sola línea o multi-línea y cada
lenguaje de programació n utilizan símbolos propios para poder expresarlos.

Los comentarios de una sola línea puede abarcar toda la línea o escribirse después
que termina una instrucció n, pero nunca abarcará má s de una línea, es decir, siempre
terminara en la misma línea donde empezó .

Los comentarios multi-línea pueden abarcar una o má s. Estos se delimitan con


caracteres especiales desde el comienzo hasta donde termina. Como se podrá
apreciar, este tipo de comentario lo utiliza el programador cuando considera
necesario ser má s explicativo.

Por ejemplo,

a) en lenguajes Java y C++, es igual…


 Los comentarios de una sola línea empiezan con los caracteres //
 Los comentarios multi-línea empiezan con los caracteres /* se escribe el
comentario y terminan con los caracteres */

b) en lenguaje Python…
 Los comentarios de una sola línea empiezan con el caracter #
 Los comentarios multi-línea empiezan con los caracteres """ se escribe el
comentario y terminan con los caracteres """

c) En lenguaje Ensamblador…
Solució n de problemas por computador Isaac Zú ñ iga Silgado

 Los comentarios son de una sola línea y empiezan con el caracter punto y
coma (;).

d) en lenguaje Ruby…

 Los comentarios de una sola línea empiezan con el caracter #


 Los comentarios multi-línea empiezan con la cadena =begin se escribe el
comentario y terminan con los caracteres =end

4.3 INSTRUCCIONES BÁ SICAS DE UN LENGUAJE DE PROGRAMACIÓ N [3] [4]

De acuerdo con el teorema del programa estructurado, todo programa puede


escribirse utilizando ú nicamente las tres instrucciones de control siguientes:

 Secuencia: Sucesió n simple de dos o má s operaciones. Secuencia es


simplemente la formalizació n de la idea de que las instrucciones de un
programa son ejecutadas en el mismo orden en que ellas aparecen en el
programa. Forman parte de esta categoría: las sentencias de asignación, de
captura e impresión de datos.
 Instrucción condicional o de Selección: bifurcació n condicional de una o mas
operaciones. Es la escogencia entre dos acciones tomando la decisió n en base al
resultado de evaluar un predicado. En esta categoría se encuentra la sentencia
sí…entonces...
 Iteración (bucle de instrucciones) con condició n o predicado al principio o al
final: Repetició n de una operació n mientras se cumple una condició n. Esta
estructura ló gica es utilizada para que se repita la ejecució n de un conjunto de
instrucciones mientras se cumpla una condició n o predicado. Forman parte de
esta categoría: las sentencias while (mientras que… haga…) y for (hacer para…)

Estos tres tipos de estructuras ló gicas de control pueden ser combinados para
producir programas que manejen cualquier tarea de procesamiento de informació n. El
resto de repertorio de estructuras de control que tienen los lenguajes de
programació n, pueden ser construidas mediante estas tres bá sicas citadas.

A lo largo de esta lecció n se presentará n las distintas estructuras de control, la forma


de representarlas en la notació n algorítmica y las correspondientes sentencias Python
para poder utilizarlas en nuestros programas.

4.3.1 Estructura secuencial

La estructura secuencial es la má s sencilla de todas,


simplemente indica al procesador que debe ejecutar de
forma consecutiva una lista de acciones (que pueden ser, a
Solució n de problemas por computador Isaac Zú ñ iga Silgado

su vez, otras estructuras de control); para construir una secuencia de acciones basta
con escribir cada acció n en una línea diferente.

Ejemplo: Elabore un algoritmo para convertir temperaturas en grados Fahrenheit a


Celsius.

Algoritmo en Pseudocódigo Programa Python


leer GradosFahrenheit GradosFahrenheit = int(input("Dígame la
GradosCelsius = ((GradosFahrenheit – 32)*5)/9 temperatura en Grados Fahrenheit: "))
Imprimir GradosCelsius GradosCelsius = ((GradosFahrenheit – 32)*5)/9
print(“Equivale a ”, GradosCelsius," Grados
Celsius ")

Existe una forma alternativa de expresar una estructura secuencial escribiendo varias
acciones en la misma línea pero utilizando el punto y coma, ;, como separador entre
una acció n y la que le sigue. Sin embargo, esta ú ltima notació n es no es aconsejable
puesto que puede llegar a hacer el có digo bastante difícil de leer.

Por ú ltimo, es necesario señ alar un aspecto importante de la composició n secuencial y


es que no es conmutativa. Esto quiere decir que no es lo mismo primero imprimir los
grados Celsius y después leer los grados Fahrenheit; observe que este ú ltimo se
necesita para calcular el primero.

4.3.2 Estructura alternativa (condicional o de decisión)

La estructura alternativa permite bifurcar el “flujo” del programa en funció n de una


expresió n ló gica; disponemos de tres estructuras alternativas diferentes: alternativa
simple, alternativa doble y alternativa mú ltiple.

La estructura alternativa simple:

Esta estructura permite evaluar una expresió n


ló gica y en funció n de dicha evaluació n ejecutar
una acció n (o composició n de acciones) o no
ejecutarla; también se la suele denominar SI-
ENTONCES. A continuació n se muestra la
notació n algorítmica y en Python para la
estructura alternativa simple.

En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es


positivo no nulo:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Algoritmo en Pseudocódigo Programa Python


Leer radio radio = int(input("Dígame el valor del radio en
si radio>0 entonces radianes: "))
if radio > 0:
longitud=2*3.1416* radio
longitud = 2*3.1416*radio
imprimir longitud print(“La longitud del circulo es: ”, longitud)
fin_si

Estructura alternativa doble:

La estructura alternativa doble es similar a la anterior


con la salvedad de que en este tipo de estructura se
indican acciones no só lo cuando la condició n es
“verdadera” sino también para cuando es “falsa”; es
decir, en caso de la expresió n ló gica evaluada sea cierta
se ejecutan una acció n o grupo de acciones y en caso de
que sea falsa se ejecuta un grupo diferente de acciones.
La sintaxis en la notació n algorítmica y en Python son
las que se muestran a continuació n:

En el siguiente ejemplo se calcula la longitud de una circunferencia si el radio es


positivo no nulo y, en caso contrario, se proporciona un mensaje de error:

Algoritmo en Pseudocódigo Programa Python


Leer radio radio = int(input("Dígame el valor del radio en
si radio>0 entonces radianes: "))
longitud=2*3.1416* radio if radio > 0:
imprimir longitud longitud = 2*3.1416*radio
sino print(“La longitud del circulo es: ”, longitud)
imprimir “Error: el radio debe ser mayor que cero” else:
fin_si print(“Error: el radio debe ser mayor que cero”)

Estructura multialternativa:

Esta estructura evalú a una expresió n que


pueda tomar n valores (enteros, caracteres y
ló gicos pero nunca reales) y ejecuta una
acció n o grupo de acciones diferente en
funció n del valor tomado por la expresió n
selectora.

La sintaxis de esta estructura es la siguiente:

En el siguiente ejemplo dado el nú mero correspondiente de un mes del añ o, se


proporciona como salida el nú mero de días de un mes dado:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Algoritmo en Pseudocódigo Programa Python


Leer mes mes = int(input("¿Cuá ntos añ os tiene? "))
segun mes if mes == 1 or mes == 3 or mes == 5 or mes == 7 or mes == 9 or mes == 11:
caso 1, 3, 5, 7, 9, 11: print("31 dias")
escribir “31 días” elif mes == 4 or mes == 6 or mes == 8 or mes == 10 or mes == 12:
print("30 dias")
caso 4, 6, 8, 10, 12:
elif mes == 2:
escribir “30 días” print("28 dias ")
caso 2: else:
escribir “28 días” print("ERROR: mes incorrecto ")
otro caso:
escribir “ERROR: mes incorrecto”
fin segun

Obsérvese que es posible que un caso conste de mú ltiples valores.

4.3.3 Estructura repetitiva (bucles o ciclos)

La estructura repetitiva o iterativa permite, como su propio nombre indica, repetir


una acció n (o grupo de acciones); dicha repetició n puede llevarse a cabo un nú mero
prefijado de veces o depender de la evaluació n de una expresió n ló gica. Existen tres
tipos de estructuras repetitivas: desde-hasta, mientras y repetir-hasta.

Estructura desde-hasta (hacer para o for)

Esta estructura permite repetir la ejecució n de una acció n o de un grupo de acciones


un nú mero determinado de veces. Usa una variable contadora que va desde un valor
inicial hasta un valor final, realizando una iteració n cada vez y modificando el
contador segú n lo indicado en paso; la sintaxis es la siguiente:

El funcionamiento de la estructura es el siguiente:

 En primer lugar, se asigna a la variable índice el


valor de inicio.
 El bucle se ejecuta mientras índice no alcance el
valor final.
 En cada iteració n el valor de índice es
incrementado segú n el paso indicado y se ejecuta la
acció n o grupo de acciones encerrados en el
bucle.
 En caso de que no se indique ningú n paso el que
se empleará será +1.

En términos pseudocó digo tendríamos esto: 


Solució n de problemas por computador Isaac Zú ñ iga Silgado

desde variable = valor_inicial hasta valor_final, [incremento|decremento] hacer: 


<sentencias_ciclo: grupo de acciones encerradas en el bucle> 
fin-desde 

O lo que es lo mismo:

para variable = valor_inicial hasta valor_final, [incremento|decremento] hacer: 


<sentencias_ciclo: grupo de acciones encerradas en el bucle> 
fin-para 

Cuando se está dentro del ciclo (entre el para y fin-para), cada vez que se llega (de
arriba hacia abajo) al fin-para, el programa salta hasta el para, y el mismo incrementa
o decrementa la variable contadora, y ejecuta las acciones del ciclo mientras no
sobrepase el valor final; de lo contrario salta (hacia abajo) a ejecutar las instrucciones
que está n debajo del fin-para.

Ejemplo No. 1: 


Algoritmo en Pseudocódigo Programa Python
suma = 0 suma = 0
desde i = 1 hasta 10 hacer:  for i in range(10):
suma = suma + i  suma = suma + i
fin desde print(suma)
Escribir suma

Ejemplo No. 2:
Algoritmo en Pseudocódigo Programa Python
producto = 1 #usando decremento en el ciclo for
para j = 5000 hasta 100, 10 hacer:  (5000, hasta 100, decremento 10)
producto = producto * j  producto =1
fin para for j in range(5000,99,-10):
producto = producto * j
print "j = ", j

En el primer ejemplo el FOR es ascendente siendo 1 el incremento. Por tanto el valor


de i será 1, 2, 3... 10. El segundo ejemplo es descendente y el decremento se ha
establecido en 10. En este caso j = 5000, 4990,
4980, .... 100. 

Estructura mientras que (hacer mientras o


while)

El nú mero de repeticiones lo determina la


condició n escrita en la cabecera de la sentencia.
La acció n solo se ejecuta si se cumple la
condició n, es decir, si esta se evalú a como
Solució n de problemas por computador Isaac Zú ñ iga Silgado

verdadera; en caso contrario, se continú a en la acció n situada fuera del bucle tras el
fin mientras.

La condició n tiene una variable asociada. Esta variable debe estar inicializada en un
valor o tener algú n valor asociado; ademá s dentro del conjunto de acciones del ciclo,
debe haber por lo menos una donde se actualice dicha variable, de lo contrario la
condició n siempre será verdadera y nunca se saldrá del ciclo (a esto se le llama ciclo
infinito).

Otro aspecto muy importante de esta estructura de control es que si la expresió n


ló gica es inicialmente falsa el bucle no se ejecuta ni una sola vez; es decir, la estructura
mientras supone que el bucle iterará 0 ó má s veces.

Sintaxis en seudocó digo:

Inicializar variable asociada a la condició n


mientras <Condició n> hacer // <Condició n es una expresió n ló gica
<Acció n> // conjunto de acciones a realizar repetidamente
fin mientras
... // el algoritmo continua aquí cuando sale del bucle

Ejemplo: Algoritmo que muestra los nú meros del 1 al 100 utilizando la sentencia
mientras.

Algoritmo en Pseudocódigo Programa Python


i=1 i=1
mientras i <= 100 hacer while i <= 100:
Escribir(i) print(i)
i=i+1 i += 1
fin mientras print("Final")

Estructura repetir-hasta (repeat … until)

Esta estructura repite una acció n o grupo de acciones


hasta que una expresió n ló gica sea cierta; la sintaxis en
la notació n algorítmica es la siguiente (no existe
equivalente en FORTRAN y en otros lenguajes de
programació n pero sí en otros lenguajes de
programació n):

repetir
acció n // conjunto de acciones a ejecutar dentro del bucle
hasta expresió n ló gica
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Un aspecto muy importante de la presente estructura de control es que la expresió n


ló gica no se evalú a hasta el final con lo cual el bucle se ejecuta al menos una vez por
contraposició n a la estructura anterior que podía no ejecutarse ninguna.

Dentro del ciclo también se debe actualice la variable asociada a la condició n, de lo


contrario la condició n siempre será verdadera y nunca se saldrá del ciclo (a esto se le
llama ciclo infinito).

Ejemplo: Algoritmo que muestra los nú meros del 1 al 100 utilizando la sentencia
repetir.

Algoritmo en Pseudocódigo Programa Python


i=1 NOTA: La sentencia repetir… hasta, no
repetir tiene representació n en el lenguaje
Escribir i Python
i=i+1
hasta que i > 100

Bucles infinitos

Si la condició n del bucle se cumple siempre, el bucle no terminará nunca de ejecutarse


y tendremos lo que se denomina un bucle infinito.

Los bucles infinitos deben evitarse pues significan perder el control del programa.
Cada lenguaje de programació n utiliza una combinació n de teclas para interrumpir la
ejecució n de un bucle infinito: por ejemplo, en Python para interrumpir un bucle
infinito, hay que pulsar la combinació n de teclas Ctrl+C. 

Nadie está exento de cometer un error, es fá cil programar involuntariamente un bucle


infinito, por lo que es inevitable hacerlo de vez en cuando, sobre todo cuando se está
aprendiendo a programar.

A continuació n se muestran dos (2) ejemplos de bucles infinitos:

Ejemplo No. 1. El programador ha olvidado modificar la variable de control dentro del


bucle y el programa imprimirá nú meros 1 indefinidamente:

i=1
while i <= 10: Imprime infinitamente (nunca sale del ciclo)
print(i, "", end=") 1 1 1 1 1 1 1 1 ...

Ejemplo No. 2. El programador ha escrito una condició n que se cumplirá siempre y el


programa imprimirá nú meros consecutivos indefinidamente:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

i=1
while i > 0:
print(i, "", end="") Imprime infinitamente (nunca sale del ciclo)
i += 1 1 2 3 4 5 6 7 8 9 10 11 ...

4.4 USO DE VARIABLES CONTADORES, ACUMULADORES E INTERRUPTORES [3] [5]

En muchos programas se necesitan variables que cuenten cuá ntas veces ha ocurrido
algo (contadores) o que acumulen valores (acumuladores).

En caso de necesitar las variables contadores y acumuladores, estas está n presenten


en programas que utilicen sentencias iterativas; mientras que las variables
interruptores (o switches), no necesariamente se utilizan con sentencias iterativas.
Las variables interruptores (o switches), también se pueden utilizar para controlar
ciclos en donde es desconocido el nú mero de veces que se repite un proceso. Un caso
muy comú n de uso de estos ciclos se presenta cuando el programa interactú a
directamente con el usuario, para que este decida sí se continua repitiendo o no con
algú n proceso. Las sentencias iterativas adecuadas son el mientras que (while) o el
repita hasta (repeat until). Por obvias razones, la sentencia for no sirve para controlar
ciclos con variables interruptores.
Las situaciones pueden ser muy diversas para necesitar usar estas variables, a
continuació n se muestran varios ejemplos para mostrar sus usos.

Variable Contador

Se entiende por contador una variable que lleva la cuenta del nú mero de veces que se
ha cumplido una condició n. El ejemplo siguiente es un ejemplo de programa con
contador.

Ejemplo: Elaborar un algoritmo que nos averigü e e imprimir cuá ntos nú meros
mú ltiplos de 7 hay en los 1000 primeros nú meros enteros positivos.

print("Comienzo")
cuenta = 0
for i in range(1, 1001):
if i % 7 == 0:
cuenta = cuenta + 1
print("Desde 1 hasta 1000 hay", cuenta, "mú ltiplos de 7")

Detalles importantes:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

 En cada iteració n, el programa comprueba si i es mú ltiplo de 7.


 El contador se modifica só lo si la variable de control i es mú ltiplo de 7.
 El contador va aumentando de uno en uno.
 Antes del bucle se debe dar un valor inicial al contador (en este caso, 0)

Variable Acumulador

Se entiende por acumulador una variable que acumula el resultado de una operació n.
El ejemplo siguiente es un ejemplo de programa con contador El ejemplo siguiente es
un ejemplo de programa con contador.

Ejemplo: Elaborar un algoritmo que nos imprima la suma de los primeros 4 nú meros
enteros positivos.

print("Comienzo")
suma = 0
for i in [1, 2, 3, 4]:
suma = suma + i
print("La suma de los nú meros de 1 a 4 es", suma)

Detalles importantes:

 El acumulador se modifica en cada iteració n del bucle. (en este caso, el valor de
i se añ ade al acumulador suma).
 Antes del bucle se debe dar un valor inicial al acumulador (en este caso, 0)

Variable Interruptor o switch

También se les denomina conmutadores, indicador, centinelas y bandera (flag). Se


llama interruptor a una variable que ú nicamente toma dos valores (no
necesariamente booleano), los cuales se identifican con “abierto / cerrado”,
“verdadero / falso”, “on / off”, “start / stop”, “vá lido / no vá lido”, 10/20, “10/20”, etc.

El interruptor se usa para el control de flujo de los programas y para la toma de


decisiones. Por su naturaleza bipolar se asemejan a las variables booleanas,
ocurriendo muchas veces que el interruptor es una variable booleana. Sin embargo, ni
todos los interruptores son variables booleanas ni todas las variables booleanas son
interruptores. Vea los siguientes ejemplos de uso de variables.

Nombre de Valores Control


Función Booleana Interruptor
variable posibles flujo
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Si continuar vale
Verdadero verdadero se repite
Continuar Sí Sí Sí
Falso un bucle y si vale
falso se sale de él

Si Control vale –100


- 100 se repite el bucle y si
Control No Sí Sí
+ 100 vale +100 se sale de
él

Almacena la
Verdadero
Opinion contestació n a una Sí No No
Falso
pregunta de un test

Segú n Valor valga –7


-7
ó 7 da lugar a la
Valor 0 No No Sí
ejecució n de distintas
7
ó rdenes

Un interruptor normalmente se puede sustituir por una evaluació n de una variable.


Sin embargo, son muy usados porque evitan tener que evaluar expresiones complejas
y porque aportan claridad para la escritura y lectura de programas.

Ejemplo: ESTADÍSTICAS DE LA POBLACIÓ N APTA PARA VOTAR EN UN PAIS

Elabore un programa de computador que lea los siguientes datos para un nú mero
desconocido de personas:

 Edad de la persona
 Sexo (1 si es masculino, 2 si es femenino)
 Estado civil (1 si es soltero, 2 si es casado)

Se desea saber:

 El nú mero de hombres que pueden votar.


 El nú mero de mujeres que pueden votar.
 El nú mero total de personas solteras que pueden votar.
 El nú mero total de personas casadas que pueden votar.
 El nú mero total de personas que pueden votar.
 El nú mero total de personas que no pueden votar.

Nota: Solo pueden votar los que tengan 18 añ os cumplidos ó má s.

SOLUCIÓ N:
Solució n de problemas por computador Isaac Zú ñ iga Silgado

Las variables utilizadas son:

Nombre de la variable Descripción de la función Tipo de dato

Variable contador que se


inicializa en cero y se utiliza
para determina cuántos
numero_total_personas personas se han registrado en Entero
el sistema en un momento
dado (aptas más no aptas
para votar)

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
personas_aptas_para_votar
el nú mero total de personas que
pueden votar

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
personas_no_aptas_para_votar
el nú mero total de personas que no
pueden votar

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
numero_hombres_aptos
el nú mero de hombres que pueden
votar

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
numero_mujeres_aptas
el nú mero de mujeres que pueden
votar

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
numero_personas_solteras_aptas
el nú mero total de personas
solteras que pueden votar

Variable contador que se inicializa Entero


en cero y se utiliza para determinar
numero_personas_casadas_aptas
el nú mero total de personas
casadas que pueden votar

Edad_persona Edad de la persona Entero


Sexo de la persona (1 si es
Sexo_persona Entero
masculino, 2 si es femenino)
Estado civil de la persona (1 si
Estado_civil_persona Entero
es soltero, 2 si es casado)
Variable de control (interruptor)
que se utiliza para corroborar que
sw Cadena
el usuario no dio la orden de salir
del programa en forma accidental

# aquí el algoritmo
Solució n de problemas por computador Isaac Zú ñ iga Silgado

numero_total_personas = 0
personas_aptas_para_votar = 0
numero_hombres_aptos = 0
numero_mujeres_aptas = 0
numero_personas_solteras_aptas = 0
numero_personas_casadas_aptas = 0
sw = “N”
mientras ((sw = “N”) or (sw = “n”)) haga
# Captura de Datos de la Persona
leer "Edad (en añ os) de la persona: ”, Edad_persona
leer "Sexo (1 si es masculino, 2 si es femenino): ”, Sexo_persona
leer ("Estado civil (1 si es soltero, 2 si es casado): ”,
Estado_civil_persona
numero_total_personas = numero_total_personas + 1
si (Edad_persona >= 18) entonces # Persona apta para votar
personas_aptas_para_votar = personas_aptas_para_votar + 1
si (Sexo_persona == 1) entonces # Hombre
numero_hombres_aptos = numero_hombres_aptos + 1
sino # Mujer
numero_mujeres_aptas = numero_mujeres_aptas + 1
finsi
si (Estado_ civil_persona == 1) entonces # Soltero
numero_personas_solteras_aptas = numero_personas_solteras_aptas + 1
sino # Casado
numero_personas_casadas_aptas = numero_personas_casadas_aptas + 1
finsi
sino
escriba “Persona no apta para votar”
finsi
leer "Desea salir del programa (S/N): ", sw
finmientras
personas_no_aptas_para_votar = numero_total_personas - personas_aptas_para_votar
escriba "Informe de Personas Aptas para Votar en Colombia:"
escriba "El nú mero de hombres que pueden votar: ", numero_hombres_aptos
escriba "El nú mero de mujeres que pueden votar: ", numero_mujeres_aptas
escriba "El nú mero total de personas solteras que pueden votar: ",
numero_personas_solteras_aptas
escriba "El nú mero total de personas casadas que pueden votar: ",
numero_personas_casadas_aptas
escriba "El nú mero total de personas que pueden votar: ",
personas_aptas_para_votar
escriba "El nú mero total de personas que no pueden votar: ",
personas_no_aptas_para_votar
Fin

Ejemplo: REGISTRO DE VENTAS DIARIAS EN UNA SUPERTIENDA


Solució n de problemas por computador Isaac Zú ñ iga Silgado

Elabore un programa de computador que permita registrar (capturar) los datos


correspondientes a cada una de ventas que se realizan en un día en una Supertienda
del barrio o conjunto residencial donde usted vive.

El nú mero de ventas diarias es desconocido. Esto es obvio porque ninguna tienda sabe
cuantas ventas va a realizar en un día cualquiera.

Para cada venta se debe registrar los siguientes datos:

 Có digo del artículo


 Costo unitario
 Cantidad vendida
 Tipo de artículo (1. Víveres; 2. Frutas y verduras; 3. Carnes y peces)

Al culminar el día de trabajo en la Supertienda, el dueñ o desea que el programa le


genere un reporte impreso con la siguiente informació n:

 La cantidad total de cada tipo de artículo vendido en el día.


 La cantidad total vendida (en pesos) en el día en la Supertienda
 ¿Cuá ntas ventas se hicieron durante el día en la Supertienda?

SOLUCIÓ N:

Las variables utilizadas son:

Nombre de la variable Descripción de la función Tipo de dato

Variable contador que se inicializa


en cero y se utiliza para determina
Cant_arti_tipo1 Entero
cuá ntos artículos tipo 1 se
vendieron durante el día

Variable contador que se inicializa


en cero y se utiliza para determina
Cant_arti_tipo2 Entero
cuá ntos artículos tipo 4 se
vendieron durante el día

Variable contador que se inicializa


en cero y se utiliza para determina
Cant_arti_tipo3 Entero
cuá ntos artículos tipo 4 se
vendieron durante el día

Variable contador que se inicializa


en cero y se utiliza para determina
Cant_arti_tipo4 Entero
cuá ntos artículos tipo 4 se
vendieron durante el día
Variable acumulador que se
Venta_total Real
inicializa en cero y se utiliza para
determinar La cantidad total
Solució n de problemas por computador Isaac Zú ñ iga Silgado

vendida (en pesos) en el día


Variable contador que se inicializa Entero
en cero y se utiliza para determina
Numero_ventas el nú mero de ventas
(transacciones) realizadas durante
el día
Có digo del artículo Variable de
Cadena
Codigo_articulo_vendido entrada que permite capturar el
có digo del artículo vendido
Variable de entrada que
Costo_unitario_artículo permite capturar el costo Real
unitario de un artículo vendido
Variable de entrada que
permite capturar el tipo de
Tipo_articulo Entero
artículo (1. Víveres; 2. Frutas y
verduras; 3. Carnes y peces)
Variable de entrada que
Cantidad_vendida_articulo permite capturar el nú mero de Entera
unidades del artículo vendido
Variable de control (interruptor)
que se utiliza para corroborar que
sw Cadena
el usuario no dio la orden de salir
del programa en forma accidental

# aquí el algoritmo
Cant_arti_tipo1 = 0
Cant_arti_tipo2 = 0
Cant_arti_tipo3 = 0
Cant_arti_tipo4 = 0
Venta_total = 0
Numero_ventas = 0
sw = “N”
mientras ((sw = “N”) or (sw = “n”)) haga
# Captura de Datos de la Persona
leer "Digite el có digo del artículo: ”, Codigo_articulo_vendido
leer "Digite el costo unitario del artículo: ”, Costo_unitario_artículo
leer "Digite el tipo de artículo: ”, Tipo_articulo
leer "Digite la cantidad de artículos en esta venta: ”, Cantidad_vendida_articulo
# Procesamientos de los datos capturados
Venta_total = Venta_total + Cantidad_vendida_articulo *
Costo_unitario_artículo
Numero_ventas = Numero_ventas + 1
segun Tipo_articulo
caso 1:
Cant_arti_tipo1 = Cant_arti_tipo1 + 1
caso 2:
Cant_arti_tipo2 = Cant_arti_tipo2 + 1
caso 3:
Cant_arti_tipo3 = Cant_arti_tipo3 + 1
caso 4:
Cant_arti_tipo4 = Cant_arti_tipo4 + 1
Solució n de problemas por computador Isaac Zú ñ iga Silgado

otro caso:
escribir “ERROR: tipo de artículo incorrecto”
fin segun
leer "Desea salir del programa (S/N): ", sw
finmientras
#
personas_no_aptas_para_votar = numero_total_personas - personas_aptas_para_votar
escriba "Informe de Ventas Realizadas en un Día en la Supertienda:"
escriba "El nú mero de hombres que pueden votar: ", numero_hombres_aptos
escriba "Cantidad total vendida en día del artículo tipo 1: ", Cant_arti_tipo1
escriba "Cantidad total vendida en día del artículo tipo 2: ", Cant_arti_tipo2
escriba "Cantidad total vendida en día del artículo tipo 3: ", Cant_arti_tipo3
escriba "Cantidad total vendida en día del artículo tipo 4: ", Cant_arti_tipo4
escriba “Cantidad total vendida (en pesos) en el día: “, Venta_total
escriba “Nú mero de ventas (transacciones) realizadas en el día: ”, Numero_ventas
Fin
Solució n de problemas por computador Isaac Zú ñ iga Silgado

BIBLIOGRAFÍA

[1] Introduction to Algorithms (2nd ed), Cormen, T. H., Leiserson, C. E., Rivest, R. L. y
Stein, C.
[2]  Cormen, Thomas; Leiserson, Charles; Rivest, Ronald; Stein, Clifford. Introduction
to algorithms. Cambridge, Massachusetts: The MIT Press. 2009. ISBN 978-0-262-
53305-8.
[3] Luis Joyanes Aguilar. (2008). FUNDAMENTOS DE PROGRAMACIÓ N Algoritmos,
Estructuras de datos y Objetos. Ed. Mc Graw Hill.
[4] Isaac Zú ñ iga y Alfonso De La Rosa. FUNDAMENTOS DE COMPUTACIÓ N.
Universidad Tecnoló gica de Bolívar. 2004.
[5] Isaac Zú ñ iga y Alfonso De La Rosa. PROBLEMARIO DE FUNDAMENTOS DE
COMPUTACIÓ N. Universidad Tecnoló gica de Bolívar. 2004.
[6] Harvey M. Deitel; Paul J Deitel coaut.; Alfonso Vidal Romero Elizondo tr.; Jorge
Octavio García Pérez tr.; Gabriela Azucena Campos García rev. Có mo programar en C+
+. México D.F Pearson, 4 ed. 2003. 005.133 D324co
[7] Herbert Schildt; Javier Gonzá lez Sá nchez trad.; Rosana Ramos Morales trad. Java
manual de referencia. México D. F. Mc-Graw-Hill, 7 ed. 2009. 005.133 S334j
[8] Eugenia Bahit. Curso: Python para Principiantes 2012.
www.eugeniabahit.com. Buenos Aires, Argentina.
[9] Roger S. Pressman. Ingeniería del software: Un enfoque prá ctico, 7ma Edició n.
McGraw-Hill. 2010. (CAPÍTULO 1. El software y la ingeniería de software PARTE UNO.
EL PROCESO DEL SOFTWARE; CAPÍTULO 14. Conceptos de calidad; CAPÍTULO 16.
Aseguramiento de la calidad del software; CAPÍTULO 17. Estrategias de prueba de
software)
[10] Ian Sommerville. Ingeniería de software, 9ª Edició n. Pearson Education. 2011.
(Capítulo 2 Procesos de software; Capítulo 3 Desarrollo á gil de software; Capítulo 8
Pruebas de software; Capítulo 9 Evolució n del software; Capítulo 16 Reutilizació n de
software)
[11] Kenneth E. Kendall. Aná lisis y diseñ o de sistemas, 8ª Edició n. Pearson Education.
2011. (Capítulo 7 Uso de diagramas de flujo de datos; Capítulo 17 Implementació n
exitosa del sistema de informació n)
[12] Javier Tuya. ISO/IEC/IEEE 29119 El nuevo está ndar internacional para pruebas
de software. Presentado en la “Jornada Informativa de AENOR”, Madrid, 2014-06-18.
[13] Javier Tuya. Standarization effort: ISO/IEC 29119 Software Testing. AST Network
Meeting, Seville, 2011-10-19.
[14] Stuart Reid. ISO/IEC 29119: The New International Software Testing Standard. V
Conferencia Internacional de Testing y Calidad del Software (expo:QA), Madrid, 2008-
22-27.

Otras referencias bibliográ ficas consultadas:

 Bö hm, Jacopini. "Flow diagrams, turing machines and languages with only two
formation rules" Comm. ACM, 9(5):366-371, May 1966
Solució n de problemas por computador Isaac Zú ñ iga Silgado

 Edsger Dijkstra (March 1968). «Go To Statement Considered


Harmful» (PDF). Communications of the ACM 11 (3):  pp. 147–
148. doi:10.1145/362929.362947. «The unbridled use of the go to statement has
as an immediate consequence that it becomes terribly hard to find a meaningful
set of coordinates in which to describe the process progress. ... The go to statement
as it stands is just too primitive, it is too much an invitation to make a mess of
one's program.».
 Plauger, P. J. (12 de febrero de 1993). Programming on Purpose, Essays on
Software Design (1 edició n). Prentice-Hall. p. 25. ISBN 978-0-13-721374-0.
 LOZANO, Letvin R., ¨ Diagramació n y programació n ¨. Editorial McGraw Hill,
México.
 NORTON, Peter., ¨ Introducció n a la computació n ¨. Editorial McGraw Hill, México.

También podría gustarte