Você está na página 1de 61

Instituto Tecnológico Superior De

Materia:
Algoritmo y lenguaje de
Programación
Ingeniería Industrial

La Región Sierra
Trabajo:
Investigación
Catedrático:
Mtra. Alejandra Guadalupe
Presenta:
María Alejandra Delesma Ávila
Semestre/ grupo:
5t0 “A”

Teapa Tabasco A noviembre De 2013


Algoritmo Y Lenguajes De Programación
Índice

TEMA PAG.
Introducción………………….……………………………………………………………………. 03
Unidad 3. Introducción A La Programación De Un Lenguaje Estructurado
3.1 Introducción a la programación. ………………….……………………............................................. 04
3.2 Estructura básica de un programa. ………………….…………………............................................. 04
3.3 Tipos de datos. ………………….……………………………………............................................. 07
3.4 Identificadores. ………………….…………………………………………………………….. 12
3.5 Almacenamiento, direccionamiento y representación en memoria. …………............................................. 14
3.6 Proposición de asignación. ………………….…………………………………………………... 16
3.7 Operadores, operandos y expresiones. ………………….…………………………………………. 18
3.8 Prioridad de operadores, evaluación de expresiones. ………………….……………………………. 20
3.9 Elaboración de programas………………….……………………………………………………. 22
Unidad 4 .Estructuras Selectivas y de Repetición.
4.1 Selectiva simple. ………………….……………………………………………………………. 24
4.2 Selectiva doble. ………………….……………………………………………………………... 25
4.3 Selectiva anidada. ………………….…………………………………………………………... 26
4.4 Selectiva múltiple. ………………….…………………………………………………………... 27
4.5 Repetir mientras. ………………….………………………………….............................................. 30
4.6 Repetir hasta. ………………….………………………………………………………………. 32
4.7 Repetir desde. ………………….………………………………………………………………. 33
4.8 Elaboración de programas. ………………….…………………………............................................ 34
Unidad 5 Arreglos y Archivos.
5.1 Arreglo unidimensionales. ………………….………………………….............................................. 36
5.2 Arreglo bidimensionales... ………………….……………………………………………………. 39
5.3 Archivos. ………………….…………………………………………............................................ 43
5.4 Elaboración de programas………………….…………………………………………………… 45
Unidad 6 Funciones.
6.1 Introducción. ………………….……………………………………………………………….. 46
6.2 Funciones estándar. ………………….………………………………............................................. 47
6.3 Entrada y salida de datos. ………………….…………………………………………………... 49
6.4 Funciones definidas por el usuario. ………………….…………………............................................. 51
6.5 Pase por valor. ………………….……………………………………............................................ 52
6.6 Pase por referencia. ………………….…………………………………………………………. 55
6.7 Punteros. ………………….…………………………………………………………………... 55
6.8 Elaboración de programas. ………………….…………………………………………………... 56
Conclusión………………….……………………………………………………………………… 59
Fuentes de información………………….………………………………………………………….. 60

2
Algoritmo Y Lenguajes De Programación

Introducción

Visual Basic es uno de los tantos lenguajes de programación que podemos encontrar hoy
en día. Dicho lenguaje nace del BASIC (Beginner´s All-purpose Symbolic Instruction
Code) que fue creado en su versión original en el Dartmouth College, con el propósito de
servir a aquellas personas que estaban interesadas en iniciarse en algún lenguaje de
programación.

 <http://es.wikipedia.org/w/index.php?title=Programaci%C3%B3n_estructurada&oldid=3
0205148>.

 Colaboradores de Wikipedia. Vector (informática) [en línea]. Wikipedia, La enciclopedia


libre, 2009 [fecha de consulta: 2 de octubre del 2009]. Disponible en
<http://es.wikipedia.org/w/index.php?title=Vector_(inform%C3%A1tica)&oldid=302493
61>.

La solución de problemas mediante en uso de un computador nos lleva a desarrollar

programas o aplicaciones, la construcción de estos programas debe ser realizada mediante

una metodología, los pasos para la construcción de programas son:

1. Diseñar el algoritmo, consiste en analizar el problema y describir los instrucciones de

forma ordenada que resuelven el problema.

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

3. Ejecutar y validar el programa en un computador (verificación)

Para codificar de forma sistemática un algoritmo se necesita de un lenguaje

programación que la computadora comprenda.

Las estructuras de repetición, permiten la ejecución de una lista o secuencia de


instrucciones

(<bloque de instrucciones>) en varias ocasiones. El número de veces que el bloque de

instrucciones se ejecutará se puede especificar de manera explícita, o a través de una


3
Algoritmo Y Lenguajes De Programación
condición

lógica que indica cuándo se ejecuta de nuevo y cuándo no. A cada ejecución del bloque de

instrucciones se le conoce como una iteración.

4
Algoritmo Y Lenguajes De Programación

UNIDAD 3: Introducción A La Programación De Un Lenguaje Estructurado

3.1 Introducción a la programación.

Después que se ha diseñado y pensado como resolver el problema en papel, se debe


comenzar el proceso de introducir el programa en un archivo en el disco de la computadora.
La introducción y modificación del programa en un archivo se hace utilizando un simple editor
de texto o un editor especializado que hace la tarea de escribir un programa una tarea muy
fácil.

El programa que se introduzca en el editor estará escrito en java o C++ o cualquier otro, pero
ni C++ ni java son lenguajes máquina, muy al contrario, son lenguajes de alto nivel diseñado
para hacer más fácil, la programación que utilizando el lenguaje máquina. Los lenguajes,
como todo hay que a prendérselos, pero tienen una ventaja y es que hay varios puntos en
común.

 Identifica las características de los lenguajes de programación


 Evalúa cada uno de los tipos de programación.

3.2 Estructura básica de un programa.

Las partes principales de un programa están relacionadas con dos bloques: declaraciones e
instrucciones.
En las instrucciones podemos diferenciar tres partes fundamentales
 Entrada de Datos: La constituyen todas las instrucciones que toman los datos de
entrada desde un dispositivo externo y los almacena en la memoria principal para que
puedan ser procesados.
 Proceso o algoritmo: Está formado por las instrucciones que modifican los objetos a
partir de su estado inicial (datos de entrada) hasta el estado final (resultados) dejando
los objetos que lo contiene disponibles en la memoria principal.
 Salida de resultados: Conjunto de instrucciones que toman los datos finales
(resultado) de la memoria principal y los envían a los dispositivos externos.

El teorema de Böhm y Jacopini (1966) dice que un programa propio puede ser escrito
utilizando sólo tres tipos de estructuras de control:

5
Algoritmo Y Lenguajes De Programación
1. Estructura secuencial: Una estructura de programa es secuencial si las instrucciones
se ejecutan una tras otra, a modo de secuencia lineal, es decir que una instrucción no
se ejecuta hasta que finaliza la anterior, ni se bifurca el flujo del programa.
2. Estructura selectiva o de selección: La estructura selectiva permite que la ejecución
del programa se bifurque a una instrucción (o conjunto) u otra/s, según un criterio o
condición lógica establecida, sólo uno de los caminos en la bifurcación será el tomado
para ejecutarse.

o Estructura de control selectiva simple


o Estructura de control selectiva doble
o Estructura de control selectiva múltiple

3. Estructura de control cíclica o repetitiva

o Estructura de control desde


o Estructura de control mientras

Para estas estructuras son necesarios los operadores lógicos y de relación.

Operadores de relación
Mayor a >
Menor a <
Mayor o igual a >=
Menor o igual a <=
Diferente a ~=
Operadores lógicos
Y (and) &
O (or) |
No (not) ~
Exclusivo o (or) Xor

Con el uso de los operadores de relación se construyen las condiciones simples y con el uso
de los operadores de relación y lógico se construyen las condiciones compuestas.
Anadamiento: el cuerpo se cualquier estructura puede ser instrucciones simples u otras
estructuras, que a su vez pueden contener a otras.

Estructura básica de un programa en C

La mejor forma de aprender un lenguaje es programando con él. El programa más sencillo
que se puede escribir en C es el siguiente:
Main ( ) {}
6
Algoritmo Y Lenguajes De Programación
Como nos podemos imaginar, este programa no hace nada, pero contiene la parte más
importante de cualquier programa C y además, es el más pequeño que se puede escribir y
que se compile correctamente. En él se define la función main, que es la que ejecuta el
sistema operativo al llamar a un programa C. El nombre de una función C siempre va
seguida de paréntesis, tanto si tiene argumentos como si no. La definición de la función está
formada por un bloque de sentencias, que está encerrado entre llaves {}.
Un programa algo más complicado es el siguiente:
#include <stdio.h>
Main ( )
{
Printf ("Hola amigos!\n");
}
Con el visualizamos el mensaje Hola amigos! en el terminal. En la primera línea indica que se
tengan en cuenta las funciones y tipos definidos en la librería stdio (standard input/output).
Estas definiciones se encuentran en el fichero header stdio.h. Ahora, en la función main se
incluye una única sentencia que llama a la función printf. Esta toma como argumento una
cadena de caracteres, que se imprimen van encerradas entre dobles comillas " ". El símbolo
\n indica un cambio de línea.
Hay un grupo de símbolos, que son tratados como caracteres individuales, que especifican
algunos caracteres especiales del código ASCII. Los más importantes son:
\a Alerta \r Retorno de carro

\b Espacio atrás \t Tabulación horizontal


\f Salto de página \v Tabulación vertical
\n Salto de línea \\ Barra invertida
\' Comilla simple \OOO Visualiza un carácter cuyo código ASCII es OOO en
octal
\" Comillas dobles \xHHH Visualiza un carácter cuyo código ASCII es HHH en
hexadecimal

Un programa C puede estar formado por diferentes módulos o fuentes. Es conveniente


mantener las fuentes de un tamaño no muy grande, para que la compilación sea rápida.
También, al dividirse un programa en partes, puede facilitar la legibilidad del programa y su
estructuración. Los diferentes fuentes son compilados de forma separada, únicamente los
fuentes que han sido modificados desde la última compilación, y después combinados con
las librerías necesarias para formar el programa en su versión ejecutable.
7
Algoritmo Y Lenguajes De Programación

3.3 Tipos de datos.

Existen dos tipos de datos Simples (sin estructura) y los compuestos


(estructurados).Los tipos de datos Simples son los siguientes:

a) Numéricos: Permite representar valores escalares de forma numérica, esto


incluye a los números enteros y los reales. Estos tipos de datos permiten hacer
operaciones matemáticas comunes. Para usarlos se escribe de manera normal
como los usamos cotidianamente. por ejem. 412, 14.3, -17,9

 entero: Son números completos no tienen componentes fraccionarios o


decimales y pueden ser positivos o negativos. se denominan en ocasiones de
punto o coma fijo.

 real: Son números que siempre tienen un punto decimal y pueden ser positivos
o negativos, se denominan en ocasiones de punto o coma flotante.

b) Alfanuméricos: Permite representar valores identificables de forma descriptiva,


