Vous êtes sur la page 1sur 51

ALGORITMO

Conjunto de instrucciones que especifican en forma ordenada la secuencia de operaciones a


realizar para resolver un problema. Los algoritmos son independientes del lenguaje de
programacin en que se expresan y del computador en que sern utilizados.
CARAC!R"#$CA# %! L&# AL'&R$(&#
!l algoritmo es preciso) indicando el orden de realizacin de cada paso
#i se sigue un algoritmo dos o ms veces) se debe obtener el mismo resultado.
odo algoritmo es finito.
Los m*todos usuales para representar algoritmos son+ Los diagramas de flujo ,muy poco
usados actualmente- y el .seudocdigo.
.A#&# .ARA R!#&L/!R 01 .R&2L!(A
Comprender el problema+ Leerlo detenidamente y tratar de identificar cual es la incognita o el
objetivo que se pretende alcanzar3 cuales son los datos que se poseen y cuales son las
condiciones a las cuales estn sometidos los datos.
Concebir un plan+ consiste en aprovec4ar la experiencia ganada en la resolucin de otros
problemas.
!jecutar el plan+ utilizar alguna t*cnica de representacin de algoritmos para dise5ar la
solucin.
/isin retrospectiva+ Considerar los detalles de la solucin y tratar de simplificarlos.
Comprobar si los resultados obtenidos son correctos tomando datos reales o ficticios con los
cuales se recorre la solucin obtenida y se reflejan todos los cambios que sufren los datos en
cada uno de los pasos 4asta llegar al resultado final ,prueba de escritorio-.
PSEUDOCDIGO
!s una representacin narrativa) en la cual las sentencias escritas de acuerdo a ciertas reglas)
se asemejan a los cdigos de los lenguajes de programacin. !l .seudocdigo no puede ser
interpretado por el computador
/!1A6A# %!L .#!0%&C7%$'&
0tilizando el .seudocdigo para la escritura de un programa) el programador solo debe
preocuparse por la lgica y las estructuras de control y despreocuparse
momentneamente de las reglas de los lenguajes de programacin.
#i se detectan problemas en la lgica del programa) resulta sencillo modificar el
pseudocodigo) en cambio suelen surgir mayores complicaciones al modificar un programa ya
codificado.
!l .seudocdigo puede #er traducido a cualquier lenguaje de programacin.
!L!(!1&# %!L .#!0%&C7%$'&
.alabras Reservadas ,inicio) fin) si) finsi) desde) mientras) 4asta) leer-
$dentificadores de variables) constantes
/ariables y constantes
$nstrucciones
!structuras de Control
2ucles
Contadores) Acumuladores) Auxiliares e $nterruptores
DIAGRAMAS DE FLU1O
!s un conjunto de #imbolos que permite describir grficamente un algoritmo. !stos s8mbolos
estn unidos entre s8 por flec4as denominadas l8neas de flujo. Los s8mbolos representan a las
funciones de los programas y las l8neas de flujo denotan la secuencia en la que se debern
realizar estas funciones
!n el siguiente cuadro se muestran los s8mbolos mas usados.
#8mbolo 9uncin
.roceso
%ecisin
%atos
erminador
Conjuncin :
%isyuncin &
.antalla
%isco (agn*tico
&rdenar
Almacenamiento $nterno
Almacenamiento en Acceso %irecto
Almacenamiento en Acceso #ecuencial
%atos Almacenados
QUE ES UNA VARIABLE?
!s una ubicacin temporal de almacenamiento de datos dentro de un programa. !n el
programa se pueden utilizar una o ms variables) y estas podrn contener palabras) n;meros)
fec4as o propiedades.
Las variables nos permiten asignar un nombre corto y sencillo de recordar a una porcin de
datos con los que pensamos trabajar.
1&(!1CLA0RA %! /AR$A2L!#
Las variables deben tener nombres cortos pero intuitivos que lo relacionen siempre a su
contenido.
!l nombre de la variable debe empezar con una letra) puede tener 4asta <== caracteres de
longitud y no puede contener comas.
%ebemos elegir nombres descriptivos para las variables) combinando una o ms palabras si
fuera necesario.
#e recomienda utilizar combinacin de may;sculas y min;sculas) y tambi*n n;meros si es
necesario. 0n convenio consiste en capitalizar la primera letra de cada palabra de una
variable) por ejemplo 9ec4a%e1acim8ento.
1o se deben usar palabras claves) objetos o propiedades de /isual 2asic como nombre de
variables.
LA NOTACIN HUNGARA
Aunque todos programemos utilizando el mismo lenguaje) 4ay grandes diferencias en el
estilo de escribir cdigo de un programador a otro. #i todos codificramos utilizando el
mismo estilo de escritura para las variables) funciones) procedimientos y comandos nos seria
ms fcil entender el codigo de otros programadores y 4acer entender el nuestro.
La notacin hngara se basa en las siguientes reglas
.ro4ibido terminantemente el uso de 0nder#cores) es decir !>#>>&. solo pueden ser
usados en los defines) pero no en el nombre de una variable o funcin. !n lugar de los
0nder#cores 4emos de usar 1o0nder#cores. Las partes de una palabra deben ser separadas
con may;sculas y min;sculas) pero nunca con 0nder#cores.
La primera letra de una variable debe indicar el tipo de la misma+ el tipo esta representado
por una letra que indica el tipo de variable.
c) n) l) d) o) a
.or ejemplo+ cCadena) n1;rnero) d9ec4a) $Lgica) aArray) o&bjeto.
Los defines deben empezar por un prefijo ,tres letras preferentemente- que indiquen que tipo
de define es) o a que elemento se refiere. #i se pueden usar 0nder#cores. !sto seria+
%29>c1&(2R!
%29>nCA(.&#
Las funciones del #$#!(A) es decir aquellas que trae el lenguaje) se escriben #$!(.R! en
min;sculas) sin usar ninguna may;scula.
.or ejemplo+ date, -) alltrim, -)used, -.
Las funciones creadas por el programador comienzan por may;sculas y pueden ser
may;sculas para separar un aparte de otra. .or ejemplo+ Aread, - 2ox(sg, -
Las funciones de conversin) es decir aquellas que pasen de un valor a otro usan el ?<@ como
separador.
.or ejemplo+ #tr<Arr, -) Aex<%ec, -
Las palabras .R&C!%0R!) 901C$&1) y R!0R1 deben ir siempre en (A:0#C0LA#
y deben tener el mismo nivel de indentacin.
Con los m*todos de la programacin orientada a objetos 4ay una excepcin. La primera letra
del mensaje ser en min;sculas y las dems partes del nombre del mismo pueden ir en
may;sculas.
!jemplo+ o2roBseCaddColumn
&2L$'A&R$&+ odos los comandos van en min;sculas. Como los nombres de los campos
deben ir en may;sculas) al ver un cdigo seria mas fcil distinguir sobre que campos act;a un
comando. Los nombres de los %29s) AL$A# y CA(.&# van siempre en may;sculas.
ambien es obligatorio dejar un espacio entre los parentesis y su contenido
/AR$A2L!# #!'D1 #0 0$L$EAC$&1
C&1A%&R
!s una variable a la que se le suma un valor constante y se utiliza para realizar un conteo
progresivo o regresivo,si le resta el valor constante-
#intaxis
Contador = Contador + Constante
!jemplo
Inicio
Desde FCF hasta FG
$ngresar 1umero
Si 1umero HG
$mprimir ?1I positivo@
ConCConJF
FinSi
FinDesde
$mprimir ?#e $mprimieron@JConJ@1;meros@
Fin
AC0(0LA%&R & #0(A%&R
!s una variable a la que se le suma otra variable y se utiliza para realizar sucesion de sumas.
#intaxis
Sumador = Sumador + Varible
Ejemplo
Inicio
Desde FCF hasta FG
$ngresar 1;mero
Si 1;mero HG
$mprimir ?1I positivo@
#umaC#uma J 1;mero
FinSi
FinDesde
$mprimir ?La suma es KJ#uma
Fin
2A1%!RA
!s una variable 2ooleana ,#olo puede tener dos valores+ F o <) / o 9) .. o .9.- utilizada para
indicar un suceso dentro del programa.
A0L$L$AR
!s una variable que se utiliza para almacenar o guardar el contenido de otra variable. #e
utiliza para guardar el valor de una variable que podria ser modificada por algun proceso
Sintaxis
Auxiliar = Variable
Inicio
$ngresar 1umero
Aux C 1;mero
Mientras A<100
$mprimir A
ACAJF
FinMientras
$mprimir ?!l /alor inicial de A es@ JAux
Fin
TIPOS DE DATOS
1um*ricos+ Almacenan n;meros y con ellos podemos realizar operaciones aritm*ticas.
.ueden ser enteros o reales
Alfanum*ricos+ Almacenan caracteres alfanum*ricos. .ueden ser+ Letras de A a la E
Caracteres especiales+ guiones) par*ntesis) signos de puntuacin) n;meros) pero
con ellos no podemos realizar operaciones antm*ticas. !s una mezcla de letras) caracteres
especiales y n;meros.
2ooleanos+ #olo pueden tener dos valores+ verdadero o falso.
RUTINA
!s un conjunto de sentencias que realizan ciertos procesos que pueden ser invocados y
ejecutados desde un punto del programa. 0na vez finalizada la ejecucion de la rutina esta
devuelve el control al punto desde el cual 4ab8a sido invocada y se ejecuta la instruccion
siguiente a su llamada.
$.&# %! R0$1A
.R&C!%$($!1&#
0n procedimiento es un conjunto de instrucciones que ejecutan un servicio concreto. !l
servicio se solicita usando el nombre del procedimiento.
.ara llamar o 4acer uso de un procedimiento se debe escribir una declaracin en /isual
2asic) en la cual el nonmbre del procedimiento sea lo primero que aparezca. 0na llamada a
un procedimiento es una declaracin completa en visual basic y el procedimiento puede no
requerir de ninguna otra informacin. !n el caso en que se necesite mas informacin) se
introducen los valores separados por comas. Los valores que se pasan a un procedimiento o
una funcin se llaman Argumentos.
901C$&1!#
!s una sentencia que realiza un trabajo con cierto significado y despu*s devuelve un
resultado al programa.
.ARA(!R&#
#on datos que se transfieren entre e programa principal y la rutina y permiten ejecutar los
procesos que estan definidos en la rutina con diferentes variables utilizadas en otro punto del
programa.
$.&# %! /AR$A2L!# M0! 0$L$EA1 LA# R0$1A#
Variables Globales: #on aquellas compartidas por todos los procedimientos de todos los
mdulos de una base de datos. !stas variables se declaran en la seccin de declaraciones de
un procedimiento con la palabra 'lobal y su valor permanece vigente mientras este abierta la
base de datos
Variables de Modulo: son aquellas compartidas por todos los procedimientos de un modulo.
!stas variables se declaran en la seccin de declaraciones de un procedimiento precediendo el
nombre de la variable con la palabra %im.
VariabIes Locales: son aquellas que solo estn disponibles en el procedimiento al que se
declaran y en los procedimientos que son llamados por el. !stas variables se declaran con
%im. La variable local desaparece al finalizar la ejecucin del procedimiento.
C&1#A1!#
#on posiciones de memoria cuyo contenido no varia ,al contrario de variables-. #e utiliza en
casos en que debemos trabajar con valores que no cambian) por ejemplo el valor de .i) o el
numero de gramos de una onza etc. Aunque estos valores pueden ser usados directamente en
el programa sin necesidad de definirlo como constante) muc4as veces resulta mas sencillo
utilizar la nomenclatura .i en lugar de N)FOF=P<Q cada vez que sea necesario.
.ara definir una constante se utiliza Const.
Sintaxis
Const Nombre=Expresion
Ejemplo
Const 1&(2R! C ?Rosa@
Const R!#0LA%& C <G
OPERADORES
#on los s8mbolos que representan enlace entre cada uno de los argumentos que $ntervienen
en una operacion. #e utilizan para construir expresiones.
!stos operadores pueden ser+
&.!RA%&R!# R!LAC$&1AL!# & C&1%$C$&1AL!#
#e utilizan para formar expresiones booleanas) es decir) expresiones que al ser evaluadas
producen un valor verdadero o falso.
#8mbolo Relacin
H (ayor
R (enor
HC (ayor o $gual
RC (enor o $gual
C $gual
RH %istinto
&.!RA%&R!# AR$(S$C&#
#e utilizan para formar expresiones aritm*ticas con las variables num*ricas
#8mbolo &peracin
J #uma
T Resta
U (ultiplicacin
V %ivisin Real
^ .otencia
W %ivisin !ntera
(od Resto de la %ivisin
&.!RA%&R!# L&'$C&#
Combinan los operandos de acuerdo a las regias del lgebra de 2oole con el fin de producir
un nuevo valor que se convierta en el valor de la expresin
#8mbolo $mplicancia
&r Conjuncin
And %isyuncin
1ot 1egacion
&bs.+ !l par*ntesis es el operador utilizado para anidar expresiones
ESTRUCTURAS
Cuando se utiliza un diagrama de flujo o un pseudocodigo para representar un algoritmo) la
solucion del problema se podria dividir en tres partes+
$nicial+ en donde se representan todos los procesos que se deben ejecutar una sola vez al
principio del programa. ,por ejemplo definir variables) constantes. !tc.-
Repetitiva o Ciclo+ 2loque principal que se repite un numero determinado de veces)
controlado por una condicin de fin.
9inal+ son los procesos finales) que se ejecutan una sola vez. !n este punto generalmente se
incluyen las impresiones de resultados obtenidos.
!#R0C0RA# #!C0!1C$AL!#
La secuencia supone una accion con un punto de entrada y un punto de salida) que a su vez se
podria dividir en acciones menores.
!#R0C0RA# AL!R1A$/A#
#upone la toma de decisiones en base a una o varias condiciones3 razon por la cual la
ejecucion de ciertos procesos dependen de si se cumplen o no estas condiciones.
$.&#
Estructura Selectiva Simple
!n esta estructura se plantean dos posibilidades excluyentes. #i la condicion se cumple)
siempre se debera ejecutar una accion) si la condicion no se cumple se podria ejecutar otras
acciones de acuerdo al caso.
Si RcondicinH If RcondicinH
&peraciones &peraciones
FinSi FinIf
#ecuencia F
#ecuencia 1
Inicio
Leer A)2
#uma C AJ2
$mprimir #uma
Fin
#ecuencia <
#ecuencia F
!jemplo+
Inicio
$ngresar 1umero
Si 1umero HG
$mprimir ?1I positivo@
FinSi
Fin
Estructura Selectiva Doble
#i RcondicionFH $f RcondicionlH
&peraciones F &peraciones F
#i1o !lse
&peraciones< &peraciones F
9in#i !nd$f
!jemplo
Inicio
ingresar 1umero
Si 1umero HG
$mprimir ?1I positivo@
SiNo
$mprimir ?1I