esto incluye nombres de personas, direcciones, características, etc. Es decir,
permite identificar mediante nombres algunos atributos de una entidad. Es
posible representar números como alfanuméricos, es decir no es posible hacer
operaciones con ellos. Este tipo de datos se representa encerrados entre
comillas, para diferenciarlos de las variables ( que veremos mas adelante ) y los
valores numéricos.

Los caracteres que la mayoría de las computadoras reconocen son los siguientes:

 Caracteres alfabéticos (a..z y A...Z)


 Caracteres numéricos (0,1,2,3,4,5,6,7,8,9)
 Caracteres especiales ( + - # $ % ^ & * ( ) / < > : ; ' " )

c) Lógicos También denominado boleano, es aquel dato que solo puede tomar
uno de dos valores cierto o falso.

Permite representar respuestas simples, producto de la comparación entre


dos datos de tipo numérico o alfanumérico. Esto nos permite realizar cierta tarea
en función del valor de algunos datos.

Cuando usamos un programa es muy importante manejar datos. En C podemos almacenar


los datos en variables. El contenido de las variables se puede ver o cambiar en cualquier
momento. Estas variables pueden ser de distintos tipos dependiendo del tipo de dato que
8
Algoritmo Y Lenguajes De Programación
queramos meter. No es lo mismo guardar un nombre que un número. Hay que recordar
también que la memoria del ordenador es limitada, así que cuando guardamos un dato,
debemos usar sólo la memoria necesaria. Por ejemplo si queremos almacenar el número 400
usaremos una variable tipo int (la estudiamos más abajo) que ocupa sólo 16 bits, y no una de
tipo long que ocupa 32 bits. Si tenemos un ordenador con 32Mb de Ram parece una tontería
ponernos a ahorrar bits (1Mb=1024Kb, 1Kb=1024bytes, 1byte=8bits), pero si tenemos un
programa que maneja muchos datos puede no ser una cantidad despreciable. Además
ahorrar memoria es una buena costumbre.

A las variables no se les puede dar cualquier nombre. No se pueden poner más que letras de
la 'a' a la 'z' (la ñ no vale), números y el símbolo '_'. No se pueden poner signos de
admiración, ni de interrogación. El nombre de una variable puede contener números, pero su
primer carácter no puede serlo.
Ejemplos de nombres válidos:
Camiones Buffer j10hola29
Numero a1 num_alumnos

Ejemplos de nombres no válidos:


1abc nombre? num/alumnos

El tipo int.
En una variable de este tipo se almacenan números enteros (sin decimales). El rango de
valores que admite es -32767 a 32767. Cuando definimos una variable lo que estamos
haciendo es decirle al compilador que nos reserve una zona de la memoria para almacenar
datos de tipo int. Para guardarla necesitaremos 16 bits de la memoria del ordenador
(216=32767). Para poder usar una variable primero hay que declararla (definirla). Hay que
decirle al compilador que queremos crear una variable y hay que indicarle de qué tipo. Por
ejemplo:
int numero;

Mostrar variables por pantalla


Vamos a ir u poco más allá con la función printf. Supongamos que queremos mostrar el
contenido de la variable x por pantalla:
Printf (“%i", x);

Suponiendo que x valga 10 (x=10) en la pantalla tendríamos: 10

9
Algoritmo Y Lenguajes De Programación
Empieza a complicarse un poco ¿no? Vamos poco a poco. ¿Recuerdas el símbolo "\" que
usábamos para sacar ciertos caracteres? Bueno, pues el uso del "%" es parecido. "%i" no se
muestra por pantalla, se sustituye por el valor de la variable que va detrás de las comillas. (
%i, de integer=entero en inglés).
Para ver el contenido de dos variables, por ejemplo x e y, podemos hacer:
printf ( "%i ", x );
Printf ( "%i", y );

Resultado (suponiendo x=10, y=20):


10 20

Pero hay otra forma mejor:


printf( "%i %i", x, y );

Asignar valores a variables de tipo int


La asignación de valores es tan sencilla como x = 10;
También se puede dar un valor inicial a la variable cuando se define: int x = 15;
También se pueden inicializar varias variables en una sola línea: int x = 15, y = 20;
Hay que tener cuidado con lo siguiente: int x, y = 20;
Podríamos pensar que x e y son igual a 20, pero no es así. La variable x está sin valor inicial
y la variable 'y' tiene el valor 20.
Veamos un ejemplo para resumir todo:
#include <stdio.h>

void main()
{
int x = 10;

prinft( "El valor inicial de x es %i\n", x );


x = 50;
printf( "Ahora el valor es %i\n", x );
}

El tipo Char
Las variables de tipo char sirven para almacenar caracteres. Los caracteres se almacenan en
realidad como números del 0 al 255. Los 128 primeros (0 a 127) son el ASCII estándar. El

10
Algoritmo Y Lenguajes De Programación
resto es el ASCII extendido y depende del idioma y del ordenador. Consulta la tabla ASCII en
el anexo.
Para declarar una variable de tipo char hacemos: char letra;
En una variable char sólo podemos almacenar solo una letra, no podemos almacenar ni
frases ni palabras. Eso lo veremos más adelante (strings, cadenas). Para almacenar un dato
en una variable char tenemos dos posibilidades:
letra = 'A'; o letra = 65;
En ambos casos se almacena la letra 'A' en la variable. Esto es así porque el código ASCII
de la letra 'A' es el 65.
Para imprimir un char usamos el símbolo %c (c de character=caracter en inglés):
letra = 'A';
printf( "La letra es: %c.", letra );

Resultado:
La letra es A.

También podemos imprimir el valor ASCII de la variable usando %i en vez de %c:


letra = 'A';
printf( "El número ASCII de la letra %c es: %i.", letra, letra );

Resultado:
El código ASCII de la letra A es 65.

Como vemos la única diferencia para obtener uno u otro es el modificador (%c ó %i) que
usemos.
Una curiosidad:
letra = 'A';
printf( "La letra es: %c y su valor ASCII es: %i\n", letra, letra );
letra = letra + 1;
printf( "Ahora es: %c y su valor ASCII es: %i\n", letra, letra );

EL TIPO FLOAT
En este tipo de variable podemos almacenar números decimales, no sólo enteros como en
los anteriores. El rango de posibles valores es del 3,4E-38 al 3,4E38.
Declaración de una variable de tipo float:

11
Algoritmo Y Lenguajes De Programación
float numero;

Para imprimir valores tipo float Usamos %f.


float num=4060.80;
printf( "El valor de num es : %f", num );

Resultado:

El valor de num es: 4060.80

Si queremos escribirlo en notación exponencial usamos %e:


float num = 4060.80;
printf( "El valor de num es: %e", num );
Que da como resultado:

El valor de num es: 4.06080e003

Resumen de los tipos de datos en C

Esto es algo orientativo, depende del sistema.


Nº de Valores posibles Rango usando
Tipo Datos almacenados
Bits (Rango) unsigned

char Caracteres 8 -128 a 128 0 a 255

int enteros 16 -32.767 a 32.767 0 a 65.535

-2.147.483.647 a
long enteros largos 32 0 a 4.294.967.295
2.147.483.647

Nums. reales (coma


float 32 3,4E-38 a 3,4E38
flotante)

Nums. reales (coma


double 64 1,7E-307 a 1,7E308
flotante doble)

12
Algoritmo Y Lenguajes De Programación
3.4 Identificadores

Son los nombres elegidos para las variables, constantes, funciones, clases y similares. El
primer carácter debe ser una letra o un subrayado. El resto del nombre puede contener
dígitos. Los identificadores que comienzan con dos subrayados están reservados para uso
interno del compilador C++.

IDENTIFICADOR: Es un nombre dado a un elemento tal como una constante o variable


un procedimiento o un programa, están formados por letras o dígitos en cualquier orden
excepto que el primer caracter debe ser una letra

VARIABLES Y CONSTANTES

VARIABLE: Espacio en la memoria de la computadora que permite almacenar


temporalmente un dato durante la ejecución de un proceso, su contenido puede
cambiar según necesite el programa. Para poder reconocer una variable en la memoria
de la computadora, es necesario darle un nombre con el cual podemos identificarla
dentro de un algoritmo. Este nombre debe comenzar con una letra o guión bajo ( _ ),
puede contener en el resto del nombre números o letra o guiones bajos y no debe tener
más de ocho caracteres

Partida de datos cuyo valor puede cambiar durante el desarrollo del algoritmo
o durante la ejecución del programa.

Algunos nombres validos de variables son:

Cost_unit, iva10 , _dominio, a1_b4

o variable numérica : Aquella que solo permite almacenar valores numéricos

o variable alfanumérica : Aquella que puede almacenar uno o más caracteres (


dígitos, números, y símbolos)

Tipos de variables.- Los tipo más comunes son: enteras, reales, carácter, cadena y
lógicas.

CONSTANTE: Dato numérico o alfanumérico que permanece invariable durante la


ejecución de un algoritmo. Estos datos pueden pasarse a variables para poder hacer
uso de ellos en el algoritmo. El proceso de [pasar valores constantes a variables se le
conoce como asignación

13
Algoritmo Y Lenguajes De Programación

Tipos de constantes.-

Tipo Ejemplo

a) Entera: -1, 0, 25

b) Reales: 0.002, 3.14159, -2.34567, 5432.

c) Carácter: 'a', 'A', '+', ',', '9'

d) Cadena de 'A1', 'Hola', 'PRIMER ALGORITMO'


caracteres:

e) Lógicas: falso, verdadero; 0, 1; Si, No

Uso de las variables:

Como se puede observar en la definición dada en el punto anterior, las variables son
zonas de la memoria que nos permite almacenar valores temporalmente. Por ello, en
estas zonas podemos poner el resultado de operaciones matemáticas, para
posteriormente ser usadas o modificadas. Esta cualidad da como resultado, que existan
ciertas formas de uso estándar en las variables. Este uso de las variables las hace muy
útiles en el desarrollo de programas y son los siguientes:

o Trabajo: Es aquella que recibe el resultado de una operación matemática


completa y que ese usa normalmente dentro de un programa.

o Contador: Forma que toma una variable y que sirve para llevar la cuenta de las
operaciones o procesos realizados, con incrementos constantes, generalmente
de 1 en 1.

o Acumulador : Forma que toma una variable y que sirve para llevar la suma
acumulativa de una serie de valores que se van leyendo o calculando
progresivamente

o Indicadores: Variables que reciben un determinado valor cuando se cumple


cierta condición o sucede cierto evento dentro de u programa. Se les conoce
también como banderas.

14
Algoritmo Y Lenguajes De Programación
3.5 Almacenamiento, direccionamiento y representación en memoria.

La configuración de los platos de discos, cabezales y brazos de acceso hace posible


posicionar el cabezal sobre cualquier parte de cualquier superficie de cualquier plato en el
dispositivo de almacenamiento. Sin embargo, esto no es suficiente; para utilizar esta
capacidad de almacenamiento, debemos tener algún método de dar direcciones a partes
uniformes del almacenamiento disponible.

Hay un aspecto final requerido de este proceso. Considere todas las pistas en los muchos
cilindros presentes en un dispositivo típico de almacenamiento masivo. Puesto que las pistas
tienen diámetros variados, sus circunferencias también varían. Por lo tanto, si el
almacenamiento fue resuelto solamente a nivel de pistas, cada pista tendrá diferentes
cantidades de datos - pista #0 (estando cerca del centro del plato) puede almacenar 10,827
bytes, mientras que la pista #1,258 (cerca del borde externo del plato) puede almacenar
15,382 bytes.
La solución es dividir cada pista en múltiples sectores o bloques segmentos de un tamaño
consistente (a menudo 512 bytes) de almacenamiento. El resultado es que cada pista
contiene un número fijo de sectores.
Un efecto secundario es que cada sector contiene espacio inutilizado - el espacio entre
sectores. A pesar del número constante de sectores en cada pista, la cantidad de espacio
inutilizado varía - relativamente poco espacio inutilizado en las pistas internas y una cantidad
mucho mayor de espacio en las pistas más externas. En cualquier caso, este espacio
inutilizado se desperdicia, pues allí no se puede almacenar datos.
Sin embargo, la ventaja que supera este espacio desperdiciado es que ahora es posible
direccionar efectivamente el almacenamiento en un dispositivo de almacenamiento masivo.
De hecho, hay dos métodos de direccionamiento - el direccionamiento basado en la
geometría y el direccionamiento basado en bloques.

Clasificación de los Dispositivos de Almacenamiento.

 Acceso secuencial: En el acceso secuencial, el elemento de lectura del dispositivo


debe pasar por el espacio ocupado por la totalidad de los datos almacenados
previamente al espacio ocupado físicamente por los datos almacenados que
componen el conjunto de información a la que se desea acceder.
 Acceso aleatorio: En el modo de acceso aleatorio, el elemento de lectura accede
directamente a la dirección donde se encuentra almacenada físicamente la
información que se desea localizar sin tener que pasar previamente por la almacenada
entre el principio de la superficie de grabación y el punto donde se almacena la
información buscada.

15
Algoritmo Y Lenguajes De Programación
Medidas de Almacenamiento de la Información

o Byte: unidad de información que consta de 8 bits; en procesamiento informático y


almacenamiento, el equivalente a un único carácter, como puede ser una letra, un
número o un signo de puntuación.
o Kilobyte (Kb): Equivale a 1.024 bytes.
o Megabyte (Mb): Un millón de bytes o 1.048.576 bytes.
o Gigabyte (Gb): Equivale a mil millones de bytes.

Direccionamiento:

Tras almacenar la dirección de memoria de un dato en la posición 0×00000200, ¿es posible


obtener de nuevo el número 0×0153F2AB? La respuesta es afirmativa, pero no de forma
inmediata, se debe obtener de memoria primero los cuatro bytes almacenados en la posición
0×00000200 y utilizarlos como una dirección de memoria de donde obtener los cuatro bytes
contenidos en la posición 0×00000100. El acceso a este último dato se ha realizado de forma
indirecta, es decir, mediante un acceso previo a memoria para obtener la dirección del dato
final. Utilizando la notación funcional de operaciones sobre memoria, el acceso al dato se
logra ejecutando Lectura (Lectura (0×00000200)).

Representación en memoria

 Secure Digital (SD)

Están basadas en el formato Multimedia Card (MMC). Las tarjetas


marcadas como HC (High Capacity) funcionan a alta velocidad y
tienen tasas de transferencia de datos muy altas; algunas cámaras
fotográficas digitales requieren este tipo de tarjetas para poder grabar
video con fluidez o para capturar múltiples fotografías en sucesión
rápida.

 Starmedia

También conocidas como (Tarjeta de Disco Floppy en Estado Sólido).


Son duraderas y su apariencia física es similar a la de un disquete,
pero con el tamaño aproximado de una estampilla de correo. Su forma
impide introducirlas en su ranura en sentido contrario.

16
Algoritmo Y Lenguajes De Programación
 Memory Stick

Tarjetas digitales con memoria flash diseñadas con la compañía Sony. Además de ser aptas
para cámaras digitales de esta marca, las Memory Stick se pueden utilizar en
una gran variedad de aparatos digitales. Estas tarjetas sirven para almacenar
imágenes, música, datos, textos y gráficos Ofrecen una alta velocidad de
acceso y o necesitan ningún dispositivo para la reproducción, pues disponen
de un adaptador para disquetes.

 Minini SD FLASH MEMORY

Por su tamaño tan reducido, este formato de tarjeta se utiliza especialmente


en teléfonos celulares. Combina gran capacidad de almacenamiento, alta tasa
de transferencia de datos, confiabilidad, seguridad y bajo consumo de
energía. También se utiliza en reproductores de audio, cámaras digitales (por
medio de un adaptador) y asistentes digitales personales (PDA).

 Micro SD CARD

Este formato de tarjeta solo mide 10.9mm x 14.9mm x 1mm y puede


almacenar vrios GB de información. Al igual que el MINI SD, es my utilizado
en teléfonos celular

3.6 Proposición de asignación.

Lo mismo que en otros lenguajes de programación, en C se tienen los operadores aritméticos más
usuales (+ suma, - resta, * multiplicación, / división y % módulo).

El operador de asignación es =, por ejemplo: i=4; ch='y';


Incremento ++ y decremento -- unario. Los cuales son más eficientes que las respectivas
asignaciones. Por ejemplo: x++ es más rápido que x=x+1.
Los operadores ++ y -- pueden ser prefijos o postfijos. Cuando son prefijos, el valor es calculado
antes de que la expresión sea evaluada, y cuando es postfijo el valor es calculado después que la
expresión es evaluada.
En el siguiente ejemplo, ++z es prefijo y -- es postfijo: int x,y,z;
main()
{
17
Algoritmo Y Lenguajes De Programación
x= ((++z) - (y--)) % 100;
}
Que es equivalente a: int x, y,z;

main()
{
Z++;
x = ( z-y ) % 100;
y--;
}
El operador % (módulo o residuo) solamente trabaja con enteros, aunque existe una función para
flotantes (15.1 fmod ()) de la biblioteca matemática.
El operador división / es para división entera y flotantes. Por lo tanto hay que tener cuidado. El
resultado de x = 3 / 2; es uno, aún si x es declarado como float. La regla es: si ambos argumentos en
una división son enteros, entonces el resultado es entero. Si se desea obtener la división con la
fracción, entonces escribirlo como: x = 3.0 / 2; o x = 3 / 2.0 y aún mejor x = 3.0 / 2.0.
Por otra parte, existe una forma más corta para expresar cálculos en C. Por ejemplo, si se tienen
expresiones como: i = i + 3; o x = x * (y + 2);
Por lo que podemos reescribir las expresiones anteriores como: i += 3; y x *= y + 2; respectivamente.
Operadores de Comparación
El operador para probar la igualdad es ==, por lo que se deberá tener cuidado de no escribir
accidentalmente sólo =, ya que:
if ( i = j ) ...

Es una sentencia legal de C (sintácticamente hablando aunque el compilador avisa cuando se


emplea), la cual copia el valor de ``j'' en ``i'', lo cual será interpretado como VERDADERO, si j es
diferente de cero.
Diferente es!=, otros operadores son: < menor que, > mayor que, <= menor que o igual a y >= (mayor
que o igual a).

Operadores lógicos
Los operadores lógicos son usualmente usados con sentencias condicionales o relacionales, los
operadores básicos lógicos son:
&& Y lógico, || O lógico y ! negación.

18
Algoritmo Y Lenguajes De Programación
3.7 Operadores, operandos y expresiones.

Los operadores son elementos del lenguaje que sirven para reducir expresiones y
obtener resultados. Dependiendo de su tipo, se aplican sobre uno, dos o tres
operandos.
Los operadores se agrupan en las siguientes categorías:

o Unarios. Se aplican sobre un sólo operando.

o Binarios. Se aplican sobre dos operandos.

o Ternarios. Se aplican sobre tres operandos.

Aquí describiremos brevemente los operadores binarios, algunos unarios que se


relacionan con las operaciones de suma y resta, y el operador ternario?:
Binarios

A los elementos que se relacionan (variables o constantes) se les conoce como


operandos y los elementos relaciona dores se les conoce como operadores. Existen los
siguientes tipos de operadores: Matemáticos, relacionales y lógicos.

Matemáticos

Las expresiones aritméticas son análogas a las fórmulas matemáticas, la cte. y el valor son
numéricos y los operadores son los aritméticos

+ Suma Mod Modulo de la división


- Resta Div División entera
* Multiplicación () Paréntesis
/ División

Operadores Relacionales

Los operadores relacionales permiten comparar dos valores entre si y obtener una
respuesta de esta comparación. Esta respuesta es de tipo lógico, es decir, puede ser
solamente cierto cuando se cumpla la comparación y falso cuando no se cumple.

Cabe mencionar que el resultado de una operación de relación no puede ser asignado
a una variable. Esto es el resultado es directamente usado por una estructura de control
de programa. Como se verá más delante.

Los operadores relacionales son:


> Mayor que
< Menor que
>= mayor o igual que

19
Algoritmo Y Lenguajes De Programación
<= menor o igual que
= o == igual
<> Diferente

Operadores Lógicos

Los operadores lógicos permiten comparar dos valores lógicos, los cuales como se
deducen, pueden provenir de una comparación relacional (usando operadores
relacionales). Dicho de otra manera permiten efectuar dos comparaciones hechas cada
una con un operador relacional, en una sola línea. Como ya mencionamos, una
comparación relacional arroja resultados ciento o falso. El producto de una comparación
lógica da también cierto o falso. Los operadores lógicos san:

And y
Or o
Not no (negación)

Estos operadores se rigen por las siguientes tablas

Estos operadores son utilizados en las expresiones lógicas donde el resultado da


siempre verdadero o falso.

Expresiones (Operadores)

Expresiones.- Son conjuntos de constantes, variables, operadores y paréntesis.


Normalmente se utilizan para definir operaciones matemáticas. Consta de operandos y
operadores.

Expresiones Aritméticas.- Son análogas a las fórmulas matemáticas. Las variables y


constantes son numéricas y las operaciones son las aritméticas. Los operadores más
comunes son:

Símbolo Significado * Multiplicación

() Paréntesis / División

^ Exponenciación + Suma

DIV División entera - Resta

MOD Módulo = Asignación

Es una colección de operandos (números, constantes, variables, etc.) enlazados por


ciertos operadores, para construir una formula algebraica qué representa un valor.
20
Algoritmo Y Lenguajes De Programación
Expresiones Relacionales.- Permiten realizar comparaciones de valores de tipo
numérico o carácter. Sirven para expresar las condiciones en algoritmos o programas.
Formato: Operador relacional. Ver Operadores relacionales.