no es .ositivo@
FinSi
Fin
Estructura Selectiva Multiple
Consiste en la evaluacion de una variable y la ejecucion de diferentes acciones seg;n el valor
de la variable y la condicion dada.
Si RcondicionFH lf RcondicionFH Then
&peracionesF &peracionesF
SiNo Else
Si Rcondicion<H If Rcondicion<H Then
&peraciones< &peraciones<
SiNo Else
&peracionesN &peracionesN
FinSi EndIf
FinSi EndIf
!jemplo+
Inicio
$ngresar 1umero
Si 1umero HG
$mprimir ?1I positivo@
SiNo
Si 1umero RG
$mprimir ?1I es negativo@
SiNo
$mprimir ?1I es neutro@
FinSi
FinSi
Fin
!#R0C0RA# R!.!$$/A#
#e utiliza en casos en que tenemos procesos que se deben repetir varias veces cambiando solo
los valores con los que opera #e denomina Ciclo 2ucle o Loop al conjunto de procesos que se
repiten una cantidad determinada de veces y cuyo fin se controla por medio de una condicion.
$.&#
Con condicion Inicial
!n est estructura se define la codicion de parada o fin del bucle antes de ejecutar cualquier
proceso. %entro del ciclo debe existir una accion que modifique algun parametro de la
condicion) caso contrario el ciclo nunca termina.
!n esta estructura la secuencia de acciones que compone el ciclo puede no ejecutarse en caso
de que la condicion no se cumpla la primera vez que se evalua.
!jemplo+
Inicio
$ngresar 1umero
Mientras ARCFGG
$mprimir A
ACAJ F
FinMientras
Fin
Con condicon Final
!n esta estructura se define la condicion de parada o fin del bucle al final del mismo. A
diferencia de la estructura mencionada anteriorniente) en esta estructura el proceso sera
ejecutado al menos una vez.
!jemplo+
Inicio
$ngresar 1umero
Repetir
$mprimir A
ACAJF
Hasta AHFGG
Fin
Con condicion Intermedia
!n esta estructura se define la condicion de parada o fin del bucle en un punto intermedio del
programa mediante una condicion.
Inicio
$ngresar 1umero
Ciclo
$mprimir A
ACAJF
Si AHFGG
#alir del Ciclo
FinSi
FinCiclo
Fin
Aacer(ientras X 9in(ientras %oY4ile X Loop
(ientras RcondicionHCverdadero %oY4ile RcondicionHCverdadero
&peraciones &peraciones
9in(ientras Loop
AacerAastaX 9inAacer %o X Loop0ntil
Aacer %o
&peraciones &peraciones
AastaMue AastaMue
2loque de $teracion+
#e utiliza para repetir una secuencia un determinado numero de veces para valores sucesivos
de una variable que controle la parada) 4asta que esta llegue a cierto limite. !l ciclo se repite
desde un valor inicial del contador 4asta superar el valor final a traves de un valor constante
de incremento. A esta estructura de iteracion se lo llama tambien Contador automatico.
!jemplo
Inicio
$ngresar 1umero
Desde $CF Hasta FGG Incremento F
$mprimir $
FinDesde
Fin
%esde X Aasta 9or X 1ext
%esde RvariableHCRvalor inicialH 4asta Rvalor finalH 9or RvariableH C Rvalor inicialH to Rvalor finalH
&peraciones &peraciones
9in%esde 1ext
A1$%AC$&1 %! !#R0C0RA
Anidacion consiste en incluir una estructura dentro de otra estructura de nivel superior)
teniendo en cuenta que la ultima estructura iniciada debe ser la primera en terminar. #e
pueden anidar tantas estructuras como se requiera.
!#R0C0RA# R!.!$$/A# A1$%A%A#
#e utiliza en situaciones en que dentro de un ciclo de repeticion se requiere la utilizacion de
un bucle menor.
Ejemplo
Inicio
$ngresar 1umeros A y 2
Mientras AR2
Desde $CA Hasta 2
$mprimir $
FinDesde
$ngresar 1umeros A y 2
FinMientras
Fin
QU ES UN MODULO?
Los lenguajes de programacin permiten escribir programas utilizando una sintaxis propia
para realizar de forma automatica alguna gestion o calculo. !l lenguaje de programacin
disponible en Access es /isual 2asic. Los programas creados en /2A son denominados
Procedimientos. Los procedimientos se almacenan en un objteto de la base de datos llamado
(odulo.
0n modulo es un objeto que contiene procedimientos.
Los procedimientos utilizados en una base de datos pueden estar contenidos en un solo
modulo o en varios) y contienen las instrucciones que indican a Access las acciones que debe
realizar.
Los pasos o acciones incluidas en un procedimiento se llaman Sentencias o declaraciones.
CR!AC$71 %! 01 (&%0L&
FTAbrir la base de datos
<TAacer un clicZ en la fic4a (dulos
NTAacer un clicZ en el botn 1uevo
La ventana (odulo es un editor de texto que da formato y verifica la sintaxis del cdigo
ingresado en ella organizando el cdigo en procedimientos independientes.
Al abrir un modulo se muestra la seccin de declaraciones del modulo ?Option Compare
Database. 0n modulo puede contener uno o varios procedimientos que se pueden visualizar
4aciendo ClicZ en el cuadro desplegable declaraciones.
CR!AC$71 %! .R&C!%$($!1&# %!1R& %!L (7%0L&
Los procedimientos se esc8ben en la ventana (odulo como si fuese un texto cualquiera pero
teniendo en cuenta la sintaxis y las reglas del cdigo de /isual 2asic para que pueda ser
ejecutado correctamente.
!n Access podemos crear dos tipos de procedimientos+ 9unction y #ub.
0n procedimiento 9unction es un procedimiento que devuelve un valor. 0na funcion se
declara con la instruccin 9unction y termina con la instruccin !nd 9unction. !ste
procedimiento acepta unos valores de entrada y devuelve otros como salida.
0n procedimiento #ub es un procedimiento que ejecuta una operacin. A diferencia de un
procedimiento 9unction) un procedimiento #ub no devuelve un valor) sino que realiza alguna
accin cuando se lo ejecuta. #e declara con la palabra clave #ub y termina con la instruccin
!nd #ub.
PASOS
FTClicZ en (en; $nsertar
<T!legir comando .rocedimientos
!ste cuadro permite indicar el nombre y tipo de procedimiento+ Subprocedimiento, uncion o
Propiedad. .ara el nombre podemos utilizar 4asta OG caracteres) incluyendo letras) n;meros y
subrayados) .ero debe empezar por una letra.
EL PROCEDIMIENTO SUB
Los procedimientos #ub de /2A permiten realizar algunas acciones u operaciones sin
devolver ningun valor.
Las acciones realizadas por este tipo de procedimento deben estar expresadas entre las
sentencias Sub y EndSub.
!#R0C0RA %! 01 .R&C!%$($!1& #02
Sub nombreprocedimiento [,lista de argumentos-\
[2loque de $nstrucciones\
ExitSub]
[2loque de lnstrucciones\
EndSub
En la estructura de estos procedimientos se debe especificar:
Las variables locales del procedimiento
#i el procedimieno es accesible a otros porcedimientos del modulo
La palabra reservada #ub al inicio del procedimiento
!l nombre del .rocedimiento
La lista de argumentos entre parentesis
!l bloque de $nstrucciones
La salida del procedimiento con la sentencia !xit #ub
&tro bloque de procedimientos
La palabra reservada !nd#ub
Ejemplo de procedimiento Sub
AC$nput2ox,?]Longitud^@- _#olicita la longitud del rectangulo
2C$nput2ox,?]Altura^@- _#olicita la altura del rectangulo
#ubArea A)2 _Llama a un #ub con los argumentos A y 2
!nd _fin del programa
#ub #ubArea ,Longitud) Altura- _%efine un #ub con dos argumentos
AreaCLongitud U Altura _Calcula el area del rectangulo
(sg2ox ?AreaC `Area _.resenta el resultado
!nd#ub _9in del procedimiento
Como Insertar el procedimiento Sub
FT(enu $nsertar.
<T.rocedimiento.
NT$ndicar nombre del procedimiento.
OT(arcar #ub.rocedimjento.
=TAceptar.
!l cuadro resultante es+
Function nombre funcion [,lista de argumentos-\[As tipo\
[2loque de instrucciones\
[Exit Function\
[2loque de $nstrucciones\
[nombrefuncionCexpresion\
End Function
1tese que As tipo indica el tipo de datos devueto por el procedimiento 9unction
Ejemplo de procedimiento Function:
!ste procedimiento define una funcion de nombre #iglo que tiene como agumento de entrada
una 9ec4a. %evuelve como resultado el siglo siempre que la entrada sea una expresion de
fec4a o en caso contrario una cadena vacia.
Function #iglo ,fec4a-
$f is %ate,fec4a- 4en
#igloCint,,:ear,fec4a-TF-WFGaJF
Else
#igloC1ull
!ndif
Endfunction
RESUMEN DE FUNCIONES DE VBA
Abs( )+ %evuelve el valor absoluto de un numero. #intaxis+ Abs,numero-
DateAdd( )+ devuelve un tipo de datos variant de fec4a al que se le 4a agregado un intervalo
de tiempo especicficado. #intaxis+ %ateAdd,$ntervalo) numero) fec4a-
Now:( )+ %evuelve una fec4a que corresponde a la fec4a y 4ora actual del sistema. #intaxis+
1oB[, -\
Year( )+ %evuelve un numero entero comprendido entre FGG y PPPP que representa el a5o de
un argumento de fec4a.
#intaxis+:ear,fec4a-
Atn( )+ %evuelve el arco tangente de un numero. #intaxis+ Atn,numero-
Array( )+ %evuelve un tipo de datos variant que contiene una matriz. #intaxis+ Array,Lista-
CBool( )+ Convierte una expresion a tipo de datos 2oolean. #intaxis+ C2ool,!xpresion-
CByte+ Convierte una expresion a tipo de datos 2yte. #intaxis+ C2yte,!xpresion-
CStr( )+ Convierte una expresion a tipo de datos #tring. #intaxis+ C#tr,!xpresion-.
CDbl( )+ Convierte cualquier expresion valida a un tipo de datos double ,coma flotante de
doble precision-. #intaxis+ C%bl,!xpresion-
CInt( )+ Convierte cualquier expresion valida a un tipo de datos entero ,integer- #intaxis+
C$nt,expresion-
CVar( )+ Convierte cualquier expresion valida a un tipo de datos /ariant ,variante-
#intaxis+ C/ar,expresion-.
CVDate( )+ Convierte una expresion /ariant a un un tipo de datos fec4a. #intaxis
C/%ate,expresion-.
CLng( )+ Convierte cualquier expresion valida a un tipo de datos Long ,entero largo-
#intaxis+ CLng,expresion-
CCur( )+ Convierte cualquier expresion valida a un tipo de datos Currency ,moneda-.
#intaxis+ CCur,expresion-
CSng( )+ Convierte cualquier expresion valida a un tipo de datos #ingle ,coma flotante de
simple precision-. #intaxis+ C#ng,expresion-
InputBox( )+ (uestra un mensaje en un cuadro de dialogo) espera que el usuario ingrese un
texto o pulse un boton) y devuelve un tipo string con el contenido del cuadro de texto.
#intaxis+ $nput2ox ,?mensaje@) [titulo\) [valor .redeterminado\)[Lposicion\)[:posicion\-
MsgBox( )+ .resenta un mensaje en un cuadro de dialogo) espera que el usuario pulse un
boton y devuelve un valor que indica el boton seleccionado por el usuario.
#intaxis+ (sg2ox ,mensaje) [botones\) [titulo\-
Cos( )+ %evuelve el coseno de un angulo medido en radianes. #intaxis+ Cos,angulo-
Sen( )+ %evuelve el seno de un angulo medido en radianes. #intaxis+ #en,angulo-
Tan( )+ %evuelve la tangente de un angulo medido en radianes. #intaxis+ an,angulo-
Day( )+ %evuelve un numero entero entre F y NF que indica el dia del mes para un argumento
de fec4a. #intaxis+ %ay,9ec4a-
Int( )+ %evuelve la pante entera de un numero. #intaxis + $nt,numero-
IsNull( )+ %evue$ve un valor booleano que indica si una expresion contiene el valor nulo.
#intaxis+ $s1ull,expresion-.
IsEmpty( )+ %evuelve un valor booleano que indica si una variable 4a sido iniciada o no
#intaxis $s!mpty,expresion-
LCase( )+ %evuelve una cadena en la que todas las letras estan en minusculas #8ntaxis+
LCase,variable-
UCase( )+ %evuelve una cadena en la que todas las letras estan en mayusculas #intaxis+
0Case ,variable-
VaI( )+ %evuelve el valor numerico de una cadena de caracteres) cuyos caracteres son
numeros. #intaxis+ /al,cadena-
Sqr( )+ %evuelve la raiz cuadrada de un numero. #intaxis+ #qr,numero-
Str( )+ Convierte un valor numerico a una cadena de caracteres. #intaxis+ #tr,valor-
QUE ES UNA MACRO?
!s una accin o conjunto de acciones definidas en la ventana (acro) que son realizadas por
access en forma automtica y son almacenadas como un objeto de la base de datos. Las
macros se pueden ejecutar desde la ventana de base de datos o mediante un suceso o evento
del formulario.
CR!AC$71 %! 01A (ACR&
.ara poner a prueba los procedimientos creados en el modulo necesitamos crear una macro
que ejecute la accin K!jecutarCodigoK.
.asos
FT!n la ventana base de datos) seleccionar la fic4a (acros
<TAacer clicZ en el botn nuevo para abrir la ventana macro
NT.ulsar el botn 9lec4a Abajo que aparece junto con el rotulo Accin
OT!n el panel inferior 4acer un clicZ junto a 1ombre de la 9uncion y especificar el nombre
del procedimiento. ,!l nombre finaliza con par*ntesis-
=T'rabar y ejecutar la (acro
Las acciones mas comunes que ejecuta una macro son+
Abrir Consulta T Abrir 9ormulario T Abrir ablas T Abrir $nforme T Abrir (odulo T Agregar
(enu T Aplicar 9iltro T !jecutar Aplicacin T !jecutar Codigo X !jecutar Comando.
!tc.
R!#!R/A %! /AR$A2L!#+ #!1!1C$A %$(
.ara declarar una variable expl8citamente antes de utilizarla) debemos escribir el nombre de
la misma a continuacin del %im. !sta accin 4ace que se reserve espacio en memoria para la
variable cuando se ejecute el programa y permitir al /isual 2asic saber que tipo de datos
debe almacenar en cada variable) para esto a continuacin del nombre de la variable debemos
indicar su tipo) vali*ndonos del As. Cuando se reserva en memona espacio para una variable)
/isual 2asic le dar valor inicial G.
".&# %! %A&# (A# 0#A%&#
Tipo de Dato Tamao Rango Ejemplo
!ntero < 2ytes TN<.bQc a N<bQb Dim var as integrer o
Dim vard
!ntero largo O 2ytes T<.FOb.ONc.QOc a
<.FOb.ONc.QOb
Dim var as long
#imple X 1umero real O 2ytes JTF)OG U FGO= a
JTN)OG U FGNc
Dim var as single
%oble X 1umero real c 2ytes JTO)PO U FGN<O a
JTF)bP U FGNGc
Dim var as double
(oneda c 2ytes TPP<<NNb<GNQc=Obb)=cGc a
PP<<NNb<GNQc=Obb)=cGb
Dim var as currency
o Dim var
Cadena 2yte por carcter G a Q=.=N= caracteres Dim var as string o
Dim vare
2ooleano < 2ytes rue o 9alse Dim var as boolean
9ec4a c 2ytes F de enero del FGG al NF de
diciembre de PPPP
Dim var as date
/ariante ,variante- FQ 2ytes con numeros
o << 2ytes J F 2yte
por carcter ,con
cadenas-
Rangos de todos los tipos
de datos
Dim var
Los datos $nteger y Long son simplemente enteros de FQ y N< bits respectivamente !stos
representan solamente n;meros que no tienen parte fraccional. Los enteros requieren solo FQ
bits de memoria) pero tienen el rango restringido con respecto a los largos.
0n #tring es una secuencia de caracteres) cada uno de los cuales esta representado mediante
el sistema de coditicacin A#C$$. 0na secuencia que no contiene ning;n carcter se
denomiria ?Cadena /ac8a@.
0n tipo de datos Currency esta dise5ado para representar valores monetarios. odo valor
monetario posee una precisin de cuatro decimales. .or ejemplo podemos representar el valor
FF)FQ<= pero no <F)GGGGN. !ste ultimo valor seria redondeado a <F)GGGG.
Los tipos de datos #ingle y %ouble permiten expresar n;meros en coma flotante ,n;meros
reales- y representan valores que tienen parte fraccional. !l nombre Kcoma flotanteK proviene
de la coma decimal K9lotanteK) que puede aparecer en cualquier lugar del numero. !sto
contrasta al tipo de dato monetario en el cual la coma es fija.
!l tipo de dato /ariant es una variable que puede contener cualquier tama5o o formato. La
variable de propsito general /ariant es extremadamente flexible.
Caracter ipo de dato especificado
d !ntero T $nteger
` Largo T $nteger Long
f #imple T #ingle
g %oble T %ouble
e (oneda T Currency
h Cadena T#tring
E1ERCICIO ESTRUCTURAS SELECTIVAS
FTLeer tres valores A) 2) C e imprimir la suma y el producto de los mismos
<TLeer un numero y luego calcular e imprimir+
!l valor absoluto del numero
!l cuadrado del numero
La raiz cuadrada del numero
La parte entera del numero
!l cubo del numero
$ndicar si es par o impar
NTLeer O valores) A) 2) C) % desde teclado y calcular e imprimir+
La suma de los valores leidos
!l producto de valores leidos
La suma de A y 2) sumado al producto de A y %
!l promedio de los valores leidos
!l cuadrado de cada valor
OTLeer tres valores A) 2) C e imprimir la suma de los mismos si A es mayor a 2.
=TLeer dos valores A y 2 e intercambiar los contenidos le8dos) utilizando un auxiliar
QTLeer tres valores A) 2) C e imprimir la suma de los mismos si A es mayor a 2) pero si A es
menor o igual a 2 imprimir el producto de los valores.
bTAacer un algoritmo que indique si un numero es positivo) negativo o neutro
cTAacer un algoritmo que indique si un numero es par o impar
PTAacer un algoritmo que calcule el mayor de tres n;meros. 0tilizar estructuras anidadas
FGTAacer un algoritmo que calcule el menor de tres n;meros. 0tilizar operadores lgicos
FFTLeer dos valores A y 2) e indicar si la suma de los mismos es o no m;ltiplo de N. $mprimir
la suma.
F<TCalcular el cuadrado de un numero) solo si el numero es positivo par.
FNTCalcular la raiz cuadrada de un numero solo si el numero es positivo. #i el numero es
negativo o neutro imprimir un mensaje de error.
FOTLeer dos valores A y 2 y efectuar utilizando estructura ainidada+
#i A es positivo y 2 es positivo) imprimir el cuadrado de la suma de ambos
#i A es positivo y 2 es negativo o neutro) imprimir el promedio.
#i A es negativo o neutro) imprimir el cubo de A.
F=TLeer las notas de los alumnos de Compus e indicar con un mensaje si aprob ,b= o mas- o
reprob. #i el alumno aprob) y su puntaje es FGG inidicar ?iie ganaste la remeralff@. #i el
alumno reprobo y el puntaje es de Q o mas indicar ?iienes otra oportunidadff@
FQTCodificar un programa que lea el nombre del alumno y el importe abonado por el curso. #i
el importe es menor a F=GGGG que iniprima el mensaje K%ebes ponerte al dia con tu cuotaK
FQ. 9lallar el mayor de trjs ijumeros le8dos.
46
Fb. Aallar el menor de tres numeros leidos.
Fc. Aacer un algoritmo que lea la calificacion que obtuvo un alumno en el curso de
access.
#i el alumno obtuvo desde & a QO imprimir K%ebes Repetir el
CursoK
j #i el alumno obtuvo desde Q= a bO imprimir Kienes oportunidad
para rendir un examen extraordinarioK
j #8 la ca8ificacion es mas de b= imprimir K9elicitaciones
aprobaje j$ cursoK
Ob
1
9
1~ruo~cci!n a a Pro~ramacin
j.6A<R,ji,k.j$&# .TT !#9j0C0RA# R!.!$$/A#
<. Calcular el sueldo bruj dj los F= empleados de una empresa) teniendo como datos) su
pago diario y la jntL.dad de dias trabajados.
N. Aallar la suma totj.k jbk F< n;mejos entjros cargados desde teclado. $ndicar si la
suma es un valor par o impar
O. #umar los .untajes de lodos los alumnos del curso de programacin. !l curso tiene <G
alumnos.
=. Aallar la suma de todoj los n;meros comprendidos entre FG y <G.
Q. Leer F= n;meros desdb ttecljdo y luego 4allar e imprimir+
L L]j suma de los n;meros
jH !l promedio de los n;nicios f] !l p,;ducto de los n;meros
b. Leer las calijcacionjs qjje obtuvo un alumno en cada materia e imprimir el
promedio de sus notas. #i la #uj8ja 'e sus notas supefa =GG entonces indicar que el alumno
se gjna una beca. Las m]jk.ias son en toLal FG.
c. Aallar la suma de los cuadrados de todos los n;meros comprendidos entre F y FGG
P. Cuantos n;meros pjjs c jjpares 4ay entre F y FGG^
FG. Cuantos m;ltiplos de N )jFay tjfltre FGG y F=G
FF. $mprimir la suma de to&oj loj n;meros pares comprendidos entre F y F=
48
F<. Leer varios n;meros positivos y luego imprimir
j La suma de todos los n;meros le8dos La ca)jdad de n;meros le8dos
t+H !l promedio de n;meros 6eidos
j La suma de valores pares La cantidad de valores impares
FN. !n una despensa se vendieron en la ultima semana F= art8culos distintos) teniendo
como datos la cantidad vendida de cada uno de los F=) imprimir el nombre del producto mas
vendido) y el nombre del producto menos vendido
FO. 0na empresa que tiene FG empleados desea saber el nombre y salario del empleado
que gjjna mjs y del que gjna menos.
F=. Leer desde teclado el nombre del alumno) v el importe abonado por el curso. ]Muien
abono mas^
j &bs+ #e tienen F= alumnos
FQ. Leer varios numeros y luego imprimir+
La suma de los pajs
j La suma de los impares
La suma de los valores comprendidos entre F= y Q=
j La cantidad de valores le8dos
49
!
Fb. Leer dos valores A y Fc e imprimir la suma de los valores comprendidos entre ambos.
A debe ser menor d Fc.
Fc. Leer dos valores A y Fc e imprimir descendentemente los nk;meros comprendidos
entre ambos. A debe ser menor a 2.
FP. Calcular el producLo entre dos valores A y 2 por medio oc sumas sucesivas. Los
valores son postfvoj.
<G. Calcular el fuctoral de un nujnero pojjtivo.
<F. Calcular el tactorijl aj un numero positivo no mayor a F<.
50
LVL ~
ARRA:# lj1$%$(!1#$&1AL!# & /!C&R!#
!s un conjunto de elementos agrupados bajo el mismo nombre e identificados por la pos8cion
que ocupa cada elemento dentro del conjunto j datos.
Al 4ablar de vectores se debe tener en cuenta+
'~ Nombre del vector: Nombre que se le asigna al vector y bajo el cuel se
agrupan todos sus elementos.
j Dimension del Vector: Cantidad de elmentos que tiene el vector
~ Posicion: 8ndica el lugar que ocupa un dato dentro del vector. .ara manejar
un vector se utiliza un contador para indicar la posicion de cada elemento.
j Elemento: !s el valor que esta almacenado en una posicion del vector) es
decir el contenido de la posicion.
Ejemplo
FF= F<= FFb FFQFFOm
FJF FFF
iLIILILu~ del V~"or
/ector, F -C F=
/ector ,<-C<=
/ector,N-CFb
/ector ,O-CFQ
/ector ,=-LTFO
=F
$'0AL%A% %! /!C&R!#
%os vectores se consideran iguales si tienen igual cantidad de elementos) y sus elementos
correspondientes son iguajes) esto es A(I)B(~I>, en donde 1 indica la posicion que ocupa
cada elemento dentro del vector.
Vector A Vector B
F= <= Fb F FO <= F= Fb 1 14
Estos vectores a pesar de tener igual dimension) no son iguales por que sus elementos
correspondientes no son iguales+ A,$-RH2,l-
Vector A Vector B
LLji\
FbF
L
O
6
lis 25 17 1 114
!stos vectores son iguales por que tienen iguai numero de elementos y sus elementos
cor[espondientes con iguales
52
r
ARRA:# 2$%$(!1#$&1AL!# & (AR$C!#
La matriz es una agrupacion de eiementos dispuestos en filas y columnas Las matrices son
conjuntos de vectores que utilizan dos valores indices para 4acer referencia a sus elementos
el primer valor indica la fila y el segundo valor indica la columna
(atriz,9ila F) Coll-C F<
(atriz,9ila FH Col<-C Fb
(atriz,9ila F ColN-C bb
(atriz,9iia F) CoiO-C G=
(atriz,9ila <) Coll-C FO
(atriz,9ila <) Co$<-C FO
(atriz,9ila <) ColN-TT b<
(atriz,9ila <) ColO-C GP
(atriz,9ila N) Co$l-TT Fc
(atriz,9ila N) Col<-C <F
(atriz,9ila N) ColN-C <Pc
(atriz,9ila N) ColO-C <N
(atriz,9ila O) Col8- O=
(atriz,9ila O) Col<-C O=
(atriz,9ila O) ColN-C F<c
(atriz,9ila O) ColO-C Gb
=N
F< Fb bb j
FO FO b< j
Fc <F <Pc j
O= O= F<c j
.L
lc)jlAL%A% %9 (AR$C!#
%os matrices son iguales jKi sus dimensiones son iguales) es decir) tienen igual cantidad de
filas e igual cantidad de columnas) y sus elementos correspondientes son iguales
!69(.$ ,-
(atriz A
F< Fb bb
FO FOj
Fc
TO=T
Las matrices del ejemplo (atriz A
F< Fb bb &#
FOjFO b< GP
Fc <F flPcj<j
O= O= F<c Gb
(atriz c
FF<t Fb bbjG=j
G=
GP $ffljLlj lmm
<N
jL
=
bF
O=j
$i
c
$j
Gb
6
no son iguales por que no tiene igual cantidad de 9ilas. (atriz 2
3k< Fb bb &#
FO FO b< GP
3Fc <F <Pc <N
O= O= F<c Gb
Las matrices A y c son gualjk] por que tienen igual numero de filas y columnas y sus
elementoscorrespondiontej son iguales.
54
r
intyoouccion a a #$ro~~amacion
(AR$C!# C0A%RA%A#
#on matrices que tienen igual cantidad de filas y columnas. !stas matrices tienen ciertas
caracteristicas entre las uqe jodemos mencionar+
Diagonal Princi~al: Si trazamos una linea diagonal partiendo desde el primer elemento de
la primera lila 4asta el ultimo elemento de la ultima fila la matriz queda dividida en dos
partes iguales. Los elementos que pertenecen a la diagonal principal tienen los indices o
indicadores de lilas y columnas iguales.
F< Fb bb &#
FO :O b< j
Fc <F <Pb <N
O= O= F<c Gb
k+j %iagonal #ecundaria+ #i trazamos una linea diagonal partiendo desde el ultimo elemento
de la primera lila 4asta el .rimer elemento de la ultima fila la matriz queda dividida en dos
partes iguales. .ara los elementos que pertenecen a la diagonal secundaria el indice de las
columnas disminuye a medida que aumenta el indice de las filas.
F< Y bb &#
FO j b< GP
j <F <Pc <N
O= O= F<c Gb
==
r
9
LLI rru~rm~n
~cos de Vectofes y Matnces
F. Cargar desde tocado un vector de F= elementos num*ricos. $mprimir el vector
cargado.
<.. Cargar en un vejtor loj ombrjs de los FG alunjjjoj djl cu8jo de .rogramacin
imprimir el vector cargddo indicando la posicin que ocupa cada alumno dentro del vector.
N. Leer un vector de b elementos y luego imprimir el promedio de todos sus elementos.
O. Leer un vector de FG elementos y luego imprimir el promedio de todos sus elementos
pjrej e impjrej.
=. Leer un vector de $0 eleinentos e iniprimir la ju8na) la cantidad y el promedio de
todos los elementos pares
Q. Leer un vector de FG elementos e imprimir la suma de valores ubicados en posicion
par.
7. Leer un vector dj F= ienijitoj e imprimir la suma y en posicion impar
8. Almjcenar en un kjector las notas de i&# FG alumiios .rogramacink y $Lje$jo
mpnniir la nota mayor y posiciones respectivas dentro del array.
9. Leer un vector de P cerneitos y calcular e imprimir el se encuentra en lujjr par o
impar.
el promedio de valores ubicados
56
que rindieron K$ntroduccin a la la nota menor) indicando sus
mayor de sus valores) indicar si
r
FF
FG. Leer dos v]ctores A y Fc) ambos oc = jicmcntos luojgo c8jar ji "ector C que
equivalga a la suma dj los vjjc8kjj A y 2.
!jemplo
L\llnjjjFObi LLffjjjdRHEi!i\
F
j
/ectorC
F lijjiijf M.i r.k$odLLcto *jcj$jr dj < vjCt&fj+j dj = ctjnijijtoj l;idoj dujdj
teclado) y anjzjnjij ji rjjuiiLjcio cn una vdrijuic dj nonibij k.ioductoK
!6+Cfl.jpj&
/ectoil
9.j6Lkio
bj
<9kj\
Vector2
j&-jrk,< U(J,
c
U
<
-F
ji L$LZ 6jj<jjj
#$
$$
!
F
a La i$r%~&~arna'1(~
F<. Leer dos jecLo8eb A jK j) amboj de = lemjntoj lu`3go crear el vector C que
equivalga j la jumj dcl mayor cT.jjmc.njo del vector A y el vector Fc) muljiplicado por
cada cjljfljijLo uu A
FN. j uii vjctujr A dj o j cij 6i jl vjctor iN quck cojrjjpondu a lj jurna dcl mayor y
mjnor kjljflijjt& de A) multiplicado por cada elemento de A.
FO. Cargar en uij vector d ljsj d jllos b cursos de operac4n del lCCj
F=. Lcjr uij vector je j< jcjmenFos y ordenarlo en forma ascendente utilizando una
vjk.iable juxiliur.
FQ Leer un jjcLc-i de F< eljmentoj y ordenarlo en gomia descendente utilizando una
variable auxiliar.
Fb. Cargjr un]. matriz de O filas y N colLkmnas) calcular e $mprimir+
jHk La suma de elementos de la matriz
L3 !l muyor elj]8ijnj y la pojiciij que ocupj dcTnt[j de 8d rnjlnz
j !l njcjrjor elemento y la posjcin que ocupj jentro de la matriz lbk. Cjrgjr Lina
maLrz d < tilas y N columnas) calcjii.ar e $mprirlir
k+j !l promedio de los elementos pares
i3 La sjiia de cementos ubjcj.j dos en cjlumna par
=c
Intro~~cci~n a a PYo~ramacin
r
FP. Cargar una matriz cuadrada de N filas) calcular e $mprimir+
j La suma de elementos que estan en la diagonal principal
oH La suma de elementos que estan en el triangulo inferior
j !l promedio de elementos que estan en el triangulo superior
<G. Cargar dos matrices A y 2 ambas de N filas y < columnas) crear la matriz C que
equivalga a la su[fla de A y 2. $mprimir las tres matrices.
<F. Leer una matriz cuadrada A de N filas Calcular e imprimir el mayor elemento de la
diagonal principal.
<<. Leer dos njatrices A y Fc de O filas y O columnas ) Crear la majriz C que equivalga a+
!l mayor elemento del triangulo superior de 2 J !l menor elemento del triangulo inferior de
Fc J cada elemento de la matriz A.
=P
1 ~ t ro~~cci~ a (a P~ot,)' ra ~nacin
9R!C09.1C$A : (&%A
eniendo en cuenta un conjunto de valores) se denomina 9recuencia a la cantidad de
repeticiones de cada valor y (oda al valor que tiene mayor 9recuencia
j9RClMlPj
eniendo en cuenta la siguiente tabla de ejemplo) indicar el nombre del curso que mas
alumnos tiene. $ndicar ademas la cantidad de alumnos por curso
Los cursos son.k Yord) YindoBs) !xcel
(atricula 10 1ombre del Alumno 1ombre del Curso
FFG 6ulioCabrera Yord
.FFF .atricia %uarte YindoBs
FF< 6uanCano Yord
FFN Lucia %uran !xcel
F FO ijocio 9retes !xcel
FF= Carmen 9ernndez Yord
60
1ntro~ccin a La )*o~+amac1on
eniendo en cuenta la siguiente tabla de ejemplo) indicar el numero de departamento que mas
empleados tiene,el departamento de moda-. Los departamentos van de FG a =G. #e desea
ademas+
j La suma de salarios por cada departamento
!l departamento cuyo salario total sea mayor
jo %epartamento 1ombre !mpleado #alario
FG AnaCano 3W=o.ooo
jT Carmen .aez <=G.GGG
FG 1orma 9retes <GG.GGG
FG Luis Conea c=G.GGG
j Sj:n 9ernandez N=G.GGG
<G Carmen 9ernndez <<=.GGG
O
F
61
Tcnicas de Diaciramadn
ESTRUCTURAS SECUENCIALES
L!C0RAj.R&C!#&jALl%A
l~k~di C~dm di i~-1 ~-
!6!RC$C$&1
<
F j
Aacer un algoritmo para 4allar la suma de dos n;meros.
#CAJ2
!6!RC$C$& 1j< j
Aacer un algoritmo para 4allar el promedio de tres n;meros.
.R&(!%$& C ,A J 2 J C-kN
E1ERCICIO N
2
3 '
Aacer un algoritmo para 4allar el rea de un cuadrado.
AR!A C LA%& U LA%&
E1ERCICIO N~4
Aacer un algoritmo para 4allar el per8metro de un rectngulo.
.!R8(!R& C ,2A#! J AL0RA- <
E1ERCICIO N~5i
Calcular el sueldo bruto de un empleado teniendo como datos do entrada el nombre del
mismo) las 4oras trabajadas y el pago por 4ora.
#0!L%& 2R0& C A&RA# RA2jA%A# .A'& .&R A&RA
04K
b
izar las siguientes variables+
1&( para el nombre del empleado A para las 4oras trabajadas .' para elpago por 4ora
#2 para el sueldo bruto
N'6
~arnbiar el valor de dos variables utilizando una variable auxiliar.
39
ImdtWD di Ck~
di O~ di
Tcnicas de ~arnen
Tcnicas di D~aaramad6n
ESTRUCTURAS SELECTIVAS
#imples
%obles
(;ltiples
!6!RC$C$&1
P
b
Aacer un aigontmo que lea dos variables num*ricas A y 2 e imprima la suma de las variables
si A es mayor que <GG !6!RC$C$&1
P
c
Analizar si el contenido de la variable / es par o impar.
l1,/F<-C/f<
!6!RC$C$&1
<
P
Aacer un algoritmo que lea la variable num*rica 1R& e imprima un mensaje indicando si su
contenido es negativo) positivo o neutro.
E1ERCICIO N~ 10
Aacer un algoritmo que lea dos variables num*ricas) 2 y &) e imprima el cubo de 2 si 2 es
positivo. .ero si 2 es negativo o neutro) entonces el diagrama debe imprimir el cubo de &.
!6!RC$C$&1kFFk
Aacer un algoritrno que lea tres variables num*ricas)A)2)C y que luego realice lo siguiente+
Fro.- #i AJC es mayor a 1000, entonces imprimir la suma de las tres variables
(A+B+C>.
2do.> SI A+C es igual al 000, entonces Imprimir el ~ucto de las tres vari~es (AB~C>.
3ro.>U A+C es menor a 1000, entonces Imprimir el cubo de la suma de las tres variables
~+B+C>A3.
E1ERCICION'12
Leer dos variables num*ricas) A y 2 y 4acer+
Fro.- #i el contenido de A es posrtivo y el contenido de 2 tambi*n es positivo) 4allar e
imprir el cuadrado de AJ2
<do.- #i el contenido de A es positivo y el contenido de 2es negativo o neutro) 4allar e
imprin el cubo de %
Nro- #i el contenido de A es negativo o neutro) 4allar e imprimir el cubo de AJc.
!6!RClCl&1jFN
Leer tres variables y venfjar si pueden ser) ono ser) los lados de un tringulo. .ara ello se de+
tener en cuenta que cada lado de un tringulo debe ser menor a la suma de los otros dc lados
#i son los lados de un tringulo) imprimir el mensaje #&1 L&# LA%&# %! 01
R$A1'0L& en caso contrario impnmir K1& #&1 L&# LA%&# %! 01 R$A1'0L&K.
!6!RClCl&jFO
Leer 4 variables: A,B,C, y D. Efectuar lo siguiente+
1ro.) Si <A+8) es positivo y ,CJ%- es positivo) imprimir las O variables.
j.- #i RAJ2- es posiuvo y ,CJ%-es negativo o neutro) 4allar e imprimir el producto de las
variables.
Nro.H #i ,AJ2- es negativo o neutro y RCJ%- es positivo) 4allar e imprimir la suma de
las variables.
j - #i RAJ2- es negativo o neutro y ,CJ%H es negativo o neutro) 4allar e imprimir la
suma d! cubo de ,AJ2- ms el cuadrado de ,CJ%-.
".10Ni15
kmr e imprimir el menor de tres n;meros.
1.Fc
un algoritmo que lea un n;mero e $mprima ese n;mero y su valor abjuto.
OF
____~
Tcnicai de O:aaramaa6n
T Tcn~cas de Diaaramaan
cnjljj
V$~, I'imr;~
!#R0C0RA# R!.!$$/A#
U AC0(0LA%&R!# : C&1A%&R!#
!#R0C0RA ($!1RA#
!#R0C0RA R!.!$R
C&1%$C $&1 %! 9$1 .&R /AL&R C!1$1!LA
!6!RC$C$& j Fb
Aallar la superficie de L cantidad de cuadrados. 9inalizar cuando el LA%& le8do sea igual a
TPPPP. AR!A C LA%&jLA%&
!6!RClCl&jFc
Calcular los per8metros de L cantidad de rectngulos. 9inalizar cuando la AL0RA sea igual
a TPPPP. .!R8(!R& C ,2A#!JAL0RAHj<
!6!RC$C$&1kig
Calcular el sueldo bruto de cada uno de los empleados de una fbrica) teniendo como datos
de entrada el nombre) las 4oras trabajadas y el pago por 4orj
#0!L%& 2R0& C A&RA# RA2(A%A# .A'& .&R A&RA
\ E1ER~ClClON~21
Leer n;meros 4asta que el n;mero le8do sea igual aTPPPP. Ai finalizar imprimir8a suma de
todos los n;meros le8dos.
p !6!RC$C$& 1j <<
Leer n;meros 4asta que el n;mero le8do sea igual a TF. #umar todos los n;meros pares y al
finalizar imprimir el resultado.
!6!RClCl&1j<N
Leer n;meros 4asta que el n;mero le8do sea igual a & ,cero-. #umar los pares por un lado y
los impares por el otro. Al finalizar impnmir las dos sumas.
Leer n;meros 4asta que el n;mero le8do sea igual a TF. #umar todos los n;meros que sean
mayores a NG y menores a FGG. Al finalizar imprimir la suma.
iHtilizar las siguientes variables+
9inalizar Cuando A C TF
1&( para nombre del empleado
A para 4oras trabajadas
.' para pago por 4ora
#2 para sueldo bruto
!6!RC$C$& 1j <=
Leer FG n;meros y 4allar la suma y el promedio de los mismos.
E1ERCICIO N
2


26
Leer F= n;meros. #umar todos los n;meros mayores a l&y 4allar el pmmedio de los mismos.
!6!RC$C$&1a<G
Aacer un listado del nombre y la edad de cada estudiante de sexo masculino de un colegio
9uializ` cuando la edad le8da sea igual a & Rcero-. utuzar las siguientes variables+
E1~RClClON'27
Leer =GG n;meros y sumar todos los pares. Al finalizar) imprimir la suma) el promedio y la
CYitZ#ad de n;meros pares que se sumaron.
paraelnombre
ED ~~laedad,quepue:eirde 1a99
#L kja el sexo. que puede ser: Fck es varn 43
^ckjmujer
Znij de &iagrarnacin $-l.i=~
I~l~ di
T
T kql
Tkntcas di D~rwnaan
W !6!RC$C$& 1k<c
.or razones de estad8sticas) el directorio de una empresa sol ici t la confeccin de un
programa que indique+
Fro.- Cuntos de sus empleados ganan 4asta =GG.GGG 's.
<do.- Cuntos ganan entre 's.=GG.GGG y 's.b=G.GGG
Nro.- Cuntos ganan entre '#.b=G.GGG y 's.PGG.GGG
Oto.H Cuntos ganan ms de 's. PGG.GGG
.ara realizar este proceso leer los sueldos de los empleados 4asta que el sueldo sea igual a
cero.
!6!RC$C$& 1g <P
Leer las notas de los alumnos de un curso de matemticas. .ara finalizar introducir una nota
negativj #e desea saber+
a- Cuntos alumnos obtuvieron ms de PG puntos.
b- Cuntos obtuvieron entre eo y PG inclusive.
C) Cuntos se aplazaron ,menos que QG-.
dH Cuntos salvaron.
eH Cuntos alumnos rindieron la materia.
E1ERCICIONg3O
Leer FGG n;meros y calcular e imprimir+
Fro. La suma de todos los n;meros.
<do. La suma del cuadrado de todos los n;meros.
Nro. La suma del cubo de todos los n;meros.
Oj !l promedio de la suma.
E,IERCECIONI31
e mismo enunC$ado del !jercicio NG) pero sin saber la cantidad de n;meros a leer) slo se
conoce que jdos los n;meros a leer son no negativos.
L$!2j$j$jjuz
--todos 101 jeros pares comprendidos erWre el 1 y el FGG inclusive.
E1ERCICIONg33 q
$mprimir todos los m;ltiplos de N comprendidos entre el F= inclusive y el O=G inclusive.
j6!RClC$&jNO
Leer dos n;meros) A y c ,suponer que A siempre es menor que 2H. $mprimir todos los
n;meros comprendidos entre A y 2.
!6!RC$C$&1gN=
Leer dos n;meros) Ay c. /erificar que c sea mayor que A e imprimirdescendentemente todos
los n;meros comprendidos entre c y A.
!6!RC$C$&1
<
NQ
Leer las variables A y c enteras y positivas. !fectuar la multiplicacin de Aj2 por sumas
sucesivas. $mprimir el resultado.
E1ERCICION
2
37
Leer las variables A y e. !fectuar la divisin de A,2 por restas sucesivas. $mprimir el
resultado.
Leer 1 n;meros. #umar todos los enteros por un lado y los decimales por el otro. Al finalizj
imprimir las dos sumas y sus respectivos promedios.
E1ERCICIO N'39 \/
Leer 1 n;meros y sumar todos los valores positivos por un lado y los negativos por el otro. A
finalizar imprimir las dos sumas y la cantidad de n;meros positivos y de n;meros negat$voj
que se sumaron.
4
e.
jdi
T
T kql$Ci3j
Tdw~i~q da fli~nrarna~~
I~tt~.di Oi~ai
Tcrcas de Diagramadn -~ ~
E1ERCICIONg4&
k!#R0C0RA %!#%!
Leer 1 n;meros y sumar todos los valores positivos por un lado y los negativos por el otro.
%entro de los positivos) sumar tambi*n los pares por un lado y los impares por el otro.
A' finalizar imprimir+
F. LasOsumas.
<. !l promedio de cada sumj
N. La cantidad de n;meros positivos que se sumaron.
O. La cantidad de n;meros negativos que se sumaron.
=. La cantidad de n;meros pares que vinieron.
Q. La cantidad de n;meros impares que vinieron.
!6!RC$C$& Ng 41
Aallar e imprimir el menor de 1 n;meros.
Leer FG n;meros y 4allar e imprimir el promedio de los pares) por un lado) y el de los
imparej por el otro.
E1ERCICIO Ng45
Leer 1 n;meros y 4allar e imprimir a suma) la cantidad y el promedio de todos los n;meroR
que son mayores que & y menores que FGGG.
Calcular el menor de una lista de 1 n;meros. $mprimir dic4o valor.
E1ERCICIO Ng 42 E1ERCICIONg47
Aallar e imprimir el mayor de 1 n;meros.
E1ERCICIO Ng 43
Aallar el menor y el mayor de 1 n;meros. $mprimir arbbos n;meros. #e desea encontrar
tambi*n el rango) sabiendo que RA1'&C(A:&RT(!1&R.
Calcular e imprimir el mayor de una lista de = n;meros.
E1ERCICIO Ng 48
$mprimir todos los n;meros pares que 4ay entre el =G inclusive y el FGG inclusive.
Calcular la suma de los cuadrados de los FGG primeros n;meros enteros positivos.
E1ERCICION'50
$mprimir los primeros FGG m;ltiplos del N. desde el N inclusive.
i~~mir nmeros sucesivos de de 2 en 2 a partir del 1 inclusive. Se desean 1 oc>
impresiones
4
~IERCICION.51
~di ~ di E- ~
fle
T6cm~s de Oiaoramaan r~i=n:~
9njRA:# UNIDIMENSIONALES-VECTORES i
Introducir N veces 2 valores A y B y verificar:
que A sea divisible por N.
que 2 sea par.
!n el caso de que se cumplan arnbas condiciones efectuar Aj2 e imprimir el resultado) y si
no se cumplen imprimir A)2 y un mensaje que lo indique.
Li!RMiMiljfj=+a1
#e tienen =GG empleados en una fbrica y se desea 4acer la liquidacin rnensual de los
sueldos. .ara ello se debe realizar un descuento fijo del cd para jubilaciones para todos js
empleados. .ero adems existe otro descuento adicional que sigue la siguiente tanfa+
L'ERCICION'58
Leer un vector de NG componentes. #umar sus componentes e imprimir la suma y el
promedio.
<V
!6!RC$C$&1#P
Leer un vector de dimensin r y luego 4allar e imprimir el promedio de los componentes del
vector que no sean cero.
E1ERCICIONg6O
1