Expresiones lógicas.- Formato: Operador lógico. Ver Operadores lógicos

Toda expresión debe satisfacer las siguientes condiciones generales:

1.- No están permitidos dos operadores sucesivos. (Se pueden usar


paréntesis para separar dos operadores consecutivos.

2.- Una expresión puede consistir en un solo identificador usado como


constante o como variable.

3.- Un nombre de una función puede ser utilizado un lugar de un identificador


de constante o variable dentro de una expresión.

3.8 Prioridad de operadores, evaluación de expresiones.

Determina el orden en que habrán de realizarse las operaciones en una expresión


determinada. Para obtener la prioridad se deben conocer las siguientes reglas:

Las operaciones que están encerradas entre paréntesis se evalúan primero. Si existen
diferentes paréntesis anidados (interiores unos a otros), las expresiones más internas
se evalúan primero.
En caso de coincidir varios operadores de igual prioridad en una expresión o
subexpresión encerrada entre paréntesis, el orden de prioridad en este caso es de
izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe
agruparse a los operandos involucrados.

Los paréntesis tienen prioridad sobre el


resto de las operaciones.
Determina el orden en que habrán de
realizarse las operaciones en una expresión
determinada.

Para obtener la prioridad se deben conocer


las siguientes reglas:

Las operaciones que están encerradas


entre paréntesis se evalúan primero. Si
21
Algoritmo Y Lenguajes De Programación
existen diferentes paréntesis anidados (interiores unos a otros), las expresiones más
internas se evalúan primero. En caso de coincidir varios operadores de igual prioridad
en una expresión o subexpresión encerrada entre paréntesis, el orden de prioridad en
este caso es de izquierda a derecha.

Cuando se desea realizar una operación con baja prioridad por adelantado, debe
agruparse a los operandos involucrados.

Una expresión es una combinación de operandos y operadores.


La evaluación de una expresión consiste en reducirla, esto es, realizar todas las
operaciones contenidas en ella para obtener un valor final.
Para evaluar una expresión es necesario conocer la prioridad de los operadores, con lo
cual se puede determinar cuál operación se va a realizar antes que las demás.
Una expresión entre paréntesis se evalúa primero que las demás. Si hay paréntesis
anidados, se evalúa primero la expresión contenida en los paréntesis más internos.
La siguiente tabla muestra los operadores y su asociatividad (empezando con los de
mayor prioridad).

Operadores
Asociatividad
( ) [ ] . new typeof

Izquierda a derecha
- ~ ! ++ -- (tipo) expresión
derecha a izquierda
*/%
izquierda a derecha
+-
izquierda a derecha
<< >>
izquierda a derecha
< <= > >= is as
izquierda a derecha
== !=
izquierda a derecha
&^
izquierda a derecha
&&
izquierda a derecha
?:
derecha a izquierda
= *= /= %= += -= <<= >>= >>>= &= = ^=
derecha a izquierda

22
Algoritmo Y Lenguajes De Programación
3.9 Elaboración de programas.

Se puede crear un archivo que contenga el programa completo, como en los ejemplos que se tienen
más adelante. Se puede usar cualquier editor de textos ordinario con el que se esté familiarizado. Un
editor disponible en la mayoría de los sistemas UNIX es vi, y en Linux se puede usar pico.

Por convención el nombre del archivo debe terminar con ``.c'' por ejemplo: miprograma.c
progprueba.c. El contenido del archivo deberá obedecer la sintaxis de C.
Ejecución de programa.
El siguiente estado es correr el programa ejecutable. Para correr un ejecutable en UNIX, simplemente
se escribe el nombre del archivo que lo contiene, en este caso programa (o a.out).
Con lo anterior, se ejecuta el programa, mostrando algún resultado en la pantalla. En éste estado,
podría haber errores en tiempo de ejecución (run-time errors), tales como división por cero, o bien,
podrían hacerse evidentes al ver que el programa no produce la salida correcta.
Si lo anterior sucede, entonces se debe regresar a editar el archivo del programa, recompilarlo, y
ejecutarlo nuevamente.
Sin embargo, se da alguna información básica para algunos programas de C. El preprocesador
acepta el código fuente como entrada y es responsable de:

 quitar los comentarios


 interpretar las directivas del preprocesador las cuales inician con #.
Por ejemplo:
 #include -- incluye el contenido del archivo nombrado. Estos son usualmente llamados
archivos de cabecera (header). Por ejemplo:
 #include <math.h> -- Archivo de la biblioteca estándar de matemáticas.
 #include <stdio.h> -- Archivo de la biblioteca estándar de Entrada/Salida.
 #define -- define un nombre simbólico o constante. Sustitución de macros.
 #define TAM_MAX_ARREGLO 100

Compilador de C
El compilador de C traduce el código fuente en código de ensamblador. El código fuente es recibido
del preprocesador.
Ensamblador.
El ensamblador crea el código fuentei o los archivos objeto. En los sistemas con UNIX se podrán ver
los archivos con el sufijo .o.
Ligador
Si algún archivo fuente hace referencia a funciones de una biblioteca o de funciones que
están definidas en otros archivos fuentes, el ligador combina estas funciones (con main())
para crear un archivo ejecutable.
23
Algoritmo Y Lenguajes De Programación

X=A/B-C+D*E-A*C

EXPRESIÓN
Operandos Operadores Delimitadores
5 operandos A,B,C,D,E
Pueden ser cualquier variable o constante válida del lenguaje
Los valores de las variables deben ser coherentes con las operaciones que se realicen
con ellas
6 operadores /,-,+,*,-,*
Describen las operaciones que se realizan entre las variables
Pueden ser aritméticos, lógicos, relacionales
X=A/B-C+D*E-A*C

Orden en el que se deben realizar las operaciones


Cada lenguaje debe definir exactamente dicho orden
Si A = 4, B = C = 2, D = E = 3 =>
X=((4/2)-2)+(3*3)-(4*2)
=0+9-8
=1
X = ( 4 / (2 - 2 + 3 ) ) * ( 3 - 4 ) * 2
= ( 4 / 3 ) * ( -1 ) * 2

24
Algoritmo Y Lenguajes De Programación

Unidad 4: Estructura Selectiva Y De Repetición

4.1 Selectiva simple.

Selectivas (Simples): Se utilizan para tomar decisiones lógicas. Se suelen


denominar también estructuras de decisiones o alternativas. Es estas
estructuras se evalúa una condición y en función del resultado de la misma
se realiza una opción u otra. Las condiciones se especifican usando
expresiones lógicas. Su representación en seudocódigo
es: Si condición entonces acción si no otra acción

o Donde Si indica el comando de comparación


o Condición indica la condición a evaluar
o Entonces precede a las acciones a realizar cuando se cumple la
condición
o Acción Acción o conjunto de acciones que se realiza cuando se
cumple la condición
o Sino precede a las acciones a realizar cuando no se cumple la
condición
o Otra acción Acción o conjunto de acciones que se realizan cuando no
se cumple la condición.

Dependiendo si la comparación es cierta o falsa, se puede realizar una o


más acciones. Para realizar más de una, se puede usar el concepto de
bloque (INICIO FINAL)

Representación en diagrama de

No condición si

Ejecuta una determinada condición y si el resultado es verdadero se ejecuta


solo una determinada acción. Si la condición es falsa el programa sigue con
su secuencia normal.

25
Algoritmo Y Lenguajes De Programación
Diagrama de flujo

Pseudocódigo:

Si <condición> entonces

<Acción>

fin_si

If <condición> the

<Acción>

Hendir

Simple: ejecuta una determinada condición y si el resultado es verdadero se


ejecuta solo una determinada acción. Si la condición es falsa el programa sigue
con su secuencia normal.

4.2 Selectiva doble.

Se utilizan cuando se tienen dos opciones de acción, se debe ejecutar


una o la otra, pero no ambas a la vez, es decir, son mutuamente
excluyentes. Si la condición es verdadera, se ejecuta la acción 1, si es
falsa, se ejecuta la acción 2.

Diagrama de flujo

26
Algoritmo Y Lenguajes De Programación
Pseudocódigo:

Español Inglés

Si <condición> entonces If <condición> then


<acción S1> <acción S1>
sino else
<acción S2> <acción S2>
Fin_Si End_if

Entonces, si una condición C es verdadera, se ejecuta la acción S1 y si es falsa,


se ejecuta la acción S2.

4.3 Selectiva anidada.

La estructura selectiva anidada es una cadena de estructuras selectivas que se


conectan de la parte else de la actual con la parte if de la siguiente, es decir
cuando después de una decisión se debe tomar otra, después otra y así
sucesivamente.

Diagrama de flujo If <n=0> Then

“CERO”

Else

If <n>0> Then

“ENTERO”

Else

“DECIMAL”

End If

27
Algoritmo Y Lenguajes De Programación
Pseudocódigo:

If <condicion1> Then

Bloque de instrucciones1

Else

If <condicion2> Then

Bloque de instrucciones 2

Else

Bloque de instrucciones 3

End If

4.4 Selectiva Múltiple.

Múltiple

Estructuras repetitivas: Consiste en repetir una o varias acciones un número


determinado de veces. A esta acción se le llama bucle o ciclo.

Las dos principales preguntas que se realizan en el diseño de un ciclo son

o Que contiene el ciclo?

o Cuantas veces se debe repetir?

Estructura repetitiva Mientras (While... do): Es aquella en que el cuerpo del


ciclo se repite mientras se cumple una determinada condición.

28
Algoritmo Y Lenguajes De Programación

en seudocódigo:
La representación gráfica es:

mientras condición hacer

acción 1

acción 2

acción n

fin mientras

ejemplo: Escribir un algoritmo que


permita acción
n
escribir en la pantalla la frase "
desea continuar sí o no'

Estructura repetitiva repetir (Repeat....until): Es aquel en que el cuerpo del se


ejecuta hasta que se cumpla una condición determinada que se verifica al
final del ciclo.

en seudocódigo
La representación gráfica es

repetir

acción 1

acción 2

acción n

hasta que condición

Ejemplo: Algoritmo que


calcule la suma de 100
números introducidos
por el teclado

29
Algoritmo Y Lenguajes De Programación
La diferencia de estas estructuras consiste en:

o La estructura mientras termina cuando la condición es falsa y en la


estructura repetir termina cuando la condición es verdadera

o Es la estructura repetir el cuerpo del ciclo se ejecuta siempre al menos


una vez por lo contrario la estructura mientras es más general y
permite la posibilidad de que el ciclo pueda no ser ejecutado.

Estructura repetitiva Desde hasta (for to): Ejecuta las acciones del cuerpo
del ciclo un número determinado de veces y de modo automática controla el
número de veces que se repetirán las instrucciones del cuerpo del ciclo.

en seudocódigo
Se representa gráficamente de la
desde variable (v) =
siguiente forma
vi hasta vf hacer

acción 1

acción 2

acción n

fin desde

donde v = variable
índice

vi = valor inicial de
la variable

vf = valor final de la
variable

La estructura desde comienza con una valor inicial de la variable índice y las
acciones específicas se ejecutan a menos que el valor inicial sea mayor que
el valor final. El incremento de la variable índice siempre es uno si no se
indica lo contrario. Dependiendo del lenguaje es posible que el incremento
sea distinto de uno positivo o negativo

30
Algoritmo Y Lenguajes De Programación
Select Case expres
Case value1
Block of one or more VB statements
Case value2
Block of one or more VB Statements
Case value3
Case Else
Block of one or more VB Statements
End Select
Select Case expression
Case value1
Block of one or more VB statements
Case value2
Block of one or more VB Statements
Case value3
Case Else
Block of one or more VB Statements
End Select

4.5 Repetir mientras.

Este ciclo consiste en un conjunto de instrucciones que se repiten mientras se


cumpla una condición. De igual manera que en los condicionales, la condición es
evaluada y retorna un valor lógico, que puede ser verdadero o falso. En el caso del
ciclo mientras las instrucciones contenidas en la estructura de repetición se
ejecutarán solamente si al evaluar la condición se genera un valor verdadero; es
decir, si la condición se cumple; en caso contrario, se ejecutará la instrucción que
aparece después de Fin mientras.

A diferencia de otros ciclos, el ciclo mientras comienza evaluando la expresión


condicional, si el resultado es verdadero se ejecutarán las instrucciones que estén
entre el mientras y el fin mientras, al encontrarse la línea fin mientras se volverá a
evaluar la condición, si se cumple se ejecutarán nuevamente las instrucciones y
así sucesivamente hasta que la condición deje de cumplirse, en cuyo caso, el
control del programa pasa a la línea que aparece después de fin mientras.

Si en la primera pasada por el ciclo mientras la condición no se cumple las


instrucciones que están dentro del ciclo no se ejecutarán ni una sola vez.

En diagrama de Chapin (N-S), esta estructura tiene la presentación:

31
Algoritmo Y Lenguajes De Programación
Ejemplos:

1. Un algoritmo para mostrar los números del 1 al 10.

Definición del problema

Mostrar listado de números de 1 a 10.

 Análisis del problema


 Datos de entrada: ninguno
 Datos de salida: número
 Proceso: ninguno
 Diseño de la solución

Este es un algoritmo muy trivial pero permite revisar la aplicación de la estructura


de repetición Mientras. Lo primero a tener en cuenta es la declaración e
inicialización de la variable: num = 1. En este caso no solo se está declarando una
variable de tipo entero, sino también se está asignando un valor inicial, que será el
primer número mostrado.

La condición o expresión relacional con la cual se implementa el ciclo es num <=


10, dado que num inicia en 1, la primera vez que se encuentra la instrucción
mientras, la expresión es verdadera, por tanto se ejecutan las instrucciones que
aparecen al interior del ciclo.

Después de haber mostrado el contenido de la variable num, éste cambia, se


incrementa en 1.

3. Leer n números y encontrar el valor promedio, el mayor y el menor


o Definición del problema
o Encontrar el promedio, el mayor y el menor de varios números
o Análisis del problema

Para solucionar este problema, lo primero que hay que plantear es cómo se sabrá
cuando terminar la lectura de datos, ya que no se especifica la cantidad de
números que serán ingresados y en el planteamiento del problema no se da
ninguna condición que permita saber cuándo terminar el ciclo. Este tipo de
problemas es muy común.

Hay dos formas de abordar este ejercicio, la primera consiste en preguntar al


usuario con cuantos números desea trabajar y guardar dicho valor en una variable

32
Algoritmo Y Lenguajes De Programación
que se utilizará para establecer el ciclo. La segunda consiste en preguntar
después de leer cada dato, si se desea ingresar otro. En este ejercicio se utilizará
la primera estrategia.

Datos de entrada: cantidad de números, número

Datos de salida: promedio, mayor y menor

Procesos:

Suma = suma + número

Promedio = suma / cantidad de números

Diseño de la solución

3. La serie Fibonacci comienza con los números: 0, 1, 1, 2, 3, 5, 8, 13, 21, … Se


requiere un algoritmo para generar los primeros 10 números.

Definición del problema

Generar los 10 primeros números de la serie fibonacci

Análisis del problema

La serie fibonacci se genera a partir de dos valores iniciales que son el 0 y el 1,


que al sumarse dan como resultado 1. El siguiente número se obtiene sumando el
último número obtenido con el anterior, en este caso 1 + 1 = 2, luego será 2 + 1 =
3 y así sucesivamente.

4.6 Repetir hasta.

Esta estructura es característica de lenguajes como PASCAL, y su uso es muy


sencillo, se especifica un valor de partida (lógicamente) y un valor de parada(por
eso es “hasta”) que es el valor límite hasta el cual se realizara cierta instrucción
utilizando como base el valor de repetición. Esta estructura es manejada por
PASCAL como una estructura aparte, veamos de que forma:
PROGRAM Ciclo_hasta;
VAR

33
Algoritmo Y Lenguajes De Programación
Numero: Integer;
BEGIN
Numero:= 1;
REPEAT
writeln (Numero);
Numero:= Numero + 1;
UNTIL Numero = 50;

Esta estructura se encuentra en cualquier lenguaje de programación, no


necesariamente tal cual se muestra aquí, se utiliza un for o un while, simplemente
se modifica la condición para que no afecte al número de repeticiones. Por
ejemplo con un for:

for (a = 0; a<50; a++)

printf(“Rafa\n”);

Esta sentencia se ejecutara 50 veces, osea hasta el 50.

Como conclusión decir que todo lo necesario para realizar repeticiones se


encuentran con las estructuras while() y for(), solo es cuestión de saber estructurar
las condiciones.

4.7 Repetir desde.

Realiza la acción o conjunto de acciones, luego evalúa una condición, de resultar


cierta vuelve a realizar la(s) acción(es). Cuando sea falsa se sale del ciclo. Su
sintaxis es:

Do {

Sentencia,

} While ();

La diferencia fundamental, entre el ciclo while y do… while es que en este último,
las sentencias se realizarán por lo menos una vez, en cambio, con while, solo se
cumplirán mientras se cumpla la condición, lo cual puede ser nunca.

34
Algoritmo Y Lenguajes De Programación
Ejemplo: Programa que imprima luna lista de números del 1 al 100(PARA
JCREATOR)

1 class fibo {

2 public static void main(String args[]){

3 int n1=0;

4 do{ n1++;

5 System.out.println(n1+””);

6 }while(n1<100);

7}

8}

4.8 Elaboración de programas.

Estructuras repetitivas del software PSeint

Dentro del programa PSeint se tienen disponibles a 3 de las estructuras


repetitivas, las cuales son Mientras,
Repetir-Hasta y la estructura Para, ver figura 4.7. La estructura y sintaxis de uso
de cada una se explica a continuación.

* Mientras

* Repetir Hasta

* Para

Figura 4.7: “Comandos” de PSeint para estructuras repetitivas

Sintaxis y uso de la instrucción “Mientras”

35
Algoritmo Y Lenguajes De Programación
Repite un bloque de instrucciones (Secuencia_de_acciones) limitada entre el paso
Mientras y paso FinMientras.

La repetición del bloque de pasos se controla al inicio de la estructura, gracias a


evaluar a una condición lógica CL
“Expresion_logica”, cuyo resultado Verdadero o Falso es aprovechado para
determinar si repite o no el bloque!!

Al utilizar un lazo Mientras hay que tener cuidado de lo siguiente:

a) Para permitir que el lazo Mientras ejecute al menos una vez su ciclo
de instrucciones, usted debe de asegurarse que su Condición Lógica
se cumpla (inicialmente), sino PSeint ignora a toda el bloque a repetir
dentro de la estructura y continuara con el paso justamente después
del cierre del Mientras.
b) Para que el lazo Mientras pueda repetir el Bucle una o más veces,
asegúrese que en el interior de los pasos del ciclo se
modifique/altere el valor de (por lo menos) una de las variables
utilizada en la CL, de manera que al finalizar el ciclo actual, PSeint
evalué de nuevo la CL, y decida si repetir el Bucle.
c) Según la aclaración anterior, si necesita que el lazo finalice (que ya
no se repita de nuevo el ciclo), asegúrese que al volver a evaluar la
CL, está ya no se cumpla.

36
Algoritmo Y Lenguajes De Programación

UNIDAD 5. Arreglos y Archivos.

5.1 Arreglo Unidimensionales.

Los arreglos son una colección de variables del mismo tipo que se
referencian utilizando un nombre común. Un arreglo consta de posiciones de
memoria contigua. La dirección más baja corresponde al primer elemento y la
más alta al último. Un arreglo puede tener una o varias dimensiones. Para
acceder a un elemento en particular de un arreglo se usa un índice. El
formato para declarar un arreglo unidimensional es:

Tipo nombre_arr [ tamaño ] Por ejemplo, para declarar un arreglo de


enteros llamado a con diez elementos se hace de la siguiente forma:

Int a[10]; En C, todos los arreglos usan cero como índice para el primer
elemento. Por tanto, el ejemplo anterior declara un arreglo de enteros con
diez elementos desde a[0] hasta a[9]. La forma como pueden ser
accesados los elementos de un arreglo, es de la siguiente forma:

a[2] = 15; /* Asigna 15 al 3er elemento del arreglo a*/

num = a[2]; /* Asigna el contenido del 3er elemento a la variable num */ El


lenguaje C no realiza comprobación de contornos en los arreglos. En el caso
de que sobrepase el final durante una operación de asignación, entonces se
asignarán valores a otra variable o a un trozo del código, esto es, si se
dimensiona un arreglo de tamaño N, se puede referenciar el arreglo por
encima de N sin provocar ningún mensaje de error en tiempo de compilación
o ejecución, incluso aunque probablemente se provoque un error en el
programa. Como programador se es responsable de asegurar que todos los
arreglos sean lo suficientemente grandes para guardar lo que pondrá en ellos
el programa. C permite arreglos con más de una dimensión, el formato
general es:

tipo nombre_arr [ tam1 ][ tam2 ] ... [ tamN]; Por ejemplo un arreglo de


enteros bidimensionales se escribirá como:

int b[50][50]; Observar que para declarar cada dimensión lleva sus propios
paréntesis cuadrados.

Para acceder los elementos se procede de forma similar al ejemplo del


arreglo unidimensional, esto es,

b[2][3] = 15; /* Asigna 15 al elemento de la 3ª fila y la 4ª columna*/

37
Algoritmo Y Lenguajes De Programación
num = b[25][16]; A continuación se muestra un ejemplo que asigna al primer
elemento de un arreglo bidimensional cero, al siguiente 1, y así
sucesivamente.

main() { int t,i,num[3][4];

for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i]=(t*4)+i*1;