Leer un vectorde 1 componentes. Aallar e imprimir el promedio de todos sus valores
impares.
#i+ #ueldo
<=G.GGG R#ueldo #ueldo
C <=G.GGG sin descuento adicional C =GG.GGG tiene =d de descuento adicional
j =GG.GGG tiene Q)=d de descuento adicional
E1ERCICIONg61
Leer un /ector de NG elementos y efectuar e imprimir las siguientes sumas+
.ara esto se cuenta con las fic4as de los empleados desde donde se leer el nombre y el
jue$do bsico. #e desea imprimir para cada empleado+
1&(2R!T #0!L%& 2A#lCj %!#C0!1& &ALT #0!L%& A C&2RAR
E1ERCICIONgS4
eer un n;mero positivo A y calcular e imprimir el factorial de A) sabiendo que el factorial de
jC Al C Ak,ATF -jRAT<-k....jNj<jF.
!6!RC$p&1k== ON3
jlar el taclonal de 1 n;meros.
:~ERc'ppNp56
.eer dos ~mn~ A y B, enteros y positivos. Efectuar A'B medianle sumas sucesivas.
F. Los valores enteros
<. Los valores decimales
N. %entro de los enteros) sumar+ a- los positivos y
bH los negativos
E1ERCICIONQ62
Leer un vector de 1 componentes y 4allar el promedio de los valores que estn en los lugares
pares y en los lugares impares) por separado.
E1ERCICION'63
Almacenar en un vector lo siguiente+
i
el valor F en la posicin F
el valor < en la posicin <
el valor N en la posicin N
el valor 1 en la posicin 1
Por qemplo, si N5, entonces,
A
LLLjds
.aicumr~ e suma, el ~ucto y el promedio de los nrniros -~~-1~ rwr.
~ M<N,
(1> (2> (3) (4) (5)
OP
di Oi'~di
T Tcnicas de Oiaa!amaa6n
i~m~
K~k~di "~mimdi
~lCIONQ71
T~icas de Daoramadn
Leer un vector A de 1 componentes y crear los vectores 2 y C cada uno de dimensin 1)
donde+
Aallar el mximo elemento de un vector yel lugar que ocupa dentro del mismo. #i 4ay varios
mximos entonces imprimir el primero que aparece. La dimensin del vector es 1.
E1ERCICIONg65
Leer un vector de 1 componentes y crear N variables R)# y ) que indiquen+
R+ Cuntos componentes del vector son menores o iguales que =.
=+ Cuntos componentes son mayores que = y menores que F<.
+ Cuntos componentes son mayores o iguales que F<.
Aallar tambi*n el promedio para cada uno de los tres tipos de datos se5alados.
E1ERCICIO Ng 66
Aallar el mximo y el m8nimo elemento de un vector de 1 componentes. $mprimir tambi*n
los lugares que ocupan dentro del vector.
Cada 2,l- C A,lH T (81$(& !L!(!1& %!L /!C&R A Cada C,$- C (AL$(&
!L!(!1& %!L /!C&R A T A,$-
E1ERCICIONg72
Leer un vector de dimensin 1 y desp$azajo c8clicamente en una posicin 4acia la derec4j
.or ejemplo) suponiendo que el vector le8do sea+
/C%\$$\cb=P
0na vez) desplazado c8clicamente en una posicin 4acia la derec4a) debe quedar de la
siguiente lorma+
vCL!jLii\
E1ERCICIO~73
Leer dos vectores A y 2 ambos de longitud 1) y luego calcular e imprimir el vector C que sea
la suma de AJ2.
Leer un vector L de 1 componentes y crear el vector C con los elementos pares de L. .or
ejemplo+
#i L C P c b N O F< F
entonces el vector resultante ser+
E1ERCICIONg68
C[iLjL!
Analizar si dos vectores le8dos A y 2 de dfjjensiones ( y 1 respectivamente son iguales.
$mprimir un mensaje indicando si son o no iguales.
!6!RC$C$& 1g bOT &R%!1A($!1& A#C!1%!1! %! 01 /!C&R RF-
!6!RC$C$$&1kQP
Leer un vec~or / de 1 componentes y un valor r. Aallar el vector A que debe ser el
producto del veclor / por el valor r. $mprimir al final el vector Z
Leer un vector de 1 componentj $mprimirlo y luego ordenarlo ascendentemente con un
contador automtico. $mprimir el vector ordenado.
LERcICION'75- &R%!1A($!1& A#C!1%!1! %! 01 /!C&R,<-
de dos vectores ledos AyB de dimensiones P yO resl~tivarnente.
Un vector de N componentes y ordenarlo en forma creciente con dos contadores
~mticos anidados. Imprimir el vector antes y d~u~s de ordenarlo. e
51
Inl~ di di
T
Tcnt~ de Diagrwriaan
ARCHIVOS - CORTE DE CONTROL
Kmlttwndi Omn di
&%.Tadj.
IERCICIONg79
Tc~~ de Oi~ramad6n
un colegio tiene un arc4ivo con el siguiente formato+
MATRCULA NOMBRE ASIGNATURA NOTA
T v
0na empresa tiene grabado en disco todas las ventas realizadas por cada uno de sus
vendedores Cada registro es una venta y un vendedor puede tener varias ventas. !l formato
del registro es
Cada estudiante tiene un registro por asignatura rendida. !l arc4ivo est ordenado por
n;mero de matrrcula. $mprimir por cada estudiante la matr8cula) el nombre y el promedio de
sus notas.
NRO. DEL VENDEDOR IMPORTE DE LA VENTA
E1ERCICIONg80
!l arc4ivo est ordenado por n;mero de vendedor. Aacer un programa que imp5ma el
importe total que vendi cada vendedor y la cantidad de ventas que realiz cada vendedor
para llegar a ese importe total.
!6!RC$C$&1gbb
#e tiene en tarjetas perforadas,ordenadas por mesH los datos de las ventas de una casa
comercal) correspondientes a un a5o de actividad. Cada tarjeta contiene el n;mero del mes y
el impjrte de venta.#e desea saber el total de ventas de cada mes y el total de ventas del a5o.
E1ERCICIONg7~
La empresa jL:EK tiene grabado en disco un arc4ivo con todas las ventas realizadas por
cada uno de sus vendedores. Cada registro es una venta y un vendedor puede tener ms de
una ventj !l formato del registro es+ .j
!n una compa58a de seguros se 4a grabado un registro por cada uno de los siniestros de
automviles ocurridos durante el a5o pasado. Cada registro contiene el mes durante el cual sg
produjo el accidente) el n;mero de pliza del asegurado y el costo de reparacin. !l arc4ivo
est ordenado por n;mero de mes.
Aay que imp5mir una lista de los datos de cada registro y cuando cambia el mes se debe
imprimir el total de costos de reparacn y la cantidad de accidentes que se produjeron en el
mes.
Al final del proceso 4ay que imprimir el total anual de costos de reparacn) la cantidad anual
de siniestros y el promedio anual de costo por accidenje.
E1ERCICIO Ng 81
T Se desea obtener un listado de las comisiones correspondientes a cada uno los
vendedores de una casa comercial. .ara esto se dispone de un arc4ivo en disco donde cada
registro contiene la siguiente informacin+
$ NRO.VENDEDOR ! NOMBRE IMPORTE DE I-A VENTA
!l arc4ivo est ordenado por n;mero de vendedor.
Aacer un programa que imprima por cada vendedor+
1. El total vendido
2. La cantidad de ventas
3. El promedio de ventas
Al final, ~ el total vendido entre todos loe vendedores y el ~med'io 9neral de vwI;-
NRO.VENDEDOR NOMBRE IMPORTE DE LA VENTA
La comisin se debe calcular por cada venta individual siguiendo la siguiente tabla de
condiciones:
cF /!1A RC=GGGG '` tiene =d de comisin
81 VENTA> 50000 Gs. tiene 8 de comisin
~Lh~tros estn ordenados ascendentemente por NRO. DE VENDEDOR.Se desea
iwp.r: a
rmsin total correspondiente a cada vendedor.
53
E-I~~ Ou~m de
i~1 ~';'~z Tcnicas de Dagramadn
La cantidad total 'G ventas correspondientes a cada vendedor. !l impone total de las ventas
de cada vendedor.
de
>Cmkjmmdj.
*cmcas de &iagearnaan ijiijr3j
ARRA:# 2$%$(!1#$&1AL!# T (AR$C!#
Ak final calcular el total final de todas las comisiones.
!6!RC$C$& Ng 82
#e tiene en fic4as las operaciones $1'R!#&# y !LRACC$&1!# realizadas por los
clientes de jna sucursa) bancaria. !l formato de las fic4as es+
NRO. DE CUENTE IMPORTE OPERACION
$ FjTlng. <jT!gr.
Tq
!l importe es siempre positivo j la operacin a realizar un ingreso o bien un egreso. #e desea
obtener por impresora y para cada cliente+ !l n;mero del mismo yj$ saido de sus
operaciones.
OBS:
Las fic4as estn ordenadas por 1R&. %! CL$!1! en orden ascendente.
E1ERCICIONg83
0n distribuidor de libros factura a sus clientes mensualmente y les cobra por cada ejemplar
retirado siguiendo la siguiente tarifa+
/ E1ERC CIO~84
Leer una matriz ( de orden .kM. Aallar e imprimir el promedio de todos sus elementos.
E1ERCICION
2
85
Leer una matriz de orden .j& y 4allar e imprimir la suma y el promedio de todos los
elementos pares) por un lado y de los impares por el otro.
E1ERCICION
2
86
Leer una matriz de orden (j1 y 4allar la suma y el promedio de todos los componentes
ubicados en las filas pares.
E1ERCICIO Ng 87
Leer una matriz de orden FG.FG e imprimir todos los elementos mayores a =G y menores a
<GGG. Ak finalizar imprimir la suma y el promedio de los elementos que se imprimieron.
E1ERCICIO Ng 88
Leer una matriz cuadrada de orden 1 y llenar de ceros los elementos que estn por
encima de la diagonal principal. $mprimir a matriz antes y despu*s del cambio.
CANTIDAD DE E1EMPLARES
TARIFA <Dor liemplan
(enos de FG =GGG 's.
%esde loy4astaOg O=GG 's.
=G o ms
4000 Gs.
Se ha cr/~ un arc4ivo de datos en una cinj siendo el formato del registro+
NRO. CUENTE NOM6RE DIRECCION FECHA CANTIDAD DE E1EMPLARES
Los Ti-ros eaWn ordenados por NRO DE CLIENTE
~
Iww~ ~ji total de Enos Com~ucIos mr' el mes.
e impone de la factura, el rvo., el nombre y la direoci6n del chnte para
PI
Leer una matriz cuadrada de orden 1 y 4allar e imprimir+
La suma de los elementos que estn en la diagonal principal.
U La suma de los elementos que estn por encima de la diagonal principal.
U La suma de los elementos que estn por debao de la diagonal principal.
Leer dos matrices Ay B de igual dimensin M~N ycreare imprimir la matriz C que es el
resultado deA+B.
kdos matrices Ay 2. La matriz A tiene orden (j1 y 2 tiene orden .M. $mfrimir un mensale
si son o no iguales.
==
N'91
* C~md'
T !~md~~
Tcnicas ~e Dt~amaor
E1ERCICIONgI2
Leer un arc4ivo con los datos de ciertas personas. Cada registro del arc4ivo tiene la siguiente
informacin.
$%!1 #!L& !.C$/$L !%A% 1&(2R!
F.T (asc. F.Casado
<. 9em. <.#oftero
N.&tros
#e desea el siguiente cuadro de frecuencias+
#!L&
!.C$/$L A&(2R!# (06!R!# &AL
CA#A%&
#&L!R&
&R&#
&AL
E1ERCICIONg93
#e tiene un arc4ivo donde en cada registro 4ay ia siguiente iriformacin+
$%!1. #!L& #0!L%&
Codiicadc en
FT9*m. miles de guaran8es
#e desea construir el siguiente cuadro de irecuercias+
Le agradeceremos cualquier informacin) cr8tica o sugerencia que pueda servirnos para
mejorar este libro.
T....
F
SHX 012032 ~<80 ~80 TOTAL
VARON
MWER
TOTAL
=Q
Puede hacer llegar su opinin a nuestras oficinas, a traves del coneo sin costo de
franqueo.
-I
Q
T Cjdk.
vjimr3j Tcnicas de D~~arnaon
E1ERCICION'e2
Leer un arc4ivo con los datos de ciertas personas. Cada registro del arc4ivo tiene la siguiente
informacin.
$%!1 #!L& !.C6/$L !%A% 1&(2R!
F.T (asc. F Casado
<.T 9em. <.#ottero
N.&tros
#e desea el siguiente cuadro de frecuencias+
#!L&
Le agradeceremos cualquier informacin, crtica o sugerencia que pueda servirnos para
mejorar este libro.
!.C$/$L A&(2R!# (06!Rj# &AL
CA#A%&
#&L!R&
&R&#
&AL
.T
E1ERCICION'93
Se tiene un archivo donde en cada registro 4ay la siguiente informacin+
IDENT. SEXO SUELDO
G-Masc. Codificado en
1-F.m. miles de guaranfes
#e desea construir el siguiente cuadro de frecuencias+
F
<20 <40 <80 ~80 TOTAL
VARON
MWER
TOTAL
=Q
Puede hacer llegar su opinin a nuestras oficinas, a travs del correo1 sin costo de
franqueo.
1

Vous aimerez peut-être aussi