for(t=0; t<3; ++t){ for(i=0; i<4; ++i) printf("num[%d][%d]=%d ",


t,i,num[t][i]); printf("\n"); }

} En C se permite la inicialización de arreglos, debiendo seguir el siguiente


formato:

tipo nombre_arr[ tam1 ][ tam2 ] ... [ tamN] = {lista-valores}; Por ejemplo:

int c[10] = {1,2,3,4,5,6,7,8,9,10};

int num[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};

ARREGLOS:

Las estructuras de datos que hemos visto hasta ahora (listas, tuplas,
diccionarios, conjuntos) permiten manipular datos de manera muy flexible.
Combinándolas y anidándolas, es posible organizar información de manera
estructurada para representar sistemas del mundo real.

En muchas aplicaciones de Ingeniería, por otra parte, más importante que la


organización de los datos es la capacidad de hacer muchas operaciones a la
vez sobre grandes conjuntos de datos numéricos de manera eficiente.
Algunos ejemplos de problemas que requieren manipular grandes
secuencias de números son: la predicción del clima, la construcción de
edificios, y el análisis de indicadores financieros entre muchos otros.

La estructura de datos que sirve para almacenar estas grandes secuencias


de números (generalmente de tipo float) es el arreglo.

Los arreglos tienen algunas similitudes con las listas:los elementos tienen un
orden y se pueden acceder mediante su posición, los elementos se pueden
recorrer usando un ciclo for.

Sin embargo, también tienen algunas restricciones: todos los elementos del
arreglo deben tener el mismo tipo, en general, el tamaño del arreglo es fijo

38
Algoritmo Y Lenguajes De Programación
(no van creciendo dinámicamente como las listas), se ocupan principalmente
para almacenar datos numéricos.

A la vez, los arreglos tienen muchas ventajas por sobre las listas, que iremos
descubriendo a medida que avancemos en la materia.

Los arreglos son los equivalentes en programación de


las matrices y vectores de las matemáticas. Precisamente, una gran
motivación para usar arreglos es que hay mucha teoría detrás de ellos que
puede ser usada en el diseño de algoritmos para resolver problemas
verdaderamente interesantes.

Crear arreglos
El módulo que provee las estructuras de datos y las funciones para trabajar
con arreglos se llama NumPy, y no viene incluído con Python, por lo que hay
que instalarlo por separado.
Descargue el instalador apropiado para su versión de Python desde
la página de descargas de NumPy. Para ver qué versión de Python tiene
instalada, vea la primera línea que aparece al abrir una consola.
Para usar las funciones provistas por NumPy, debemos importarlas al
principio del programa:
from numpy import array
Como estaremos usando frecuentemente muchas funciones de este módulo,
conviene importarlas todas de una vez usando la siguiente sentencia:
from numpy import *
(Si no recuerda cómo usar el import, puede repasar la materia
sobre módulos).
El tipo de datos de los arreglos se llama array. Para crear un arreglo nuevo,
se puede usar la función array pasándole como parámetro la lista de valores
que deseamos agregar al arreglo:
>>> a = array([6, 1, 3, 9, 8])
>>> a
array([6, 1, 3, 9, 8])
Todos los elementos del arreglo tienen exactamente el mismo tipo. Para
crear un arreglo de números reales, basta con que uno de los valores lo sea:
>>> b = array([6.0, 1, 3, 9, 8])
>>> b
array([ 6., 1., 3., 9., 8.])
Otra opción es convertir el arreglo a otro tipo usando el método astype:
>>> a
array([6, 1, 3, 9, 8])
>>> a.astype(float)
array([ 6., 1., 3., 9., 8.])
>>> a.astype(complex)
array([ 6.+0.j, 1.+0.j, 3.+0.j, 9.+0.j, 8.+0.j])

39
Algoritmo Y Lenguajes De Programación
Funciones sobre arreglos
NumPy provee muchas funciones matemáticas que también operan
elemento a elemento. Por ejemplo, podemos obtener el seno de 9
valores equiespaciados entre 0 y π/2 con una sola llamada a la
función sin:
>>> from numpy import linspace, pi, sin

>>> x = linspace(0, pi/2, 9)


>>> x
array([ 0. , 0.19634954, 0.39269908,
0.58904862, 0.78539816, 0.9817477 ,
1.17809725, 1.37444679, 1.57079633])

>>> sin(x)
array([ 0. , 0.19509032, 0.38268343,
0.55557023, 0.70710678, 0.83146961,
0.92387953, 0.98078528, 1. ])
Como puede ver, los valores obtenidos crecen desde 0 hasta 1, que es
justamente como se comporta la función seno en el intervalo [0, π/2].
Aquí también se hace evidente otra de las ventajas de los arreglos: al
mostrarlos en la consola o al imprimirlos, los valores aparecen perfectamente
alineados. Con las listas, esto no ocurre:
>>> list(sin(x))
[0.0, 0.19509032201612825, 0.38268343236508978, 0.5555702330
1960218, 0.70710678118654746, 0.83146961230254524, 0.9238795
3251128674, 0.98078528040323043, 1.0]

5.2 Arreglo bidimensionales.

Los arreglos bidimensionales son tablas de valores. Cada elemento de un


arreglo bidimensional está simultáneamente en una fila y en una columna.
En matemáticas, a los arreglos bidimensionales se les llama matrices, y son
muy utilizados en problemas de Ingeniería.
En un arreglo bidimensional, cada elemento tiene una posición que se
identifica mediante dos índices: el de su fila y el de su columna.

Crear arreglos bidimensionales


Los arreglos bidimensionales también son provistos por NumPy, por lo que
debemos comenzar importando las funciones de este módulo:

40
Algoritmo Y Lenguajes De Programación
from numpy import *
Al igual que los arreglos de una dimensión, los arreglos bidimensionales
también pueden ser creados usando la función array, pero pasando como
argumentos una lista con las filas de la matriz:
a = array([[5.1, 7.4, 3.2, 9.9],
[1.9, 6.8, 4.1, 2.3],
[2.9, 6.4, 4.3, 1.4]])
Todas las filas deben ser del mismo largo, o si no ocurre un error de valor:
>>> array([[1], [2, 3]])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: setting an array element with a sequence.
Los arreglos tienen un atributo llamado shape, que es una tupla con los
tamaños de cada dimensión. En el ejemplo, a es un arreglo de dos
dimensiones que tiene tres filas y cuatro columnas:
>>> a.shape
(3, 4)
Los arreglos también tienen otro atributo llamado size que indica cuántos
elementos tiene el arreglo:
>>> a.size
12
Por supuesto, el valor de a.size siempre es el producto de los elementos
de a.shape.
Hay que tener cuidado con la función len, ya que no retorna el tamaño del
arreglo, sino su cantidad de filas:
>>> len(a)
3
Las funciones zeros y ones también sirven para crear arreglos
bidimensionales. En vez de pasarles como argumento un entero, hay que
entregarles una tupla con las cantidades de filas y columnas que tendrá la
matriz:
>>> zeros((3, 2))
array([[ 0., 0.],
[ 0., 0.],
[ 0., 0.]])

>>> ones((2, 5))


array([[ 1., 1., 1., 1., 1.],
[ 1., 1., 1., 1., 1.]])
Lo mismo se cumple para muchas otras funciones que crean arreglos; por
ejemplo la función random:
>>> from numpy.random import random
>>> random((5, 2))
array([[ 0.80177393, 0.46951148],
[ 0.37728842, 0.72704627],
[ 0.56237317, 0.3491332 ],

41
Algoritmo Y Lenguajes De Programación
[ 0.35710483, 0.44033758],
[ 0.04107107, 0.47408363]])

Operaciones con arreglos bidimensionales


Al igual que los arreglos de una dimensión, las operaciones sobre las
matrices se aplican término a término:
>>> a = array([[5, 1, 4],
... [0, 3, 2]])
>>> b = array([[2, 3, -1],
... [1, 0, 1]])

>>> a + 2
array([[7, 3, 6],
[2, 5, 4]])

>>> a ** b
array([[25, 1, 0],
[ 0, 1, 2]])
Cuando dos matrices aparecen en una operación, ambas deben tener
exactamente la misma forma:
>>> a = array([[5, 1, 4],
... [0, 3, 2]])
>>> b = array([[ 2, 3],
... [-1, 1],
... [ 0, 1]])
>>> a + b
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: shape mismatch: objects cannot be broadcast to a single
shape

Obtener elementos de un arreglo bidimensional


Para obtener un elemento de un arreglo, debe indicarse los índices de su
fila i y su columna j mediante la sintaxis a[i, j]:
>>> a = array([[ 3.21, 5.33, 4.67, 6.41],
[ 9.54, 0.30, 2.14, 6.57],
[ 5.62, 0.54, 0.71, 2.56],
[ 8.19, 2.12, 6.28, 8.76],
[ 8.72, 1.47, 0.77, 8.78]])
>>> a[1, 2]
2.14

>>> a[4, 3]
8.78

>>> a[-1, -1]

42
Algoritmo Y Lenguajes De Programación
8.78

>>> a[0, -1]


6.41
También se puede obtener secciones rectangulares del arreglo usando el
operador de rebanado con los índices:
>>> a[2:3, 1:4]
array([[ 0.54, 0.71, 2.56]])

>>> a[1:4, 0:4]


array([[ 9.54, 0.3 , 2.14, 6.57],
[ 5.62, 0.54, 0.71, 2.56],
[ 8.19, 2.12, 6.28, 8.76]])

>>> a[1:3, 2]
array([ 2.14, 0.71])

>>> a[0:4:2, 3:0:-1]


array([[ 6.41, 4.67, 5.33],
[ 2.56, 0.71, 0.54]])

>>> a[::4, ::3]


array([[ 3.21, 6.41],
[ 8.72, 8.78]])
Para obtener una fila completa, hay que indicar el índice de la fila, y
poner : en el de las columnas (significa «desde el principio hasta el final»). Lo
mismo para las columnas:
>>> a[2, :]
array([ 5.62, 0.54, 0.71, 2.56])

>>> a[:, 3]
array([ 6.41, 6.57, 2.56, 8.76, 8.78])
Note que el número de dimensiones es igual a la cantidad de rebanados que
hay en los índices:
>>> a[2, 3] # valor escalar (arreglo de cero dimensiones)
2.56

>>> a[2:3, 3] # arreglo de una dimensión de 1 elemento


array([ 2.56])

>>> a[2:3, 3:4] # arreglo de dos dimensiones de 1 x 1


array([[ 2.56]])

43
Algoritmo Y Lenguajes De Programación

5.3 Archivos.

Los archivos son un mecanismo de abstracción: proporcionan una forma de


almacenar información en el disco
y leerla después.

Cuando un proceso crea un


archivo, le asigna un nombre.
Cuando el proceso termina, el
archivo sigue existiendo y otros
procesos pueden acceder a él
utilizando su nombre.

Las reglas exactas para nombrar


archivos varían tanto de un
sistema a otro, pero todos los
sistemas operativos permiten cadenas de 1 a 8 caracteres como nombres de
archivos válidos. En muchos casos se permite también dígitos y caracteres
especiales.

Estructura de Archivos

Los archivos pueden estructurarse de varias maneras. Tres posibles


comunes son:

 Secuencia de bytes
 Secuencia de registros
 Árbol

Tipos de Archivos

o Archivos Regulares: Son los que contienen información del usuario.

o Directorios: Son archivos de sistema que sirven para mantener la


estructura del sistema de archivos.

o Archivos Especiales por Caracteres: Están relacionados con E/S y

44
Algoritmo Y Lenguajes De Programación
sirven para modelar dispositivos deE/S en serie.

o Archivos Especiales por Bloques: Sirven para modelar discos.

Acceso a Archivos

Los primeros sistemas operativos solo ofrecían un tipo de acceso a los


archivos: Acceso Secuencial. En estos sistemas, un proceso podía leer todos
los bytes o registros de un archivo en orden, comenzado por el principio,
pero no podía saltar de un lado a otro y leerlos en desorden.

Los archivos cuyos bytes o registros se pueden leer en cualquier orden se


denominan Archivos de Acceso Aleatorio. Los Archivos de Acceso
Directo son esenciales para muchas aplicaciones.

Atributos de Archivos

Todo archivo tiene un nombre y ciertos datos. Además, todos los sistemas
operativos asocian información adicional a cada archivo. Llamamos a estos
datos adicionales Atributos del Archivo. La lista de atributos varia
considerablemente de un sistema a otro.

Operaciones con Archivos

Los diferentes archivos ofrecen distintas operaciones de almacenamiento y


recuperación.

Create
Delete
Open
Close
Read
Write
Append
Seek
Get attributes
Set attributes
Rename

45
Algoritmo Y Lenguajes De Programación

5.4 Elaboración de programas.

Ejm:
char c1,c2,c3;
c1 = ‘a’; c2 = ’)’; c3 = ’9’;

Características de caracteres:
o Secuencialidad de los caracteres
o comparar caracters… c1>c2
o mayúsculas < minúsculas..

Ejemplo:
int i;
for (i=65; i<91; i++)
Ejemplo:
char c;
for (c='a'; c<='z'; c++)
ver car1.c y car2.c

Problemas:
o car1, car3,
o tabla ascii
o Conversión mayúsculas a minúsculas…
Arreglo de caracteres
char a[N]={'r','u','t','h'};
Problema:
detectar un palíndrome
String:
Cadena de caracteres.
char linea[] = "buenos dias"
b u e n o s d i a s \0
0 1 2 3 4 5 6 7 8 9 10 11

Ejemplos:
o como asignar datos a un string [string1.c]
o ingresa nombre y saluda [string2.c]
o despliega las letras del nombre separadas con un
blanco [string3.c]

46
Algoritmo Y Lenguajes De Programación

UNIDAD 6: Funciones

6.1 Introducción.

Subalgoritmo.

Se le llama así a cada una de las partes de un algoritmo más general que resuelve
cada una de las tareas particulares necesarias para que dicho algoritmo general
alcance el objetivo para el que fue diseñado, es decir resolver un problema.

Las variables locales: se declaran dentro de un módulo o Subalgoritmo y sólo


tienen utilidad dentro de ese módulo, no se podrá acceder a ellas desde otros
módulos. Pueden existir variables locales con el mismo nombre siempre que estén
en módulos diferentes.

Las variables globales: son declaradas de forma que puedan ser utilizadas
(consultada y/o modificada) desde cualquiera de los módulos que forman el
programa. En este caso, no puede haber dos variables globales con el mismo
nombre, ya que esto produciría una ambigüedad que el compilador no podría
resolver.

Función.

También conocido como una subrutina o


subprograma, como idea general, se presenta
como un Subalgoritmo que forma parte del
algoritmo principal, el cual permite resolver una
tarea específica. Algunos lenguajes de
programación, como Visual Basic .NET o
Fortran, utilizan el nombre función para referirse
a subrutinas que devuelven un valor.

Una subrutina al ser llamada dentro de un programa hace que el código principal
se detenga y se dirija a ejecutar el código de la subrutina, en cambio cuando se
llama a una macro, el compilador toma el código de la macro y lo implanta donde
fue llamado, aumentando así el código fuente y por consiguiente el objeto.

Elementos de la declaración de una subrutina.


Las declaraciones de subrutinas generalmente son especificadas por:

47
Algoritmo Y Lenguajes De Programación
Un nombre único en el ámbito: nombre de la función con el que se identifica y se
distingue de otras.
Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolverá al
terminar su ejecución.

Una lista de parámetros: especificación del conjunto de argumentos (pueden ser


cero, uno o más) que la función debe recibir para realizar su tarea.

El código u órdenes de procesamiento: conjunto de órdenes y sentencias que


debe ejecutar la subrutina.

Por ejemplo un seudocódigo puede ser


Private Sub cmdregre_Click() (programa principal)
Unload Me
End Sub
Sub Sumar(ByRef Valor As Long)
Valor = Valor + 100
End Sub
Private Sub cmdByRef_Click()
Dim Un_Valor As Long
Un_Valor = 100
Call Sumar(Un_Valor)
MsgBox Un_Valor, vbInformation, "Modifica la variable"
End Sub ( fin del programa)

Donde se puede ver claramente donde inicia la función del programa y donde
termina.

6.2 Funciones estándar.

1-Cadenas de caracteres.

Len: Indica la cantidad de caracteres que tiene una


determinada cadena.

Lcase y Ucase: Convierte cadenas de texto a


minúscula y mayúscula.

48
Algoritmo Y Lenguajes De Programación
2-Con números.

Round: se utiliza para redondear un número decimal, devolviendo un número


entero.

Dim Mimumero As Long

Minumero = Round (245.8) '(La función devuelve 246)

3-Fechas

FormatCurrency: Formato en dinero.

Ejemplo:

FormatCurrency(txt1) esto quiere decir que los datos numéricos puestos en el text
box 1se dará en forma de dinero

FormatPercent: Porcentajes.

Ejemplo: FormatPercent(txt2) los datos introducidos en text box 2 se dara en


formato de porcentaje

4-Presentar mensajes en pantalla

Función InputBox: Presenta un mensaje al usuario, permitiéndole ingresar un valor


en una caja de texto.

49
Algoritmo Y Lenguajes De Programación

6.3 Entrada y salida de datos.

La entrada de datos consiste en colocar en la memoria principal datos


provenientes desde algún dispositivo de entrada (teclado, disco, etc.) para que la
computadora, de acuerdo a un programa, realice una tarea.
La salida de datos consiste en enviar datos (que, generalmente, son el resultado
de un procesamiento) desde la memoria principal hacia un dispositivo de salida
(pantalla, impresora, disco, etc.).
La siguiente figura muestra un esquema conceptual del equipo de cómputo.

o Esquema conceptual del equipo de cómputo La consola

o En los albores de la computación, el teclado y la pantalla formaban la


consola.

o En la actualidad, a la combinación de teclado y pantalla se les sigue


considerando como a la antigua consola.

o En C#, la entrada y la salida de datos se pueden manejar a través de


los métodos de la clase Console.

o Entrada de datos desde el teclado


Para la entrada de datos por medio del teclado se pueden utilizar los
métodos Read( ) y ReadLine( ) de la clase Console.

Ejemplos:

o System.Console.Read( ) ; // Lee el siguiente carácter desde el flujo de


la entrada estándar.

o System.Console.ReadLine( ) ; // Lee la siguiente línea de caracteres


desde el flujo de la entrada estándar.
Salida de datos hacia la pantalla

o La salida de datos hacia la pantalla se puede realizar utilizando los


métodos Write y WriteLine( ) de la clase Console.

50
Algoritmo Y Lenguajes De Programación
Ejemplos:

o System.Console.Write( ) ; // Escribe el siguiente carácter en el flujo de


la salida estándar (la pantalla).

o System.Console.WriteLine( ) ; // Escribe la siguiente línea de


caracteres en el flujo de la salida estándar.

Cuadro de Mensaje

Muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en


un botón. Si se emplea como función, devuelve un tipo Integer correspondiente al
botón elegido por el usuario.

La sintaxis es:

MsgBox (mensaje [, botones] [, título] [, archivo Ayuda,


contexto])

Cuando MsgBox se emplea como función, devuelve un tipo


Integer correspondiente al botón elegido por el usuario.

Visual-Basic tiene una serie de constantes memo-técnicas que permiten


fácilmente recordar las opciones posibles.

Función InputBox

El InputBox o cuadro de entrada es otro de los cuadros de diálogos utilizados para


la interacción del usuario con la aplicación. El InputBox permite mostrar un cuadro
de diálogo donde el usuario pasará un parámetro, valor o dato para que el
programa lo trate y lo ejecute. El mensaje que quiere que aparezca se realiza de
forma casi idéntica al MsgBox.

La sintaxis es:

InputBox (mensaje [,título][, estándar] [,


posx][,posy][, archivo Ayuda , contexto])

Salida de datos

Según hemos visto, el método Print visualiza


datos en un formulario (objeto Form). Así mismo, permite visualizar datos en la
ventana inmediato (a través del objeto Debug), en una caja de imagen (Control
PictureBox) o en una impresora (utilizando el objeto Printer).

51
Algoritmo Y Lenguajes De Programación

6.4 Funciones definidas por el usuario.

Son funciones que el usuario crea para cubrir necesidades que están fuera del
alcance de las funciones estándar. Cada función tiene una misión muy concreta,
de modo que nunca tiene un número de líneas excesivo y siempre se mantiene
dentro de un tamaño manejable. Es muy frecuente que al hacer una modificación
para añadir una funcionalidad o corregir un error, se introduzcan nuevos errores
en partes del programa que antes funcionaban correctamente.

Además, una misma puede ser llamada muchas veces en un mismo programa, e
incluso puede ser reutilizada por otros programas. Una función es capaz de
mantener una gran independencia con el resto del programa.

Las funciones siempre devuelven un valor al programa que las invocó.

Para llamar a un procedimiento se escribe su nombre en el cuerpo del programa,


y si los necesita, se incluyen los parámetros entre paréntesis. Para invocar una
función es necesario hacerlo en una expresión.

• Existen cuatro formas de pasar un argumento a una función (subrutina) o


procedimiento: por valor, por referencia, por valor-resultado y por nombre.

Ventajas de las funciones definidas por el usuario

Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:
 Permiten una programación modular.
Puede crear la función una vez, almacenarla en la base de datos y llamarla desde
el programa tantas veces como desee. Las funciones definidas por el usuario se
pueden modificar, independientemente del código de origen del programa.
 Permiten una ejecución más rápida.
Al igual que los procedimientos almacenados, las funciones definidas por el
usuario Transact-SQL reducen el costo de compilación del código Transact-SQL
almacenando los planes en la caché y reutilizándolos para ejecuciones
repetidas. Esto significa que no es necesario volver a analizar y optimizar la
función definida por el usuario con cada uso, lo que permite obtener tiempos de
ejecución mucho más rápidos.
Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las
funciones Transact-SQL para tareas de cálculo, manipulación de cadenas y lógica
empresarial. Transact-SQL se adecuan mejor a la lógica intensiva del acceso a
datos.
 Pueden reducir el tráfico de red.
Una operación que filtra datos basándose en restricciones complejas que no se
puede expresar en una sola expresión escalar se puede expresar como una

52
Algoritmo Y Lenguajes De Programación
función. La función se puede invocar en la cláusula WHERE para reducir el
número de filas que se envían al cliente.
Tipos de funciones

o Función escalar:
Las funciones escalares definidas por el usuario devuelven un único valor de datos
del tipo definido en la cláusula RETURNS. En una función escalar insertada no
hay cuerpo de la función; el valor escalar es el resultado de una sola
instrucción. Para una función escalar de varias instrucciones, el cuerpo de la
función, definido en un bloque BEGIN...END, contiene una serie de instrucciones
de Transact-SQL que devuelven el único valor. El tipo devuelto puede ser de
cualquier tipo de datos excepto text, ntext, image, cursor y timestamp.
Funciones con valores de tabla
Las funciones con valores de tabla definidas por el usuario devuelven un tipo de
datos table. Las funciones insertada con valores de tabla no tienen cuerpo; la
tabla es el conjunto de resultados de una sola instrucción SELECT.

o Funciones del sistema

SQL Server proporciona numerosas funciones del sistema que se pueden usar
para realizar diversas operaciones. No se pueden modificar. Para obtener más
información, vea Funciones integradas (Transact-SQL), Funciones almacenadas
del sistema (Transact-SQL) y Funciones y vistas de administración dinámica
(Transact-SQL).
[Top]

6.5 Pase por valor.

Pasar por valor implica crear una nueva variable dentro de la función y pasarle una
copia del valor de la variable externa. Si se modifica el valor de la variable copia, la
variable original queda inalterada.

Los tipos de valor incluyen lo siguiente:

Todos los tipos de datos numéricos

Boolean, Char y Date

Todas las estructuras, incluso si sus miembros son tipos de referencia

Las enumeraciones, ya que su tipo subyacente es siempre SByte, Short, Integer,


Long, Byte, UShort, UInteger o ULong

53
Algoritmo Y Lenguajes De Programación

Pasando datos de tipo básico

Sea la función

void funcion (int x){


x=5;
System.out.println("dentro de la función: a="+x);
}

Sea la variable a que toma inicialmente el valor de 3. ¿Cuál será el valor


de a después de la llamada a la función funcion?

int a=3;
funcion(a);
System.out.println("después de la llamada: a="+a);

En primer lugar, recordaremos que la función denominada funcion tiene un único


parámetro x, cuyo alcance es desde la llave de apretura hasta la llave de cierre de
la función. La variable x deja de existir una vez que la función retorna.

Vamos a ver en este ejemplo el significado de "paso por valor". La variable a toma
el valor inicial de 3. Cuando se llama a la función se pasa el valor de a en su único
argumento, el valor de a se copia en el parámetro x, la variable x toma el valor de
3. En el curso de la llamada a la función, el valor de x cambia a 5, pero cuando la
función retorna, la variable x ha dejado de existir. La variable a no se ha
modificado en el curso de la llamada a la función, y sigue valiendo 3.

Durante el curso de la llamada a la función función, existe la variable a y su


copia x, pero son dos variables distintas, aunque inicialmente guarden el mismo
valor.

Pasando objetos

Creamos una clase Entero muy sencilla que tiene como miembro dato un número
entero valor, y un constructor que inicializa dicho miembro público al crearse un
objeto de la clase Entero.

public class Entero {


public int valor;
public Entero(int valor){
this.valor=valor;
}
}

54
Algoritmo Y Lenguajes De Programación
El valor devuelto por new al cear un objeto es una referencia a un objeto en
memoria, que hemos denominado objeto. Creamos un objeto aInt de la
clase Entero para guardar el número tres.

Entero aInt=new Entero(3);


funcion(aInt);

El valor devuelto por new lo guardamos en aInt, y se lo pasamos a la función


denominada funcion.

void función(Entero xInt){


xInt.valor=5;
}

Dentro de la función denominada función disponemos en xInt de la referencia al


objeto aInt. Como el argumento aInt y el parámetro xInt guardan la referencia al
mismo objeto, es posible modificar dicho objeto en el curso de la llamada a la
función, accediendo a sus miembros públicos. Desde xInt accedemos al miembro
público valor para modificarlo. Cuando la función retorna, el objeto aInthabrá
modificado su estado.

public class ValorApp2 {


public static void main(String[] args) {
Entero aInt=new Entero(3);
System.out.println("Antes de llamar a la función");
System.out.println("objeto.miembro "+aInt.valor);
funcion(aInt);
System.out.println("Después de llamar a la función");
System.out.println("objeto.miembro "+aInt.valor);
}

public static void function(Enter xInt){


xInt.valor=5;
}
}

Estos dos ejemplos, nos ponen de manifiesto el significado de la frase "pasar por
valor un dato a una función", y el distinto comportamiento de los tipos básicos de
datos, que no se pueden modificar en el curso de la llamada a la función, de los
objetos que si se pueden modificar. La referencia a un objeto se pasa por valor a
la función. Dentro de la función, desde esta referencia podemos acceder a los
miembros públicos de dicho objeto para modificar su estado. Cuando la función
retorna el objeto estará modificado.

55
Algoritmo Y Lenguajes De Programación

6.6 Pase por referencia.

Pasar un argumento por referencia implica que en realidad se pasa a la función la


variable original, de modo que la función puede modificar su valor.

Los tipos de referencia incluyen lo siguiente:

String

Todas las matrices, incluso si sus elementos son tipos de valores

Los tipos de clase, como Form

Delegados

6.7 Punteros.

Un puntero es un tipo simple que siempre está asociado a otro tipo (punteros a
enteros, a reales, a registros, etc.)

Se pueden ver los punteros como variables que almacenan direcciones de


memoria; de aquí se deduce:

Un puntero es un medio para acceder al contenido “real” apuntado por la variable.


La declaración de un puntero no implica que exista contenido apuntado por el
misma. Es necesario crear y destruir explícitamente el contenido apuntado por
punteros. Se puede establecer una analogía entre los punteros y las direcciones
postales: Una dirección postal permite acceder al lugar físico indicado.

El hecho de disponer de una dirección postal no garantiza que el lugar exista. Para
declarar variables de tipo puntero en la notación algorítmica se utiliza la sintaxis
siguiente: variable puntero a tipo

Por ejemplo:

puntero a real

Una vez se declara un puntero pueden llevarse a cabo dos acciones básicas sobre
el mismo: Asignarle memoria para almacenar un dato del tipo al que apunta:

56
Algoritmo Y Lenguajes De Programación
Crear

Eliminar la memoria que tiene asignada


y con ella el dato apuntado:

Destruir

Crear (variable puntero)

Destruir (variable puntero)

Es posible asignar a un puntero el


contenido de otro; para hacer Esto es
necesario que la variable a la que
vamos a asignar un Valor no apunte a
ningún dato pues en ese caso el dato
original Quedaría inaccesible. Así pues, sólo deberíamos asignar un puntero a otro
si el Puntero asignado no tiene memoria reservada

6.8 Elaboración de programas.

Código:

Private Sub cmdconv_Click()


If opt1.Value = True Then
txt1 = UCase(txt1)
opt1.Value = False
End If
If opt2.Value = True Then
txt1 = LCase(txt1)
opt2.Value = False
End If
End Sub
Private Sub cmdend_Click()
End
End Sub
Private Function suma(num1 As Integer, num2 As Integer) As Integer
Dim resultado As Integer
suma = num1 + num2

57
Algoritmo Y Lenguajes De Programación
End Function
Private Sub cmdsuma_Click()
resultado = suma(175, 25)
MsgBox "La suma de 175 + 25 = " & resultado, vbInformation, "Resultado de
funcion"
End Sub
Private Sub Form_Load()
End Sub
Private Sub iblsuma_Click()
resultado = suma(175, 25)
lblsuma.Caption = resultado
End Sub

Pase por valor y pase por referencia

El programa es un enunciado, lógicamente ordenado y clasificado, de los


procedimientos de auditoría que han de emplearse, la extensión que se les ha de
dar y la oportunidad en que se han de aplicar. Dado que los programas de
auditoría se preparan anticipadamente en la etapa de planeación, estos pueden
ser modificados en la medida en que se ejecute el trabajo, teniendo en cuenta los
hechos concretos que se vayan observando.

Se acostumbra a elaborar un programa por cada sección a examinar, el cual debe


incluir por lo menos el programa de trabajo en un sentido estricto y el programa
adscrito al personal del trabajo a realizar. Cada programa permite el desarrollo del
plan de trabajo general, pero a un nivel más analítico, aplicado a un área en
particular.

El programa contiene prácticamente la misma información que el plan de trabajo,


pero difiere de este en que se le han adicionado columnas para el tiempo
estimado, el tiempo real, la referencia al papel de trabajo donde quedó plasmada
la ejecución del programa, la rúbrica de quien realizó cada paso y la fecha del
mismo.

Por medio de cada programa, el auditor adquiere control sobre el desarrollo del
examen, pues estos además de ser una guía para los asistentes sirven para
efectuar una adecuada supervisión sobre los mismos, permitiendo
también determinar el tiempo real de ejecución de cada procedimiento para
compararlo con el estimado y así servir de pauta para la planeación de las
próximas, así mismo, permite conocer en cualquier momento el estado de
adelanto del trabajo, ayudando a la toma de decisiones sobre la labor pendiente
por realizar.

Generalmente el programa de auditoría comprenderá una sección por cada área


de los estados financieros que se examinan. Cada sección del programa de
auditoría debe comprender:

58
Algoritmo Y Lenguajes De Programación
o Una introducción que describa la naturaleza de las cuentas examinadas y
resuma los procedimientos de contabilidad de la compañía.
o Una descripción de los objetivos de auditoría que se persiguen en la
revisión de la sección.
o Una relación de los pasos de auditoría que se consideran necesarios para
alcanzar los objetivos señalados anteriormente.

Esta sección debe tener columnas para indicar la


persona que efectúa el trabajo, el tiempo empleado y
referencias cruzadas a las planillas o cédulas donde
se realiza el trabajo.

Función estándar Len

59
Algoritmo Y Lenguajes De Programación

Conclusión

60
Algoritmo Y Lenguajes De Programación

Fuentes de información
www.virtual.unal.edu.co/cursos/ingenieria/2001839/index.html
Módulo 3. Constructores básicos parte B teoría

https://www.google.com.mx/?gws_rd=cr&ei=gv-
KUuq4I4bg2QWM8YDYAw#q=conclusion+de+Estructuras+Selectivas+y+de+Repetici%C3%B3n.

61

Você também pode gostar