You are on page 1of 279

Taller de Informtica

Apunte de ctedra

UNaM
Facultad de Ingeniera

UNIVERSIDAD NACIONAL DE MISIONES


FACULTAD DE INGENIERA
TALLER DE INFORMTICA

Apuntes de Ctedra

INDICE
INDICE ............................................................................................................................................ 3
CONTENIDOS PLANIFICADOS ........................................................................................ 9

CAPITULO 1. Introduccin a la Informtica .............................................................................. 9


CAPITULO 2. Introduccin a la Programacin .......................................................................... 9
CAPITULO 3. Algoritmos. .......................................................................................................... 9
CAPITULO 4. Lenguajes de Programacin. ............................................................................... 9
CAPITULO 5. Sistemas Operativos. ........................................................................................... 9
CAPITULO 6. Software de Aplicacin. ...................................................................................... 9
CAPITULO 7. Conceptos de Redes e Internet. ........................................................................... 9
CAPITULO 1. ................................................................................................................. 10
INTRODUCCION A LA INFORMTICA ........................................................................... 10

1.1. OBJETIVOS. .......................................................................................................................... 10


1.2. TIPOS DE CONOCIMIENTOS. ............................................................................................ 10
1.3. SISTEMAS NUMRICOS ..................................................................................................... 11
1.4. OPERACIONES LGICAS BINARIAS ............................................................................... 13
1.5. EL SISTEMA BINARIO Y LA RELACIN CON LA ELECTRNICA. ........................... 15
1.6. UNIDADES DE INFORMACIN ......................................................................................... 16
1.7. CODIFICACIN DE CARACTERES ................................................................................... 16
1.8. MAQUINA DE VON NEUMANN VS. ARQUITECTURA HARWARD ........................... 18
1.9 LENGUAJES DE PROGRAMACIN ................................................................................... 19
1.10 LENGUAJES INTERPRETADOS VS LENGUAJES COMPILADOS ............................... 20
1.11. TIPOS DE ERRORES .......................................................................................................... 21
CAPITULO 2. ................................................................................................................. 22
INTRODUCCION A LA PROGRAMACION ....................................................................... 22

2.1. ANLISIS Y RESOLUCIN DE PROBLEMAS. ................................................................ 22


2.1.1. Anlisis del Problema ...................................................................................................... 22
2.1.2. Diseo del Algoritmo ....................................................................................................... 22
2.1.3. Implementacin del Algoritmo en la Computadora. ........................................................ 23
2.2. ETAPAS EN LA CREACIN DE PROGRAMAS. .............................................................. 25
2.2.1. Anlisis del Problema. ..................................................................................................... 25
2.2.2. Diseo. ............................................................................................................................. 25
2.2.3. Implementacin del Algoritmo en la Computadora ......................................................... 25
2.2.4. Documentacin y Mantenimiento. ................................................................................... 26
2.3. PROGRAMAS: CONCEPTO, CARACTERSTICAS. ......................................................... 27
2.3.1. Partes de un programa. ..................................................................................................... 27
2.4. TCNICAS DE PROGRAMACIN. .................................................................................... 28
2.4.1 Programacin no Estructurada. ......................................................................................... 28
2.4.2 Programacin Procedimental ............................................................................................ 28
2.4.3 Programacin Modular ..................................................................................................... 29
2.5. EJERCICIO PARA ILUSTRAR LA METODOLOGA ....................................................... 30
PREGUNTAS DE REPASO .................................................................................................... 31
CAPITULO 3. ................................................................................................................. 32
ALGORITMOS ............................................................................................................... 32

3.1. CONCEPTO. CARACTERSTICAS. DISEO. ................................................................... 32


3.1.1. Concepto .......................................................................................................................... 32
3.1.2. Caractersticas .................................................................................................................. 32
3.1.3. Diseo .............................................................................................................................. 32
3.2. APLICACIN DE ESTRATEGIAS DE RESOLUCIN DE PROBLEMAS. ..................... 35
3.3. ESTRUCTURAS BSICAS: LINEALES, SELECTIVAS Y REPETITIVAS ..................... 37
3.3.1. Estructuras bsicas lineales .............................................................................................. 37

3.3.2. Estructuras bsicas selectivas........................................................................................... 40


3.3.3. Estructuras de Control Repetitivas ................................................................................... 46
3.4. CONTADORES, INTERRUPTORES Y ACUMULADORES. ............................................ 53
3.4.1. Contador ........................................................................................................................... 53
3.4.2. Acumulador ...................................................................................................................... 53
3.5. ARREGLOS DE DATOS ....................................................................................................... 54
3.5.1. Arreglos Unidimensionales o Vectores............................................................................ 54
3.5.2. Operaciones con Vectores ................................................................................................ 55
3.5.3. Arreglos Bidimensionales o Matrices .............................................................................. 56
3.5.4. Operaciones con Matrices ................................................................................................ 57
Preguntas de Repaso ............................................................................................................. 58
3.6. GUA DE EJERCICIOS ......................................................................................................... 59
3.6.1. Ejercicios Algoritmo ........................................................................................................ 59
3.6.2. Ejercicios Expresiones ..................................................................................................... 59
3.6.3. Instrucciones Secuenciales ............................................................................................... 59
3.6.4. Instrucciones de Decisin ................................................................................................ 60
INSTRUCCIONES REPETITIVAS .......................................................................................... 62
3.6.5. Estructura FOR (Controladas por un Contador) .............................................................. 62
3.6.6. Estructuras WHILE y DO WHILE (Controladas por una condicin) ............................. 63
ESTRUCTURAS DE DATOS................................................................................................... 64
3.6.7. Vectores ........................................................................................................................... 64
3.6.8. Matrices ............................................................................................................................ 65
3.6.9. Ejercicios Integradores ..................................................................................................... 67
CAPITULO 4. ................................................................................................................. 70
LENGUAJES DE PROGRAMACION ................................................................................. 70

4.1. INTRODUCCIN .................................................................................................................. 71


4.1.1. Por qu usar C? .............................................................................................................. 71
4.2. LENGUAJE C......................................................................................................................... 73
4.2.1. Operaciones bsicas de programacin. ............................................................................ 73
4.2.2. Manejo de Errores. ........................................................................................................... 74
4.3. ESTRUCTURA DE UN PROGRAMA .................................................................................. 76
4.3.1. Directivas del preprocesador ............................................................................................ 76
4.3.2. Declaracin de variables globales .................................................................................... 77
4.3.3. Prototipos de funciones .................................................................................................... 77
4.3.4. Declaracin de clases ....................................................................................................... 77
4.3.5. Funcin main() ................................................................................................................. 77
4.3.6. Definicin de funciones ................................................................................................... 78
4.3.7. Definicin de clases ......................................................................................................... 78
4.4. DATOS, VARIABLES Y CONSTANTES ............................................................................ 79
4.4.1 Datos ................................................................................................................................. 79
4.4.2. Variables .......................................................................................................................... 79
4.4.3 Ejercicios sobre Variables ................................................................................................. 82
4.5. CONSTANTES ....................................................................................................................... 83
4.5.1. Normas para la notacin .................................................................................................. 83
4.5.2. Recomendaciones en el uso de la notacin. ..................................................................... 86
4.5.3 Constantes carcter. Comentario adicional. ...................................................................... 87
4.5.4. Ejercicios .......................................................................................................................... 89
4.6. OPERADORES ...................................................................................................................... 91
4.6.1. Operadores aritmticos. ................................................................................................... 91
4.6.2. Operadores relacionales ................................................................................................... 93
4.6.3. Operadores lgicos. .......................................................................................................... 93

4.6.4. Operadores de asignacin ................................................................................................ 95


4.6.5. Operador "sizeof" ............................................................................................................. 95
4.6.6. Operador condicional (?) ................................................................................................. 95
4.6.7. Operador coma (,) ............................................................................................................ 96
4.7. EXPRESIONES ...................................................................................................................... 97
4.7.1. EXPRESIONES ARITMTICAS. ...................................................................................... 97
4.7.2. Expresiones lgicas .......................................................................................................... 98
4.7.3. Ejercicios con operadores y expresiones ....................................................................... 100
4.8. INSTRUCCIONES ............................................................................................................... 102
4.8.1. Bloques........................................................................................................................... 102
4.8.2. Expresiones. ................................................................................................................... 103
4.8.3. Bucles. ............................................................................................................................ 103
4.8.4. Etiquetas. ........................................................................................................................ 105
4.8.5. Sentencias de Seleccin. ................................................................................................ 106
4.8.6. Sentencias de salto ......................................................................................................... 108
4.8.7. Comentarios. .................................................................................................................. 109
4.8.8. Ejercicios con sentencias. .............................................................................................. 109
4.9. FUNCIONES ........................................................................................................................ 111
4.9.1. Declaracin de funcin. El Prototipo. ............................................................................ 111
4.9.2. Definicin de funcin..................................................................................................... 112
4.9.3. Funcin main() ............................................................................................................... 113
4.9.4. mbito de variables ....................................................................................................... 114
4.9.5. Ejercicios ........................................................................................................................ 115
4.10. ARREGLOS........................................................................................................................ 118
4.10.1. Cadena de caracteres. ................................................................................................... 118
4.10.2. Arreglos ........................................................................................................................ 119
4.10.3. Algoritmos de ordenacin: mtodo de la burbuja ........................................................ 121
4.10.4. Ejercicios: cadenas de caracteres. ................................................................................ 121
4.10.5. Ejercicios: arreglos ....................................................................................................... 122
4.11. GUA DE EJERCICIOS ..................................................................................................... 125
4.11.1. Gua Practica 1 de C++. Instrucciones secuenciales .................................................... 125
4.11.2. Gua Prctica 2 de C++. Estructuras de Decisin ........................................................ 127
4.11.3. Gua Prctica N 3 de C++. Estructuras Repetitivas.................................................... 133
4.11.4. Gua Prctica N 4 de C++. Arreglos ........................................................................... 137
4.11.5. GUA PRCTICA N 5 DE C++. Funciones .............................................................. 151
4.11.6. GUA PRCTICA N 6 DE C++ ................................................................................ 155
Ejercicios Combinados usando Vectores, Matrices y Funciones ............................................ 155
Ejemplos: ................................................................................................................................. 158
4.11.7. Ejercicios Integradores ................................................................................................. 163
CAPITULO 5. ............................................................................................................... 172
SISTEMAS OPERATIVOS ............................................................................................. 172

5.1. DEFINICIONES ................................................................................................................... 172


5.1.1. Software de sistemas ...................................................................................................... 172
5.1.2. Sistema Operativo .......................................................................................................... 172
5.1.3. Traduccin de lenguajes................................................................................................. 174
5.1.4. Programas de Utilera..................................................................................................... 174
5.1.5. Sistemas Operativos para Microcomputadoras .............................................................. 174
5.1.6. Historia de los Sistemas Operativos............................................................................... 174
5.1.7. Tipos de Interfaz con el usuario ..................................................................................... 175
5.1.8. Sistemas operativos actuales .......................................................................................... 175
5.2. SISTEMA OPERATIVO LINUX ........................................................................................ 177

5.3. GUIA INTRODUCTORIA DE COMANDOS DE SHELL ................................................. 178


5.3.1. Iniciando una Sesin ...................................................................................................... 178
5.3.2. Super Shell ..................................................................................................................... 178
5.3.3. Qu es el Shell? ............................................................................................................ 179
5.3.4. Qu es el prompt? ......................................................................................................... 180
5.3.5. Como funciona el Shell:................................................................................................. 181
5.3.6. Caractres Especiales o Metacaractres del Shell.......................................................... 182
5.3.7. Qu es el Sistema de Ficheros? .................................................................................... 182
5.3.8. Comandos....................................................................................................................... 185
5.4. TRUCOS SHELL ................................................................................................................. 191
5.5. Los conceptos de usuarios y permisos .................................................................................. 193
5.5.1. Fijando permisos ............................................................................................................ 194
5.5.2. Bit de Stick ..................................................................................................................... 195
5.5.3. SUID - [Identificacin de conjunto de usuario] ............................................................. 196
5.6. TAREAS Y PROCESOS ...................................................................................................... 197
5.6.1. Primer plano y Segundo plano ....................................................................................... 197
5.6.2. Envo a segundo plano y eliminacin procesos ............................................................. 198
5.6.3. Sobre los ciclos infinitos ................................................................................................ 199
5.7. USANDO EL EDITOR VI ................................................................................................... 201
5.7.1. Conceptos ....................................................................................................................... 201
5.8. EJERCICIOS DE SISTEMA OPERATIVO ........................................................................ 206
5.8.1. Preguntas sobre Linux .................................................................................................... 206
5.8.2. Ejercicios de comandos bsicos shell linux ................................................................... 207
CAPITULO 6. ............................................................................................................... 209
Software de aplicaciones ............................................................................................ 209

6.1. Procesador de Textos Writer ................................................................................................. 213


6.1.1. Configuraciones de OpenOffices ................................................................................... 213
Tamao y Formato del Papel...................................................................................................... 213
Encabezados y Pie de Pgina ...................................................................................................... 213
Insertar Numeracin de Pgina ............................................................................................ 214
Nota al Pie ................................................................................................................................... 214
Configuraciones de Prrafos .......................................................................................... 214
Personalizar ................................................................................................................. 214

Uso de las Teclas Rpidas ........................................................................................................... 214


Barras de Herramientas ............................................................................................................. 215

Opciones ...................................................................................................................... 215


Generalidades .............................................................................................................. 216
Como Usar los Encabezados ........................................................................................... 216
Editar Estilos y Formatos ............................................................................................ 217
Consejos ...................................................................................................................... 217

Para Encabezados ....................................................................................................................... 217


Para Cuerpo de Textos ................................................................................................................ 217

Numeracin en los Encabezados ..................................................................................... 217


Guardar una Plantilla .................................................................................................... 218
Cargar una Plantilla ...................................................................................................... 218
Usar una Plantilla como Predeterminada ........................................................................ 218
Configurar las Imgenes ................................................................................................ 219

Titulo de Imagen ......................................................................................................................... 220

Insertar Formula .......................................................................................................... 221

Editar formulas ........................................................................................................................... 221

Insertar Hojas de clculo ............................................................................................... 221

Editar las Hojas ........................................................................................................................... 222

Insertar Dibujos ........................................................................................................... 222


Movimiento y selecciones .............................................................................................. 222
Combinaciones de Teclas ............................................................................................... 223
Crear ndices ................................................................................................................ 223

Editar el contenido del ndice ..................................................................................................... 223


Editar el estilo del ndice ............................................................................................................. 223
Actualizar .................................................................................................................................... 223

Sobre la numeracin de las figuras y las grficas .............................................................. 224


Uso de Referencias ........................................................................................................ 224
Insertar salto de Pgina ................................................................................................. 224
Barra de estado ............................................................................................................ 224
Guardar como PDF ........................................................................................................ 224

6.2. Hoja de Clculo Calc ............................................................................................................ 226


Capitulo 7 ................................................................................................................... 233
conceptos de redes e internet .................................................................................... 233

7.1. DEFINICIONES ................................................................................................................... 233


7.1.1. Telecomunicaciones ....................................................................................................... 233
7.1.2. Protocolos....................................................................................................................... 234
7.1.3. Tipos de Seales............................................................................................................. 234
7.1.4. Canales de comunicacin ............................................................................................... 234
7.1.5. Caractersticas de los Canales de Comunicacin ........................................................... 235
7.1.6. Funciones del software de telecomunicaciones ............................................................. 236
7.2. REDES DE COMUNICACIONES ...................................................................................... 236
7.2.1. Clasificacin................................................................................................................... 236
7.2.2. Topologas de las redes .................................................................................................. 236
7.2.3. mbito Geogrfico ........................................................................................................ 239
7.2.4. Implementacin de una red ............................................................................................ 240
7.3. Conectividad ......................................................................................................................... 241
7.3.1. Definicin de Conectividad ........................................................................................... 242
7.3.2. Normas para la Conectividad ......................................................................................... 243
Funciones de cada capa ............................................................................................................ 246
Nombres de los datos en cada capa .......................................................................................... 247
Las capas del modelo de referencia TCP / IP .......................................................................... 247
Grfico de protocolo TCP/IP ................................................................................................... 249
Comparacin modelos: OSI - TCP/IP ......................................................................................... 249
Similitudes ............................................................................................................................... 249
Diferencias ............................................................................................................................... 249
BIBLIOGRAFIA ........................................................................................................... 251
ANEXOS ...................................................................................................................... 253

ANEXO 1. .................................................................................................................................... 253


ESTANDARES PARA DIAGRAMAS DE FLUJO PSEUDOCDIGO ................................ 253
ANEXO 2. OPERADORES ........................................................................................................ 254
2.1. OPERADORES MATEMTICOS .................................................................................. 254
2.2. OPERADORES DE RELACIN COMPARACIN ................................................... 254
2.3. OPERADORES LGICOS TABLAS DE VERDAD................................................... 254
2.4. OPERADORES ORDEN DE PRECEDENCIA ............................................................ 255
2.5. ASOCIATIVIDAD DE OPERADORES.......................................................................... 256
ANEXO 3.- TIPOS DE DATOS EN C++ ................................................................................... 257
3.1. Conversin de tipos de datos ............................................................................................ 257
3.2. Conversin explcita de tipo: ............................................................................................ 258
ANEXO 4.- SISTEMAS NUMRICOS ..................................................................................... 260
Que es un sistema Numrico? ................................................................................................ 260

ANEXO 5.- CDIGOS ASCII .................................................................................................... 263


Smbolos y nombre ASCII usados corrientemente .................................................................. 264
ANEXO 6.- PALABRAS RESERVADAS EN C ....................................................................... 268
ANEXO 7.- ESTILOS DE NOTACIN ..................................................................................... 270
7.1. Comentarios ...................................................................................................................... 270
7.2. Nombres de variables ........................................................................................................ 270
5.3. Notacin tipo Hngara ...................................................................................................... 270
ANEXO 8. SUMARIO DE RDENES BSICAS LINUX ....................................................... 272
ANEXO 9. ENTORNO ANJUTA ............................................................................................... 274
9.1. Introduccin ...................................................................................................................... 274
9.2. Barra de men ................................................................................................................... 275
9.3. Barra de herramientas ....................................................................................................... 275
9.4. Ventana principal .............................................................................................................. 276
9.5. Teclas Rpidas .................................................................................................................. 277
9.6. Compilar y construir una aplicacin ................................................................................. 277
9.7. Ejecutar un programa ........................................................................................................ 278
9.8. Preferencias ....................................................................................................................... 278

CONTENIDOS PLANIFICADOS
CAPITULO 1. Introduccin a la Informtica
-

La Informtica. Conceptos bsicos.


Hardware. Computadora: Definicin, estructura. Dato e Informacin. Almacenamiento:
Definicin, caractersticas, clasificacin. Procesamiento y Funcionamiento de una Computadora.
Perifricos de Entrada y Salida.
Software. Definicin, Clasificacin.

CAPITULO 2. Introduccin a la Programacin


-

Anlisis y resolucin de problemas. Estrategias de resolucin de problemas. Ubicacin de la


programacin en la resolucin de Problemas.
Programa: Concepto. Caractersticas. Partes de un programa. Elementos bsicos de un
programa. Etapas en la creacin de Programas. Tcnicas de programacin. La programacin
estructurada.
Diseo descendente (top-down). Programacin Modular.

CAPITULO 3. Algoritmos.
-

Algoritmos: Concepto, Caractersticas. Diseo. Aplicacin de Estrategias de resolucin de


problemas.
Diagrama de flujo: Introduccin. Smbolos. Prueba de Escritorio. Estructuras bsicas: lineales,
selectivas y repetitivas. Estructuras anidadas. Contadores, Interruptores y Acumuladores.
Introduccin a las estructuras de datos. Vectores. Operaciones vlidas sobre vectores: recorrido,
asignacin, actualizacin, desplazamiento, ordenamiento. Matrices: Formas de recorrido,
almacenamiento.

CAPITULO 4. Lenguajes de Programacin.


-

Lenguajes de Programacin. Alto y bajo Nivel. Compiladores. Interpretes. Lenguaje C.


Convenciones lxicas.
Estructura de un Programa. Declaraciones. Datos, tipos de datos, variables, Constantes,
operadores, expresiones, precedencia de los operadores. Evaluacin de expresiones.
Sentencias. Asignacin. Modificacin de valores almacenados.
Sentencias de Control: Condicionales: if, if else, switch, Sentencias Repetitivas: while, do while,
for.
Arreglos. Vectores y Matrices.
Funciones: mbito de las variables: variables locales y variables globales. Pasaje de parmetros.

CAPITULO 5. Sistemas Operativos.


-

Definicin de Sistema Operativo. Clasificacin. Conceptos bsicos: Interfaces, Procesos, Files


System.
Linux: Definicin. Caractersticas. Interfaz. Comandos bsicos. Operaciones con archivos y
directorios.

CAPITULO 6. Software de Aplicacin.


-

Planilla de Calculo: Generalidades, principios de las planillas de calculo, Utilidades y


caractersticas mas utilizadas.

CAPITULO 7. Conceptos de Redes e Internet.


-

Redes. Conceptos. Aplicaciones de Internet: Utilizacin y Caractersticas generales.

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

CAPITULO 1.
INTRODUCCION A LA INFORMTICA
1.1. OBJETIVOS.
Los Objetivos del Curso son aprender a programar en un lenguaje, el lenguaje elegdo para esta materia
se llama C++ (C ms ms), en el curso buscaremos que mientras aprendemos a programar tengamos en
mente los siguientes puntos:
- Aprender a Formular Problemas y proponer soluciones.
- No recordar, no memorizar.
- Trabajar en equipo, en forma colaborativa.
- Tratar de divertirse.
- No hay libros de Texto, solo los apuntes de la materia en el sitio Web.
Entonces una de las metas es ensear a plantear problemas y proponer soluciones de una manera
estructurada en un lenguaje (Flujo o C++) que permita que cualquier persona pueda interpretarlo.
La practica en la resolucin de problemas, utilizando el razonamiento, permite realizar este tipo de
tareas de una manera rpida.
Todos nosotros en forma cotidiana resolvemos problemas muy complejos 1, lo nico que sucede es que
no tenemos la prctica de plantearlos, ni describimos la solucin o el camino que usamos para solucionarlo.

1.2. TIPOS DE CONOCIMIENTOS.


En general podemos decir que hay dos Tipos de Conociemientos.
Declarativos: esta compuesto por declaraciones de hechos.
Imperativos: dice como solucionar el problema o como encontrarla solucin.
Pensemos en algunos ejemplos de conocimientos y tratemos de determinar en base a la definicin de
que tipos son.
Ejemplos:
1. Si y es la raiz cuadrada de x, si x al cuadrado es y"
2. Calculo de raiz cuadrada de x:
a) tomo un numero de valor y.
b) Si y*y est cerca de x entonces y es una buena aproximacin de la raiz de x.
c) Si no creo una nueva varible y promediando y , y=(y+x/y)/2, usando la nueva y nueva vuelvo
al paso b.
Veamos otro ejemplo en otro mbito:
1. Freir un huevo en una sartn.
2. Receta para preparar un huevo frito
a) Buscar un huevo que este a temperatura ambiente, si lo tienen en la heladera, retirarlo unos
minutos antes.
a) En una sartn antiadherente ponemos a calentar aceite hasta que humee.
b) Quebrar el huevo y verterlo en la sartn.
c) Agregar sal y pimienta y empujar un poco de aceite sobre la clara.

- 10 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

d) Esperar de 1 a 2 minutos segn el gusto del comensal.


Veamos otro ms grfico:

Cuales son conocimientos Declarativos y cuales Imperativos?


Creo que no se puede dudar en que los ejemplos 2, son Imperativos, ya que claramente indican un
procedimiento de como lograr el cometido.
Como podemos ver en estos dos ejemplos se puede ver claramente que el 2, muestra un procedimiento
de como encontrar el valor de y, que sea la raiz cuadrada de x, no es as en el ejemplo 1, en el que solo
servira para comprobar que y es la raiz de x.
A modo de comentario el procedimiento para el clculo de la raiz de un nmero lo propuso Hern de
Alejandra ( provincia de Egipto) en el siglo 1, fu un Ingeniero y Matemtico.
Definicin de g (guest):

Raiz de 25? g = 3, => 3+3= 9, g= (3+25/3)/2= 5.6666 => 5.6666+5.6666=32.11 g=


(5.666+25/5.666)/2 = (5.04) 5.04*5.40=25.39

Algoritmo
Es una descripcin de como realizar un cmputo, el algoritmo SIEMRPE CONVERGE, TIENE PRINCIPIO Y
FIN, por lo tanto lo que tenemos es un conjunto de instruciones, pasos que pueden ser ejecutados y control
de flujo (flow control) y una condicion de cuando terminar.
Podramos disear un proceso mecnico que realice la raiz cuadrada?
Definitivamente s, una manera es disear una mquina especfica que realice este proceso, por ejemplo
una calculadora.
Para poder entender con claridad el por que una mquina puede realizar esto vamos a ver algunos
fundamentos que permitan luego entender el porque.

1.3. SISTEMAS NUMRICOS


El hombre desde sus orgenes utiliz simbolos para representar cantidades, esto era indispensable para
poder comparar, vender, comprar, etc.
Por supuesto no se cre un nico sistema a nivel mundial, estos fueron apareciendo en distintos lugares
y no necesariamente eran los mismos.
Un sistema de numeracin es un conjunto de smbolos y reglas de generacin que permiten construir
todos los nmeros vlidos.

- 11 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

Una primera clasificacin tiene que ver con la posicin de estos smbolos, en el sistema que conocemos
o aprendemos en primer instancia; el decimal, la posicin del smbolo tiene distinta interpretacin, por
ejemplo si escribimos: 12, sabemos que no es lo mismo que 1 y 2 ya que en el primer caso el 1 del
12 tiene una ponderacin o peso distinto, justamente la ubicacin nos indica que est en la posicin de las
decenas y el 2 est en la posicin de las unidades. Pero no todos los sistemas son como los que
conocemos. Por ejemplo el sistema de numeracin romano.
En el Sistema Romano la V equivale a 5 del Sistema Decimal y la I al uno del sistema decimal, pero si
escribimos IV en el sistema Romano esto equvale al 4 y no al 15 como podramos esperar.
Entonces tenemos dos divisiones.
- Sistemas de numeracin no posicionales
- Sistemas de numeracin posicionales
Nos concentraremos en los distintos sistemas de numeracin posicionales.
Tal como anticipamos un sistema numrico tiene SIMBOLOS, en funcin de los smbolos usados tienen
un nombre, veamos los smbolos de algunos:
Decimal
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

Hexadecimal
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
10

Octal
0
1
2
3
4
5
6
7
10
11
12
13
14
15
16
17
20

Binario
0
1
10
11
100
101
110
111
1000
1001
1010
1011
1100
1101
1110
1111
10000

Tabla 1
Veamos algunas observaciones respecto de la tabla anterior.
- Todos los sistemas tiene el 0 cero.
- Los smbolos reutilizan en algn momento.
- Existen algunos smbolos comunes entre los distintos sistemas numricos.
Ver que por ejemplo en el sistema octal que tiene como smbolos del 0 a 7 (ocho en total, por eso es
octal) luego del 7, el numero ocho se debe lograr reutilizando los smbolos, ya que no tiene mas, en
particular se reutiliza el 1, pero en otra posicin, ms a la derecha: 10(Octal)=8(Decimal).
Para el caso del sistema Binario, la reiteracin o reutilizacin de smbolos, es mas exagerado, ya que
tiene solo dos smbolos (de all la palabra binario), el cero 0 y el uno 1, entonces si queremos lograr el 3
(decimal) deberamos escribir 11(binario).
El elemento simbolo (0 1) del Sistema Numrico Binario es conocidos como: bit, que es un
acrnimo de Binary digit (o dgito binario).
El uso de Nmeros binarios es un rea de la matemtica aplicada al campo de la electrnica, es la base
de los Sistemas Digitales y ello implica tambin, la base de la Estructura de Computadores u Ordenadores.

- 12 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

En general para cualquier nmero entero de cualquier sistema numrico se puede de plantear la
siguiente expresin:

Nen base r = dn-1.rn-1+dn-2.rn-2+dn-3.rn-3+....d1.r1+d0.r0


Donde N es el Nmero en la base r (con r= decimal, octal, binario, hexadecimal)
di : son los dgitos que conforman el nmero, en la posicin i.
r: es la base elegida
Veamos como se aplica esta expresin, por ejemplo:
- Decimal: 23710=2.102+3.101+7.100
- Binario: 1010001112=1.28+0.27+1.26+0.25+0.24+0.23+1.22+1.21+1.20=>
- 1010001112=25610+6410+410+210+110=23710.
- Octal: 3558=3.82+5.81+5.80=19210+4010+510=23710
- Hexadecimal: ED16 = 1410.161+1310.160=22410+1310=23710
Vemos entonces que 23710-decimal =1010001112-binario=3558-octal=ED16-hexa
Esta expresion permite convertir de un sistema numrico a otro, vlido para nmeros enteros de
sistemas numricos posicionales.
Tamben existen otras maneras de convertir, por ejemplo dividiendo. Veamos el caso particular de
convertir un Nmero en Sistema Decimal al Sistema Binario.
7710 = ?
Paso
1
2
3
4
5
6
7

Resto
1-
0-
1-
1-
0-
0-
0

77/2=38
38/2=19
19/2=9
9/2=8
8/2=4
4/2=2
2/2=1-

Nro. Binario
1
01
101
1101
01101
001101
1001101

Si formamos un nmero binario con en resultado del paso 7 y restos de las divisiones por 2 anteriores
tendremos:
10011012=7710
Ahora que sabemos de la existencia de diversos sistemas numricos, veamos algo sobre operaciones
lgicas usando el sistema binario.

1.4. OPERACIONES LGICAS BINARIAS


Para cada uno de estos sistemas numricos existen las operaciones matemticas que se corresponden
con las conocidas en el sistema decimal, solo que la forma en las que se realizan o calculan, difieren de las
operaciones decimales.
Vamos a concentrarlos en las operaciones lgicas que sern de mucha utilidad en nuestro curso.

- 13 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

En 1854, el matemtico britnico George Boole detall un sistema de lgica, este sistema desempeara
un papel fundamental en el desarrollo del sistema binario actual, particularmente en el desarrollo de
circuitos electrnicos.
Este sistema se denomino Algebra de Boole1.
Resumiendo entonces el Algebra de Boole estableci operaciones lgicas en el Sistema Numrico Binario.
Veamos cuales son.

La operacin AND es conocida como un Y lgico.


Por ejemplo:

Hoy es Sbado Y es 14 de Enero: La respuesta SI solo se dar cuando sea Sabado y


sea un da 14 de Enero. Si algunas de estas aternativas no resultan SIMULTANEAMENTE
verdaderas o ciertas, la respuesta sera No.

La persona es alta y de cabello Negro: La respuesta SI solo se dar cuando sea una
persona Alta y sea de cabello Negro. Si algunas de estas aternativas no resultan
SIMULTANEAMENTE verdaderas o ciertas, la respuesta sera No.

Esto se puede plantear en forma binaria de la siguiente manera.


Entrada 1
1
1
0
0

Entrada 2
1
0
1
0

Salida
1
0
0
0

Podemos ver claramente que solo tendremos una salida lgica 1 solo cuando las dos entradas sean 1
SIMULTANEAMENTE.
Notar que implicitamente estamos asociando el 1 a Verdadero (true en Ingles)
La operacin OR es conocida como O lgico.
Veamos algunos ejemplos:
Hoy es Sbado O es 14 de Enero?: La respuesta SI se dar cuando sea Sabado O cuando sea 14 de
Enero. Con que algunas de estas aternativas sean ciertas o verdaderas la respuesta sera SI o Verdadero.

http://es.wikipedia.org/wiki/%C3%81lgebra_de_Boole

- 14 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

La persona es alta O de cabello Negro: La respuesta SI se dar cuando sea una persona Alta O sea
de cabello Negro. Con que algunas de estas aternativas sean ciertas o verdaderas la respuesta sera SI o
Verdadero.
Entrada a
0
0
1
1

Entrada b
0
1
0
1

Salida
0
1
1
1

Por ltimo veamos la Operacin NOT que sera Negar


Entrada
1
0

Salida
0
1

Esta ultima es muy sencilla y como digimos solo cambia el valor, si era 1 o Verdadero o True, lo
convierte en 0 o Falso o False y si la entrada es 0 (cero) False lo convierte en 1 o Verdadero o True.
En este punto, deberamos tener en claro los distintos sistemas numricos en particular el Binario y sus
operaciones lgicas, ahora vamos a tratar dejustificar el por que se usa el sistema numrico binario en
Informtica, mas precisamente en la computadoras.

1.5. EL SISTEMA BINARIO Y LA RELACIN CON LA


ELECTRNICA.
El objetivo es tratar de establecer la relacin entre el Sistema Numrico Binario y la Electrnica Digital

1. Los sistema electrnicos pueden simular de una manera efectiva y fcil, diramos que casi natural,
los 0 ceros y 1 unos, con niveles de tensin, por ejemplo 0 V sera equivalente a un 0 binario o
un Falso y 5V sera equivalente a 1 binario o Verdadero o True.
2. Existen circuitos electnicos que implementan la operaciones AND, OR, NOT, del Algebra de
Boole.
Un Computador u Ordenador est formado por Circuitos Integrados 3

. La electrnica digital es una parte de la electrnica que se encarga de sistemas electrnicos en los cuales la
informacin est codificada en dos nicos estados. A dichos estados se les puede llamar "verdadero" o "falso", o ms
comnmente 1 y 0, refirindose a que en un circuito electrnico digital hay dos niveles de tensin. y el Algebra de
Boole, y el por que se debe a las siguientes razones.
3
Un circuito integrado (CI), tambin conocido como chip o microchip, es una pastilla pequea de material
semiconductor, de algunos milmetros cuadrados de rea, sobre la que se fabrican circuitos electrnicos.

- 15 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

Estos Circuitos Integrados (CI), contienen internamente Miles o Millones de AND o OR Y NOT,
agrupando varios de estos elementos CI, se consigue armar un equipo electrnico digital que opere como
una Comutadora u Ordenador.
Finalmente conseguimos establecer una relacin entre la Electrnica Digital, el Sistema Binario y el
Algebra de Boole, los cuales son la base de una Computadora.

1.6. UNIDADES DE INFORMACIN


Hasta ahora vimos que desde la Electrnica Digital, se pueden tener dos niveles de tensin que se los
poda interpretar como estados lgicos o bits.
Como vimos en la seccin 1.3, se necesitan agrupar los bits para codificar por ejemplo nmeros en el
sistema binario o letras por qu no?
Desde el comienzo se utilizaron grupos de 8 bits en la Electrnica Digital y en particular en los sistemas
de Computos o Micro computos, esta agrupacin se usa ampliamente y se conoce con el nombre de byte
(se pronuncia bait).
Un error comn es confundir bytes y bits, por ejemlpo KB (KiloBytes) con Kb (Kilobits), una "B"
mayscula significa Bytes, mientras que una "b" minscula significa bits.
La velocidades de transmisin se suelen extresar en Kb, por ejemplo un modem puede tener una
velocidad de 54kbps (se pronuncia Kilo bits por Segundo o cabepese), en cambio los medios de
almacenamientos usan como medida de la capacidad de almacenamiento de pen drives, discos, memorias
por ejemplo lo bytes, Megabyte, Kilobytes.
Los prefijos utilizados para los mltiplos del byte 4 normalmente son los mismos que los prefijos del
Sistema Internacional (K para representar Mil, M para representar Milln, etc), as que tambin se utilizan los
prefijos binarios.
Esto se debe a que los prefijos del Sistema Internacional se basan en el Sistema decimal (base 10), y los
prefijos binarios se basan en Sistema binario, base 2.
Por ejemplo:
- En el Sistema decimal un Kilmetro equivale a 1000 metros.
- En el Sistema binario un Kilobyte (se pronucia kbait o kilobait) equivale a 1024 bytes.

1.7. CODIFICACIN DE CARACTERES


4

http://es.wikipedia.org/wiki/Kilobyte

- 16 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

Esta agrupacin de bits conocidas como bytes se utiliz no solamente para tener un sistema numrico, si
no tambin para codificar o representar simbolos utilizados en la escritura (letras, numeros, etc.).
Existen dos asociaciones o codificaciones de bits para representar las letras, nmeros, smbolos (EDCBIC
y ASCII), la que usaremos es la ASCII. Veamos las codificaciones o representaciones binarias de los simbolos
mas usados.

Vemos en la tabla que para simplificar se escribe el equivalente decimal a continuacin de cada nro.
binario.
Observacin:
Es importante en este punto entender que una cosa es la representacin numrica de
un valor, por ejemplo el 1 que en binario sera: 0000 0001, muy diferente de la
representacin del Smbolo 1 que est en el teclado, el cual en ASCII sera: 0011 0001.
Podemos observar que los la representacin de los nmeros es correlativa. 0->48, 1>49, 2->50 etc.
Podemos ver que existe una diferencia de 32 entre a y A, entre b y B....etc.

- 17 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

1.8. MAQUINA DE VON NEUMANN VS. ARQUITECTURA


HARWARD
Como vimos, con la electrnica se pueden resolver operaciones, entre ellas las matemticas. La
calculadora es precisamente un ejemplo de una mquina electrnica que resuelve operaciones, por ejemplo,
la siguiente es una mquina de sumar binaria que suma el bit de la entrada A con el de la entrada B:

Vemos que usando las compuertas vistas, esto sumara y producira el acarreo de una suma.
El problema de este circuito, es que solo se podrn resolver las operaciones que fueron implementadas,
suma en este caso. Esto es un diseo NO flexible y rapidamente los profesionales se dieron cuenta que sera
adecuado poder almacenar los programas u operaciones en otro lugar, de manera que al cambiar esto se
pudiera cambiar completamente las operaciones que se quieran realizar.
Esto se conoci como "arquitectura de programa almacenado" o arquitectura basada en la Mquina de
von Neumann. As pues, la primera divisin entre "hardware" y "software".
En la segunda guera mundial, el Sr. Alan Turing en 1941, hizo una Computadora de Programa fijo que
decodificaba un cdigo secreto alemn, pero pese a ser una mquina muy importante desde el punto de
vista histrico, solo haca eso.
Veamos el ejemplo de una mquina de Von Neumann.

La invencin de Stored Program Computer hizo realmente importante para la sociedad la computadora,
la idea de almacenar las instrucciones y datos (Memoria), por otro lado est la ALU que es donde se realizan
las operaciones, conocida como unidad aritmtica lgica y la Unidad de Control que es la que interpreta las
instrucciones, mueve los datos de la ALU a la memoria y de la memoria a la ALU , realiza las operaciones en
la ALU.
Como dijimos esta es la primera vez que aparecen los trminos Hardware y Software.

Hardware: Sera la parte fsica, lo que se puede tocar, la electrnica, los componentes,
etc.

Software: Sera lo que se almacena en la memoria en un formato binario, no se puede


tocar pero est all.

Una analoga podra ser un CD de msica, el disco compacto sera el Hardware, y la msica el software.

- 18 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

En la memoria se graban datos e instrucciones, este pequeo set de instrucciones permiten hacer de
todo combinandolas, pensemos en una analoga con un Chef, combinando el orden de los ingredientes
puede lograr distintos gustos o comidas incluso.
Alan Turing estableci que problemas se podan resolver en forma computacional y que se necesitaban
solo algunas instrucciones primarias y con ellas se poda hacer lo que uno quera, como ser:
-

Escribir.
Leer.
Sumar.
Mover a la derecha.
Mover a la izquierda.
etc.....

A partir de esto podemos decir que hay un PEQUEO SET DE INSTRUCCIONES o LENGUAJE que me
permite resolver problemas, esto es simplemente genial, ya que cambiando el orden o secuencia del set de
instrucciones podemos cambiar TOTALMENTE.
Una analoga sera al abecedario, la combinacin de 30 letras permite lograr infinitas combinaciones que
permiten escribir todo, incluso, describir cosas iguales de maneras distintas.

1.9 LENGUAJES DE PROGRAMACIN


Tenemos que aclarar que este pequeo set de instrucciones que mencionamos en la seccin anterior, no
es el que se usa en la programacin en terminos generales.
Con el avance surgieron lenguajes de alto nivel, que en realidad una instruccin de este lenguaje de alto
nivel, se corresponde con un conjunto de sentencias, de varias sentencias de bajo nivel, esto facilita la
programacin, veamos un ejemplo a modo ilustrativo.
a=a+1

move acc, # 0x10A8


inc acc
move #0x10A8, acc

Con esto veramos por ejemplo que en un lenguaje de alto nivel algo tan sencillo como un incremento en
uno de una variable, se corresponde con 3 instrucciones de bajo nivel!!
Con el correr del tiempo surgieron varios lenguajes de programacin, tenemos que aclarar que no sera
correcto decir: HAY UN LENGUAJE DE PROGRAMACIN MEJOR QUE OTRO, lo que si sera correcto decir, es
que algunos estn orientados para algn fin en particular, los que los hacer mejor en esa rea.
Resumiento, un Lenguaje de programacion provee un set de instrucciones que en realidad son una
combiancin del set primitivo de instrucciones.
Lo que hace diferente un programa de otro es la manera en que se combinan esas instrucciones, lo
bueno y lo malo de esto es que la computadora con el programa siempre har exactamente lo que uds. le
digan que haga!!.
En otras palabras .. si el programa no funciona... la culpa es del que hizo el programa.
Observacin: Es mejor que un amigo incondiconal o una esposa enamorada! , siempre hace lo que le
decimos :-).

- 19 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

Veamos algunos nombres de lenguajes de Programacin:


BASIC Programacin para fines educativos. Lenguaje interpretado
C Programacin de sistema. Lenguaje compilado.
C++ Programacin de sistema orientado a objeto.Lenguaje compilado.
Cobol Administracin. Lenguaje compilado
Fortran Clculo. Lenguaje compilado
Java Programacin orientada a Internet. Lenguaje intermediario
MATLAB Clculos matemticos. Lenguaje interpretado
Clculos matemticos Clculos matemticos. Lenguaje interpretado
LISP Inteligencia artificial. Lenguaje intermediario
Pascal Educacin. Lenguaje compilado
PHP Desarrollo de sitios web dinmicos. Lenguaje interpretado
Inteligencia artificial Inteligencia artificial. Lenguaje interpretado
Perl Procesamiento de cadenas de caracteres. Lenguaje interpretado
Phyton De caracter General. Lenguaje interpretado.

1.10 LENGUAJES INTERPRETADOS VS LENGUAJES


COMPILADOS
Existen dos grandes divisiones en los lenguajes de programacin:
- los interpretados
- los compilados.
Un lenguaje interpretado es un lenguaje de programacin que est diseado para ser ejecutado por
medio de un intrprete. Un intrprete o interpretador es un programa informtico capaz de analizar y
ejecutar el programa. Tal es el caso de Java, Perl, Python, Ruby, ASP, Bash por ejemplo. Entonces uno
escribe un programa, otro lo recorre, realizando lo que indican las instrucciones. Estos programas se suelen
llamar Scripts.
Los lenguajes compilados son lenguajes de alto nivel en los que las instrucciones se traducen del
lenguaje que solo entiende el procesador, se crea OTRO PROGRAMA, este se llama cdigo de mquina y
este es el que se ejecuta. Este es el caso de C o C++.
Normalmente los lenguajes compilados corren ms rpido que los intepretados, pero los programas
interpretados tienen ms facilidad de depuracin y su gran dinamismo, lo que aumenta su rendimiento.

- 20 -

TALLER DE INFORMTICA

CAPITULO 1. Introduccin a la Informtica

Existe una comparacin de los lenguajes basados en la cantidad de palabras o set de instrucciones
bsicas, en particular tenemos que decir que el C tiene 32 palabras y el C++ un total de 64 palabras. Estas
palabras son conocidas como Reservadas.

1.11. TIPOS DE ERRORES


En general, los lenguajes se componen de estructuras que se deben respetar, respetando el significado
de sus elementos y expresiones, el no cumplimiento de estas reglas puede ocacionar errores del tipo:
Errores sintcticos
Ejemplo de Error Sintctico: (errores tipogrficos): oy ace frio.
Errores semnticos
Ejemplo de Error Semntico (del griego semantikos, "lo que tiene significado") Los errores
semnticos son ms sutiles. Un error semntico se produce cuando la sintaxis del cdigo es correcta,
pero la semntica o significado no es el que se pretenda. La construccin obedece las reglas del
lenguaje, y por ello el compilador o intrprete no detectan los errores semnticos. Los compiladores e
intrpretes slo se ocupan de la estructura del cdigo que se escribe, y no de su significado. Un error
semntico puede hacer que el programa termine de forma anormal, con o sin un mensaje de error.
Hablando en trminos coloquiales, puede hacer que el equipo se quede "colgado".Sin embargo, no todos
los errores semnticos se manifiestan de una forma tan obvia
El burro de mi primo se perdi en la feria.
int x, z=3, y; y=x+z;
Normalmente los errores del tipo Sintctico suelen detectarse de una manera muy facil, ya que es un
error que no respeta la sintaxis del lenguaje de programacin y esto se puede detectar facilmente.
Lo que suele ser mas dificil de establecer es los errores del tipo semntico.
Hay otros tipos de errores como ser:
Errores de Ejecucin
Un error de ejecucin se produce cuando el ordenador no puede ejecutar alguna instruccin de forma
correcta.
Ejemplo: 'a' / 2.5, no se puede dividir una letra por 2.5.
Errores de Lgica
Se denominan lgicos, los errores que no hacen bloquear un programa, pero la lgica que representan
contiene un error, pueden ser derivados de un error de Semntica. Por ejemplo. Si quiero calcular el
promedio de tres valores: 5+9+2/3 no es lo mismo que (5+9+2)/3
Cuando los programas no hacen lo que Uds. quieren, probablemente tengan que mirar de nuevo lo que
hicieron y corregir este procedimiento es conocido como Debugin o Depuracion.
Que alternativas tenemos cuando un programa no hace lo que queremos:
1) Crash.Termina repentinamente tirando un cartel u error o no.
2) Never stop.nunca termina, puede ser dificil de detectar, se dice que tiene un loop infinito.
3) Run Completion & producir mal la respuesta.

- 21 -

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

CAPITULO 2.
INTRODUCCION A LA PROGRAMACION
2.1. ANLISIS Y RESOLUCIN DE PROBLEMAS.
Un problema es un asunto o un conjunto de cuestiones que se plantean para ser resueltas.
La naturaleza de los problemas vara con el mbito o con el contexto donde estn planteados;
consideramos aqu slo aquellos problemas cuya solucin se puede calcular utilizando una serie de reglas
introducidas en la computadora.
No existe un mtodo universal que permita resolver cualquier problema.
En general, la resolucin de problemas es un proceso creativo donde el conocimiento, la habilidad y la
experiencia tienen un papel importante.
El proceder de manera sistemtica (sobre todo si se trata de problemas complejos) puede ayudar en la
solucin.
Un programador de computadoras es una persona que, antes que nada, resuelve problemas. Para ser
bueno deber resolver los problemas de un modo riguroso y sistemtico.
En general, la solucin de problemas con la computadora se puede dividir en tres etapas:
Anlisis del problema
Diseo del algoritmo
Implementacin del algoritmo en la computadora

Anlisis del
Problema

Diseo del
Algoritmo

Programa de
Computadora

2.1.1. Anlisis del Problema


El anlisis del problema es la primera fase en la resolucin de un problema con la computadora.
El objetivo del anlisis es comprender y definir claramente la naturaleza del problema.
En esta etapa es fundamental establecer con claridad que har el programa que se pretende construir.
No se puede abordar una solucin mientras no se sepa adonde se quiere llegar.
Para poder definir el problema con precisin se requiere especificar con detalle cuales sern los datos de
entrada y cuales los datos de salida.
As pues, el anlisis del problema comprende los siguientes aspectos:
Definicin del problema.
Especificaciones de entrada.
Especificaciones de salida.

2.1.2. Diseo del Algoritmo


Si en la fase de anlisis en el proceso de programacin se determina qu hace el programa. En la fase
de diseo se determina cmo hace el programa la tarea solicitada; en esta etapa se construye un algoritmo
que resuelva el problema analizado utilizando una herramienta algortmica como el diagrama de flujo o el
pseudocdigo.
Se decide como har el algoritmo para producir los datos de salida sobre la base de los datos de
entrada. Esto puede requerir de acciones secuenciales, tomas de decisiones y repeticiones de procesos.

22

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

Para un diseo eficiente del algoritmo es importante abordar la solucin mediante una metodologa de
diseo.
Los mtodos utilizados para el proceso del diseo se basan en el conocido divide y vencers es decir,
la resolucin de un problema complejo se realiza dividendo el problema en subproblemas y a continuacin
dividiendo estos subproblemas en otros de nivel mas bajo, hasta que sea implementada una solucin en la
computadora.
Este mtodo se conoce tcnicamente como diseo descendente (top-down) o modular.
Cada programa bien diseado consta de un programa principal (el mdulo de nivel mas alto) que llama a
subprogramas (mdulos) de nivel mas bajo, que a su vez pueden llamar a otros subprogramas.
El diseo del algoritmo es independiente del lenguaje de programacin en el que se vaya a codificar
posteriormente.

Definicin de Algoritmo
El trmino deriva de la traduccin al latn de la palabra rabe Alkhowarismi, nombre de un matemtico
y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y
finitos.
No todos ellos pueden ser ejecutados por la computadora. Consideramos aquellos algoritmos que
expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden ser introducidas en la
computadora, a este tipo de algoritmos se denominan Algoritmos Computacionales.
En la resolucin de un problema con la computadora la parte pensante est en el algoritmo; as pues la
eficacia de un programador no esta en conocer la herramienta de programacin, cosa necesaria, sino en
saber resolver problemas con la computadora para lo cual se requiere conocer un concepto conocido como
metodologa de la programacin cuyo eje central es el algoritmo.
Los algoritmos son independientes del lenguaje de programacin y de la mquina en la que se ejecuta.

Un Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que


conducen a la solucin de un problema.

Caractersticas del Algoritmo

preciso, tiene que indicar el orden de realizacin en cada paso.


definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el
mismo resultado.
finito, es decir, que el algoritmo tiene que tener un nmero determinado de pasos.
debe producir un resultado en un tiempo finito.

2.1.3. Implementacin del Algoritmo en la Computadora.


Esta etapa es relativamente mecnica y consiste en codificar el algoritmo siguiendo las reglas sintcticas
y semnticas de un determinado lenguaje de programacin.
Al resultado de la codificacin se denomina cdigo fuente o programa fuente.
Luego de ello, el programa fuente debe ser ejecutado y probado para verificar si los resultados
obtenidos son los esperados.
La verificacin del programa se efecta con una amplia variedad de datos de entrada, llamados datos de
test o datos de prueba, que determinarn si el programa tiene errores ("bugs").
Los datos de prueba comprenden: valores normales de entrada, valores extremos de entrada que
comprueben los lmites del programa y valores de entrada que comprueben aspectos especiales del
programa.
Si los resultados obtenidos no son los esperados se procede a depurar el programa. La depuracin
consiste en encontrar los errores del programa para efectuar las correcciones pertinentes.

23

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

As pues, la implementacin de un algoritmo en la computadora comprende los siguientes aspectos:


Codificacin
Compilacin y ejecucin
Verificacin
Depuracin
Documentacin
Codificacin: Es la escritura en un lenguaje de programacin de la representacin de un algoritmo, se
ha convertido en un programa fuente.
Compilacin y ejecucin: El programa fuente debe ser traducido a lenguaje mquina. Este proceso se
realiza con el compilador y el sistema operativo. Se obtiene el programa objeto, el cual todava no es
ejecutable directamente.
Al no existir errores en el programa fuente se debe instruir al sistema operativo para que efecte la fase
de montaje o enlace, del programa fuente con las libreras del programa del compilador. Este proceso de
montaje produce un programa ejecutable.
Cuando se ha creado un programa ejecutable este ya se puede ejecutar desde el sistema operativo con
solo teclear su nombre.

Programa Fuente

Compilador (traductor)

Programa Objeto

Montador (link)

Programa Ejecutable

24

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

2.2. ETAPAS EN LA CREACIN DE PROGRAMAS.


Retomando los conceptos introducidos en el punto 2.1., los principales pasos o metodologa que se debe
seguir para resolver problemas aplicando tcnicas de programacin son:

2.2.1. Anlisis del Problema.


Consiste en entender de qu se trata el problema planteado y esbozar su posible solucin, concluyendo
con una clara definicin de tres aspectos:
1) qu es lo que nos piden?, es decir, la definicin del resultado o solucin deseada (para qu).
2) cmo obtener lo que nos piden? (qu hacer).
3) qu necesitamos para obtener los resultados pedidos? (con qu).
En resumen, determinar: las operaciones o procesos que se van a realizar (qu hacer) y sus respectivas
entradas (con qu) y salidas (para qu).
Entrada: son los argumentos (variables o constantes) que se requieren para resolver un problema.
Salida: son los resultados (argumentos) que se desean obtener una vez resuelto el problema.
Proceso: es el procedimiento(s) u operacin(es) que deben efectuarse sobre las entradas para obtener
las salidas deseadas.
Puede ser de gran utilidad elaborar una tabla de especificacin de argumentos requeridos en la solucin
del problema que contemple los siguientes aspectos:
descripcin del argumento

identificador

tipo

condicin

restriccin

En la tabla aparecen detalladas bajo qu restricciones se ha de operar

2.2.2. Diseo.
Consiste en disear cmo hace el programa la tarea solicitada. En forma general consiste en dividir el
programa en subprogramas y cada subprograma en mdulos.
Ir de lo ms general a lo ms especfico.

El criterio de descomposicin ms utilizado es el de tipo funcional, el cual produce una estructura


jerrquica en la que cada mdulo ejecuta una o ms funciones.

2.2.3. Implementacin del Algoritmo en la Computadora


El item Implementacin del Algoritmo en la Computadora del punto 2.1. se puede descomponer en:

a) Codificacin.
Es la escritura en un lenguaje de programacin de la representacin del algoritmo desarrollado en la
etapa de diseo. El resultado de la codificacin es un programa fuente.

25

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

b) Compilacin y Ejecucin.
Es el proceso de traduccin del programa fuente al lenguaje de mquina. Este proceso se realiza con el
compilador y el Sistema Operativo. El resultado, si no hay errores, es la obtencin del programa objeto que
todava no es ejecutable directamente. Luego, mediante el Sistema Operativo se realiza la carga del
programa objeto con las libreras del programa compilador, el resultado es un programa ejecutable. Cuando
el programa ejecutable se ha creado, se puede ejecutar el programa desde el Sistema Operativo
generalmente con slo teclear su nombre. Si no hay errores se obtiene como salida los resultados del
programa.

c) Verificacin y Depuracin.
Es el proceso de probar que el programa trabaje correctamente y cumpla con los requerimientos del
usuario.
Verificar: es el proceso de ejecucin del programa con una amplia variedad de datos de entrada (test o
pruebas) que determinarn si el programa tiene errores.
Depurar: es el proceso de encontrar los errores del programa y corregir o eliminar dichos errores.
Tipos de Errores:
a) Errores de compilacin: suelen ser errores de sintaxis.
b) Errores de ejecucin: suelen ser instrucciones que la computadora comprende pero que no puede
ejecutar. Ejemplo: divisiones por cero, races negativas, etc.
c) Errores de lgica: se producen en la lgica del programa, en el diseo del algoritmo. Se detectan
porque los resultados son incorrectos.

2.2.4. Documentacin y Mantenimiento.


Consta de la descripcin de los pasos a dar en el proceso de resolucin de un problema.
El mantenimiento consiste en la actualizacin de los programas con los cambios requeridos por el
usuario o correccin de posibles errores futuros.
Grficamente la metodologa puede ilustrarse de la siguiente manera:

26

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

2.3. PROGRAMAS: CONCEPTO, CARACTERSTICAS.


Una vez que la solucin de un problema ha sido expresada mediante un algoritmo el paso siguiente es
convertirlo a programa para lo cual se elige un lenguaje de programacin.

Un programa es la implementacin de un algoritmo en un determinado lenguaje


de programacin.
Un programa puede considerarse como una secuencia de acciones o
instrucciones que manipulan un conjunto de objetos, los datos.

2.3.1. Partes de un programa.


Contiene dos bloques:
Bloque de declaraciones: en l se especifican todos los objetos que utiliza el programa
(constantes, variables, tablas, registros, archivos, etc.).
Bloque de instrucciones: constituido por el conjunto de operaciones que se han de realizar para
la obtencin de los resultados deseados.

Partes principales de un programa


Dentro del bloque de instrucciones de un programa podemos diferenciar tres partes fundamentales:
Entrada de datos: la constituyen todas aquellas instrucciones que toman datos de un dispositivo
externo, almacenndolos en la memoria central para que puedan ser procesados.
Proceso: est formado por las instrucciones que modifican los objetos a partir de su estado
inicial hasta el estado final, dejando stos disponibles en la memoria central.
Salida de resultados: conjunto de instrucciones que toman los datos finales de la memoria
central y los envan a los dispositivos externos.

27

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

2.4. TCNICAS DE PROGRAMACIN.


2.4.1 Programacin no Estructurada.
Comnmente, las personas empiezan a aprender a programar escribiendo programas pequeos y
sencillos consistentes en un solo programa principal. Aqu "programa principal" se refiere a una secuencia de
comandos o instrucciones que modifican datos que son a su vez globales en el transcurso de todo el
programa.
Programacin no Estructurada => El programa principal opera directamente sobre datos globales.

Programa
principal
datos
sta tcnica de programacin ofrece desventajas una vez que el programa se hace suficientemente
grande. Por ejemplo, si la misma secuencia de instrucciones se necesita en diferentes situaciones dentro del
programa, la secuencia debe ser repetida.
Esto ha conducido a la idea de extraer estas secuencias, darles un nombre y ofrecer una tcnica para
llamarlas y regresar desde estos procedimientos.

2.4.2 Programacin Procedimental


Con la programacin procedimental se pueden combinar las secuencias de instrucciones repetibles en un
solo lugar.
Una llamada de procedimiento se utiliza para invocar al procedimiento, despus de que la secuencia es
procesada, el flujo de control contina exactamente despus de la posicin donde la llamada fue hecha.
Ejecucin de procedimientos => Despus del procesamiento, el flujo de controles procede donde la
llamada fue hecha.

Programa
principal
Procedimiento

Al introducir parmetros as como procedimientos de procedimientos (sub procedimientos) los programas


ahora pueden ser escritos en forma ms estructurada y libres de errores.
Por ejemplo, si un procedimiento ya es correcto, cada vez que es usado produce resultados correctos.
Por consecuencia, en caso de errores, se puede reducir la bsqueda a aquellos lugares que todava no han
sido revisados.

28

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

De este modo, un programa puede ser visto como una secuencia de llamadas a procedimientos. El
programa principal es responsable de pasar los datos a las llamadas individuales, los datos son procesados
por los procedimientos y, una vez que el programa ha terminado, los datos resultantes son presentados.
As, el flujo de datos puede ser ilustrado como una grfica jerrquica, un rbol, como se muestra en la
siguiente figura para un programa sin sub procedimientos.
Programacin Procedimental => El programa principal coordina las llamadas a procedimientos y pasa los
datos apropiados en forma de parmetros.

Programa
principal
datos

Procedimiento 2

Procedimiento 3

Para resumir: tenemos ahora un programa nico que se divide en pequeas piezas llamadas
procedimientos o funciones. Para posibilitar el uso de procedimientos generales o grupos de procedimientos
tambin en otros programas, aqullos deben estar disponibles en forma separada. Por esa razn, la
programacin modular permite el agrupamiento de procedimientos dentro de mdulos.

2.4.3 Programacin Modular


En la programacin modular, los procedimientos con una funcionalidad comn son agrupados en
mdulos separados. Un programa por consiguiente, ya no consiste solamente de una seccin. Ahora est
dividido en varias secciones ms pequeas que interactan a travs de llamadas a procedimientos y que
integran el programa en su totalidad.
Programacin Modular => El programa principal coordina las llamadas a procedimientos en mdulos
separados y pasa los datos apropiados en forma de parmetros.

Programa
principal
datos

mdulo 1

mdulo 2

datos + datos 1

datos + datos 2

procedim. 1

procedim. 2

procedim. 3

Cada mdulo puede contener sus propios datos. Esto permite que cada mdulo maneje un estado
interno que es modificado por las llamadas a procedimientos de ese mdulo. Sin embargo, solamente hay un
estado por mdulo y cada mdulo existe slo una vez en todo el programa.

29

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

2.5. EJERCICIO PARA ILUSTRAR LA METODOLOGA


1. Planteamiento del problema
Calcular la resistencia combinada cuando tres resistencias (R1, R2 y R3) estn conectadas en paralelo.
La frmula de la resistencia combinada es:

El programa debe producir la siguiente salida: Resistencia Combinada en Ohmios es: XXX
2. Anlisis
a) Especificacin funcional: suponiendo que llamo RC a la Resistencia Combinada, del anlisis deduzco
que requiero de R1, R2 y R3 (entradas) para poder realizar el clculo (proceso) de la RC (salida).

b) Especificacin de los argumentos: se trata de la documentacin de los argumentos utilizados.


argumentos

identificador

tipo

condicin

restriccin

Resistencia 1

R1

real

Variable

>0

Resistencia 2

R2

real

Variable

>0

Resistencia 3

R3

real

Variable

>0

Resistencia Combinada

RC

real

Variable

>0

3. Diseo
Especificacin del Programa:
Nombre del Programa: resistencia
Funcin: Calcular la Resistencia Combinada de 3 resistencias conectadas en paraleloArgumentos: R1, R2, R3, RC
Argumentos de Entrada: R1, R2, R3
Argumentos de Salida: RC
Lenguaje de Programacin: C++
Algoritmo: puede utilizarse pseudocdigo o diagrama de flujo.
Diagrama de flujo o algoritmo grfico:
INICIO
R1, R2, R3

RC

FIN

30

TALLER DE INFORMTICA

CAPITULO 2. Introduccin a la Programacin

4. Codificacin en C++

/* PROGRAMA CALCULO DE RESISTENCIA


Programa escrito por: NN
Fecha: 99/99/99 */
//Este programa calcula la resistencia combinada de tres resistencias conectadas en paralelo
#include <iostream>
using namespace std;
int main()
{
float R1,R2,R3,RC;
cout << Ingrese los valores de las 3 resistencias;
cin >> R1;
cin >> R2;
cin >> R3;
RC = 1 / (1/R1+1/R2+1/R3);
cout << La resistencia combinada en ohmnios es << RC;
return 0;
}
5. Edicin
Tipear el programa anterior (programa fuente) en el computador.
6. Compilacin y Ejecucin del programa editado
Para la obtencin de los resultados previa correccin de posibles errores de sintaxis o de ejecucin.
7. Verificacin y Depuracin de los resultados
Para corregir los posibles errores de lgica que puedan existir.
8. Documentacin
9. Mantenimiento

PREGUNTAS DE REPASO
1. Cules son las etapas para la solucin de problemas con la computadora?
2. Qu es un algoritmo? Qu caractersticas tiene que tener?
3. Cules son los pasos para poner un programa en funcionamiento?
4. Qu es un programa? Cules son las partes de un programa?
5. Nombre las caractersticas de las tcnicas de programacin.
6. Aplicar la metodologa propuesta en el punto para resolver el siguiente problema: Cuntas
horas tardar en llenarse un estanque de 270.480 litros si 4 bombas vierten 23 litros por minuto
cada una?

31

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

CAPITULO 3.
ALGORITMOS
Quien quiere hacer algo encuentra un medio;
quien no quiere hacer nada encuentra una excusa.
Proverbio chino

3.1. CONCEPTO. CARACTERSTICAS. DISEO.


3.1.1. Concepto
El trmino deriva de la traduccin al latn de la palabra rabe Alkhowarismi, nombre de un matemtico
y astrnomo rabe que escribi un tratado sobre manipulacin de nmeros y ecuaciones en el siglo IX.
Un algoritmo es un mtodo para resolver un problema mediante una serie de pasos precisos, definidos y
finitos.
No todos ellos pueden ser ejecutados por la computadora. Consideramos aquellos algoritmos que
expresan soluciones usando reglas cuantitativas cuyas instrucciones pueden ser introducidas en la
computadora, a este tipo de algoritmos se denominan Algoritmos Computacionales.
En la resolucin de un problema con la computadora la parte pensante est en el algoritmo; as pues la
eficacia de un programador no esta en conocer la herramienta de programacin, cosa necesaria, sino en
saber resolver problemas con la computadora para lo cual se requiere conocer un concepto conocido como
metodologa de la programacin cuyo eje central es el algoritmo.
Los algoritmos son independientes del lenguaje de programacin y de la mquina en la que se ejecuta.

Un

Algoritmo es un conjunto ordenado y finito de pasos o instrucciones que


conducen a la solucin de un problema.

3.1.2. Caractersticas

preciso, tiene que indicar el orden de realizacin en cada paso.

definido, es decir, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el
mismo resultado.

finito, es decir, que el algoritmo tiene que tener un nmero determinado de pasos.

debe producir un resultado en un tiempo finito.

3.1.3. Diseo
Existen diferentes tcnicas utilizadas durante el diseo para la representacin de algoritmos:
a. Pseudocdigo.
b. Diagrama de flujo de datos.

a) Pseudocdigo
Se trata de un lenguaje informal que describe el proceso.

32

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

El pseudocdigo es una herramienta algortmica que permite escribir pseudoprogramas (una imitacin de
un programa real) utilizando un lenguaje de pseudoprogramacin que es una imitacin de los lenguajes de
programacin de alto nivel. Debe ser: claro, inequvoco e informal.

Pseudocdigo es una combinacin de smbolos (+, -, *, /, %, >, >=, <, <=, !=,
==, y, o, no), trminos (Leer, Imprimir, Abrir, Cerrar, Hacer...Mientras,
Mientras...Hacer, Para...Mientras, etc) y otras caractersticas comnmente
utilizadas en uno o ms lenguajes de alto nivel.
No existen reglas que determinen que es o no es un pseudocdigo, sino que vara de un programador a
otro.
El objetivo del pseudocdigo es permitir al programador centrarse en los aspectos lgicos de la solucin
evitando las reglas de sintaxis de un lenguaje de programacin. Posteriormente el pseudocdigo debe ser
traducido a programa usando un lenguaje de programacin.

Por Ejemplo:
Disee un algoritmo que permita hallar la suma y el promedio de tres n
En castellano:

En ingls:

INICIO

BEGIN

LEER numero1, numero2, numero3

READ numero1, numero2, numero3

suma = numero1 + numero2 + numero3

suma = numero1 + numero2 + numero3

promedio = suma / 3

promedio = suma / 3

IMPRIMIR suma, promedio

WRITE suma, promedio

FIN

END

b) Diagrama de flujo de datos


Se trata de un diagrama visual con una serie limitada de elementos con significado que permiten
formalizar de forma grfica un algoritmo. Los significados son muy variados.
Los diagramas de flujo definen el concepto de flujo de datos, que nos indica la direccin que siguen los
datos en el proceso (de arriba hacia abajo, como si se tratara de lquido que fluye de arriba abajo).

Un diagrama de flujo es un diagrama que utiliza smbolos (cajas) estndar y que


tiene los pasos del algoritmo escrito en esas cajas unidas por flechas,
denominadas lneas de flujo, que indican la secuencia en que se deben ejecutar.

Los elementos ms utilizados en un diagrama de flujo representan: Proceso, Decisin, Conectores, Fin,
Entrada/Salida, Direccin del Flujo.
En resumen:
En un diagrama de flujo siempre encontramos:

Una caja de Inicio

Otra caja de Fin

Otras cajas en forma de rombo, paralelogramos, rectangulares.

Cada smbolo representa el tipo de operacin a ejecutar y el diagrama representa la secuencia en que se
deben ejecutar dichas operaciones. Ms adelante veremos en detalle la simbologa utilizada en los
diagramas de flujo.

33

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Las lneas de flujo representan el flujo secuencial de la lgica del programa.

El rectngulo significa algn tipo de proceso en la computadora, acciones a


realizar.
El paralelogramo es un smbolo de entrada que representa cualquier tipo de
entrada de datos al programa.
Este es un smbolo de salida que representa cualquier tipo de salida del
programa.

El rombo es una caja de decisin que representa respuestas s/no o diferentes


alternativas.

Cada diagrama comienza y finaliza con un smbolo terminal.

Por Ejemplo:
Disee un algoritmo que permita hallar la suma y el promedio de tres n.

Inicio

N1 0
N2 0
N3 0
N1 0
Leer N1,
N2, N3

PROM (N1 + N2 + N3) / 3


N1 0
Imprimir PROM

Fin

34

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.2. APLICACIN DE ESTRATEGIAS DE RESOLUCIN DE


PROBLEMAS.
Es imposible ensear a resolver problemas (es casi como ensear a ser inteligente). Para resolver
problemas no existen frmulas mgicas; no hay un conjunto de procedimientos o mtodos que aplicndolos
lleven necesariamente a la resolucin del problema, an en el caso de que tenga solucin. Pero de ah no
hay que sacar en consecuencia una apreciacin ampliamente difundida en la sociedad: la nica manera de
resolver un problema sea por "ideas luminosas", que se tienen o no se tienen.
Es evidente que hay personas que tienen ms capacidad para resolver problemas que otras de su misma
edad y formacin parecida, que suelen ser las que aplican (generalmente de una manera inconsciente) toda
una serie de mtodos y mecanismos que suelen resultar especialmente indicados para abordar los
problemas.
El conocimiento y la prctica de los mismos es justamente el objeto de la resolucin de problemas, y
hace que sea una facultad entrenable, un tema en el que se puede mejorar con la prctica. Pero para ello
hay que conocer los procesos y aplicarlos de una forma planificada, con mtodo.
Es ya clsica, y bien conocida, la formulacin que hizo Polya (1945) de las cuatro etapas esenciales
para la resolucin de un problema, que constituyen el punto de arranque de todos los estudios
posteriores:
1) Comprender el problema
Se trata de entender cul es el problema que tenemos que abordar, dados los diferentes lenguajes que
hablan el usuario que solicita y el informtico.
Para ello se debe:
- Leer el enunciado despacio.
- Responder a las preguntas Cules son los datos? (lo que conocemos) y Cules son las incgnitas? (lo
que buscamos)
- Hay que tratar de encontrar la relacin entre los datos y las incgnitas.
- Si se puede, se debe hacer un esquema o dibujo de la situacin.
2) Trazar un plan para resolverlo
Hay que plantear el plan para resolver el problema de una manera flexible y recursiva, alejada del
mecanicismo.
- Este problema es parecido a otros que ya conocemos?
- Se puede plantear el problema de otra forma?
- Imaginar un problema parecido pero ms sencillo.
- Suponer que el problema ya est resuelto; cmo se relaciona la situacin de llegada con la de partida?
- Se utilizan todos los datos cuando se hace el plan?
3) Poner en prctica el plan
Tambin hay que plantearla de una manera flexible y recursiva, alejada del mecanicismo. Y tener en
cuenta que el pensamiento no es lineal, que hay saltos continuos entre el diseo del plan y su puesta en
prctica.
- Al ejecutar el plan se debe comprobar cada uno de los pasos.
- Se puede ver claramente que cada paso es correcto?
- Antes de hacer algo se debe pensar: qu se consigue con esto?

35

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

- Se debe acompaar cada operacin matemtica de una explicacin contando lo que se hace y para qu
se hace.
- Cuando se tropieza con alguna dificultad que nos deja bloqueados, se debe volver al principio,
reordenar las ideas y probar de nuevo.
4) Comprobar los resultados
Es la etapa ms importante en la vida diaria, porque supone la confrontacin con el contexto del
resultado obtenido por el modelo del problema que hemos realizado, y su contraste con la realidad que
queramos resolver.
- Leer de nuevo el enunciado y comprobar que lo que se peda es lo que se ha averiguado.
- Debemos fijarnos en la solucin. Parece lgicamente posible?
- Se puede comprobar la solucin?
- Hay algn otro modo de resolver el problema?
- Se puede hallar alguna otra solucin?
- Se debe acompaar la solucin de una explicacin que indique claramente lo que se ha hallado.
- Se debe utilizar el resultado obtenido y el proceso seguido para formular y plantear nuevos problemas.
Otras posibles etapas en la resolucin de problemas son:
a) Anlisis:
1. Trazar un diagrama.
2. Examinar casos particulares.
3. Probar a simplificar el problema.
b) Exploracin:
1. Examinar problemas esencialmente equivalentes.
2. Examinar problemas ligeramente modificados.
3. Examinar problemas ampliamente modificados.
c) Comprobacin de la solucin obtenida:
1. Verifica la solucin los criterios especficos siguientes?:
a) Utiliza todos los datos pertinentes?
b) Est acorde con predicciones o estimaciones razonables?
c) Resiste a ensayos de simetra, anlisis dimensional o cambio de escala?
2. Verifica la solucin los criterios generales siguientes?:
a) Es posible obtener la misma solucin por otro mtodo?
b) Puede quedar concretada en casos particulares?
c) Es posible reducirla a resultados conocidos?
d) Es posible utilizarla para generar algo ya conocido?

36

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.3. ESTRUCTURAS BSICAS: LINEALES, SELECTIVAS Y


REPETITIVAS
Cada proceso est compuesto de subprocesos y estos ltimos a su vez, se componen de otros
subprocesos ms elementales. Es as como los programas estn formados por un conjunto de funciones,
estas por subfunciones y as sucesivamente hasta llegar a las operaciones elementales del procesador u
operaciones de mquina.

Las

instrucciones son construcciones de lenguaje mquina (cadenas finitas de


dgitos) que permiten invocar a las operaciones elementales.

Por cada operacin disponible hay una y slo una instruccin.


En la mayora de programas que se utilizan actualmente el resultado que deseamos que nos devuelva la
computadora depender de los valores iniciales introducidos por el usuario de nuestra aplicacin.
En la programacin interactiva el usuario del programa puede interactuar con el programa e introducir
datos mientras se ejecuta el programa.
Para facilitar la entrada de datos, la computadora debe indicar al usuario el momento en que debe
introducir los datos; se deben visualizar mensajes interactivos con indicaciones al usuario.

3.3.1. Estructuras bsicas lineales


3.3.1.1. Instruccin de lectura
Existen instrucciones que sirven para introducir valores en nuestras aplicaciones.
Los dispositivos de entrada permiten que el usuario interacte con la mquina. Por medio de los
dispositivos de entrada el usuario ingresa los datos a procesar en el sistema.
Las instrucciones de entrada son operaciones que dan acceso al programador a las funciones bsicas de
los dispositivos de E, permitindole capturar datos de los dispositivos de entrada y asignarlos a variables
para operar con ellos.
Los datos se pueden almacenar en memoria de tres formas diferentes:
* asociados con constantes
* asignados a una variable con una sentencia de asignacin
* asignados a una variable con una sentencia de lectura.

La instruccin de entrada o lectura de datos permite asignar valores desde


dispositivos para almacenarlos en memoria.
Algunos ejemplos de dispositivos de entrada son: teclado, mouse, etc.
La operacin de entrada se representa de la siguiente manera:
Diagrama de Flujo

Lista de variables

Pseudocdigo
LEER (Mensaje, lista de variables)
READ (Mensaje, lista de variables)

37

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Con esta instruccin el programa se detiene y el sistema pide un valor haciendo aparecer una ventana
con un Mensaje, el usuario deber introducir el valor que se le pide.

3.3.1.2. Instruccin de escritura


A medida que se realizan clculos en el programa, se necesitan visualizar los resultados. Esto se conoce
como operacin de escritura o salida.
En la instruccin de salida se pueden incluir adems mensajes de texto y variables.

La

instruccin de salida o escritura de datos permite visualizar resultados


mediante los dispositivos de salida.

Algunos ejemplos de dispositivos de salida son: monitor, impresora, etc.


La operacin de salida se representa de la siguiente manera:
Diagrama de Flujo

Pseudocdigo
IMPRIMIR(Mensaje, lista de variables)
WRITE (Mensaje, lista de variables)

Lista de
variables

Por Ejemplo:
El clsico "Hola Mundo": imprimir en pantalla la frase 'Hola Mundo'.
Diagrama de Flujo
INICIO
HOLA MUNDO

Pseudocdigo
INICIO
IMPRIMIR(HOLA MUNDO)
FIN

FIN

Por Ejemplo:
Operaciones de Entrada / Salida: El algoritmo permite sumar dos nmeros ingresados por el usuario

38

TALLER DE INFORMTICA

Diagrama de Flujo
INICIO
Introduce el primer nmero:
num1
Introduce el segundo nmero:

CAPITULO 3. Algoritmos

Pseudocdigo
INICIO
IMPRIMIR('Introduce el primer nmero:')
LEER (num1)
IMPRIMIR('Introduce el segundo nmero:')
LEER (num2)
IMPRIMIR ('El total es: ' , num1 + num2)
FIN

Num2
El total es: , num1 + num2
FIN
Esto debe visualizar en pantalla lo siguiente:
Introduce el primer nmero: 89 <Intro presionado por el usuario>
Introduce el segundo nmero: 1 <Intro presionado por el usuario>
El total es: 90

3.3.1.3. Instruccin de asignacin


Se debe pensar en una variable como una posicin de memoria, cuyo contenido puede variar. La forma
de modificar el contenido de una variable es mediante el uso de una operacin de asignacin.

La instruccin de asignacin consiste en dar a una variable el valor de una


expresin, el valor de otra variable o el valor de una constante. La asignacin
tiene efecto destructivo en el sentido que destruye el valor previo de la variable
que recibe la asignacin.
La operacin de asignacin es la forma de darle valores a una variable. Se la conoce tambin como
sentencia o instruccin de asignacin cuando hablamos de un lenguaje de programacin.
La operacin de asignacin se representa de la siguiente manera:
Diagrama de Flujo

Pseudocdigo

Nombre_de_variable expresin
Nombre_de_variable expresin

Se demuestra en pseudocdigo con el smbolo (Una flecha apuntando hacia el identificador, donde se
desea guardar el valor).
En la parte izquierda de la asignacin se pone el nombre de la variable que se quiere modificar.

39

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

La parte derecha contiene una expresin que le dar el nuevo valor a la variable, y por lo tanto debe
tener el mismo tipo que la variable.
La sentencia de asignacin se ejecuta en dos pasos:
1) la computadora calcula el valor de la expresin que aparece del lado derecho del operador,
obtenindose un valor de tipo especfico.
2) el valor se almacena en la variable cuyo nombre aparece a la izquierda del operador de asignacin,
reemplazando el valor que tena anteriormente.

Por Ejemplo:
A 16,8
Esto significa que a la variable A se le ha asignado el valor 16,8. La operacin es destructiva, ya que el
valor que tuviera la variable antes de la asignacin se pierde y se reemplaza por el nuevo valor.
Inicial 'La
se asigna La a la variable Inicial
Interruptor true
se asigna el valor true (verdadero) a Interruptor
Num ( 100 * 3 ) / 2
se realiza el clculo que aparece a la a la izquierda del operador de
asignacin y luego se asigna el resultado a la variable Num.
Informacin adicional
Es posible utilizar el mismo nombre de variable en ambos lados de la expresin.

Por Ejemplo:
A A * 0,21
En este ejemplo, el valor de la variable A se multiplica por 0,21 y a continuacin el resultado se asigna a
la misma variable A.
Reglas de Asignacin
1) Una variable en el lado derecho de una sentencia de asignacin debe tener un valor antes de que la
sentencia de asignacin se ejecute. Hasta que un programa le da un valor a una variable, esa variable no
tiene valor. Por ejemplo: Si x no tiene un valor antes de ejecutar y <- x+1, se producir un error lgico.
2) En la izquierda de una sentencia de asignacin solo pueden existir variables, no una expresin.
Por ejemplo: NO es valido lo siguiente:
Valor_Neto - Tasas 34015
3) La asignacin tiene efecto destructivo en el sentido que destruye el valor previo de la variable que
recibe la asignacin.
Cuidado:
En las instrucciones de asignacin NO se pueden asignar valores a una variable de tipo diferente del
suyo; esto sealar un error.

3.3.2. Estructuras bsicas selectivas


En la solucin de la mayora de los problemas algortmicos se requieren efectuar tomas de decisiones
que conducen a la ejecucin de una o ms acciones dependiendo de la verdad o falsedad de una o ms
condiciones. Como consecuencia de esto, se producen cambios en el flujo de control del programa. Dicho
flujo de control implica rutas que deben ser seleccionadas.
Las expresiones lgicas toman el valor verdadero y falso, por lo tanto, se necesita una sentencia de
control para la toma de decisiones.
Una instruccin condicional es aquella que nos permite "preguntar" sobre el entorno que nos rodea,
pudiendo as actuar segn la respuesta obtenida. Estas respuestas siempre sern Verdaderas o Falsas,
pudiendo as tomar, en un principio, dos caminos diferentes.

40

TALLER DE INFORMTICA

Las

CAPITULO 3. Algoritmos

estructuras selectivas o estructuras de decisin son estructuras de


programacin que se utilizan cuando se desea ejecutar una accin dependiendo
de si una expresin es verdadera o falsa.

Las estructuras selectivas o de seleccin se clasifican en:


Estructura de seleccin simple (IF).
Estructura de seleccin doble (IF - ELSE).
Estructura de seleccin mltiple (CASE)

3.3.2.1. Estructura de Seleccin Simple: IF


En la estructura de seleccin simple IF ( SI ), evala una condicin lgica y:
a) Si la condicin es verdadera se ejecuta la accin A. La accin A puede ser una accin simple (una
sola accin) o una accin compuesta (un conjunto de acciones).
b) Si la condicin es falsa, no se hace nada.
En el caso de acciones compuestas, estas sern encerradas entre llaves.

La estructura de Seleccin Simple es cuando la expresin lgica contenida por


los parntesis es verdadera, se ejecutan las instrucciones dentro de la estructura
de seleccin, cuando es falsa, el programa ignora la estructura y se sigue
ejecutando la instruccin siguiente a la estructura de control.
Diagrama de Flujo

Pseudocdigo
Accin simple
IF( condicin )
accin A
Accin compuesta
IF( condicin ){
accin A1
accin A2

accin An
}

Por Ejemplo:
Se desea cambiar el signo de un nmero nicamente en caso que sea negativo.
IF( numero < 0 )
numero = -1 * numero
Si el nmero no es negativo, simplemente esta estructura se pasara por alto y se continuara en la
siguiente instruccin despus del IF.

3.3.2.2. Estructura de Seleccin Doble: IF - ELSE


La estructura de seleccin doble IF (SI) ELSE (SINO) evala una condicin lgica y:
Si la condicin es verdadera, ejecuta la accin A.
Si la condicin es falsa, ejecuta la accin B.

41

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Tanto la accin A como la accin B pueden ser acciones simples (una sla accin) o acciones

compuestas (un conjunto de acciones).

La estructura de seleccin if/else permite que el programador especifique la ejecucin de una accin
distinta cuando la condicin es falsa.

La estructura de Seleccin Doble (if / else) es una estructura que permite


bifurcar el flujo de ejecucin segn el argumento del if. Esta sentencia ejecuta el
cdigo correspondiente al if si se cumple la condicin de su argumento, de no
ser as ejecuta el cdigo correspondiente al else. El else es opcional.

Por Ejemplo:
Se desea saber si una persona es mayor o menor de edad.
IF( edad >= 18 )
IMPRIMIR "Mayor de edad"
ELSE
IMPRIMIR "Menor de edad"

Esto imprime "Mayor de edad" si la persona tiene 18 aos


ms e imprime "Menor de edad" si la persona tiene menos
de 18 aos. En cualquiera de los casos, despus de
efectuar la impresin, se ejecutar la primera instruccin
que sigue a la estructura IF...ELSE.

Estructura de Seleccin Doble


Diagrama de Flujo

Pseudocdigo
Acciones simples
IF( condicin )
accin A
ELSE
Accin B
Acciones compuestas
IF( condicin ){
accin A1
...
accin An
}
ELSE{
Accin B1

accin Bn }

Explicaremos lnea a lnea la estructura:


Primera lnea: IF( condicin ) En esta lnea pondremos la (condicin) que nos interesa evaluar.
Segunda lnea: Accin A Lnea o lneas donde pondremos las instrucciones a efectuar en caso
de que la condicin sea VERDADERA.
Tercera lnea: ELSE A partir de aqu tendremos las instrucciones que se ejecutarn cuando la
condicin sea FALSA.
Cuarta lnea: Accin B Lnea o lneas donde pondremos las instrucciones a efectuar en caso de
que la condicin sea FALSA.
Quinta lnea: } Lnea que nos indica el final de la estructura condicional.

42

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

La tercera y cuarta lnea son opcionales, ya que puede haber un momento en el que al mirar una
condicin nos interese solo una de las posibles respuestas.

3.3.2.3. Estructura de Seleccin: Doble en Cascada


Se dice que varias estructuras de seleccin doble estn en cascada cuando la instruccin que sigue a un
ELSE es otro IF a excepcin del ltimo ELSE. No hay lmite en cuanto al nmero de estructuras de
seleccin doble que pueden ponerse en cascada.
Funcionamiento
Las condiciones se evalan en orden descendente pasando de una a otra si la anterior resulta falsa. En
el momento que se encuentra una condicin verdadera, se efecta la accin correspondiente a dicha
condicin y se corta el resto de la estructura. Si todas las condiciones resultan falsas se efecta la accin
correspondiente al ltimo SINO

Seleccin doble en cascada: Forma 1


IF( condicin C1 )
accin A1
ELSE
IF( condicin C2 )
accin A2
ELSE
IF( condicin C3 )
accin A3

ELSE
Accin An

Seleccin doble en cascada: Forma 2


IF( condicin C1 )
accin A1
ELSE IF( condicin C2 )
Accin A2
ELSE IF( condicin C3 )
Accin A3

ELSE
Accin An

43

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Por Ejemplo:
Disee un algoritmo que determine si un nmero es negativo, positivo o cero.
INICIO
Algoritmo (Formato 1)
INICIO
REAL n
LEER n
IF ( n > 0 )
IMPRIMIR "Positivo"
ELSE
IF ( n < 0 )
IMPRIMIR "Negativo"
ELSE
IMPRIMIR "Cero"
END

n
Ingrese n:
n
n>0

n<0

Positivo

Negativo

Cero

FIN
Algoritmo (Formato 2)
INICIO
REAL n
LEER n
IF ( n > 0 )
IMPRIMIR "Positivo"
ELSE IF ( n < 0 )
IMPRIMIR "Negativo"
ELSE
IMPRIMIR "Cero"
END

3.3.2.4. Estructuras de Seleccin: Anidadas


Se dice que una estructura IF (o IF-ELSE) esta anidada cuando esta contenida dentro de otra estructura
IF o dentro de otra estructura IF-ELSE. No existe lmite en cuanto al nivel de anidamiento.
Por ejemplo, una estructura IF con tres niveles de anidamiento tendra el siguiente formato:
IF( condicin C1 ){
accin A1
IF( condicin C2 ){
accin A2
IF( condicin C3 )
accin A3
}
}

44

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

En general, el anidamiento podra evitarse usando el operador lgico "y".


As, la anterior seleccin SI anidada puede descomponerse en tres estructuras de seleccin simple no
anidadas consecutivas, como se muestra a continuacin.
IF( condicin C1 )
accin A1
IF( condicin C1 and condicin C2 )
accin A2
IF( condicin C1 and condicin C2 and condicin C3 )
accin A3
La estructura de seleccin doble en cascada es un caso especial de la estructura IF...ELSE anidada.
Cuidado!!
Es muy importante que se utilice un buen sangrado en cada sentencia selectiva, para que sea ms
legible el cdigo, y adems que se comente el cdigo, para que no te pierdas si llevas escritas varias lneas,
y tambin por si alguna otra persona, desea actualizar tu cdigo.

3.3.2.5. Estructura de Seleccin Mltiple: CASE


La estructura de seleccin mltiple CASE permite elegir una ruta de entre varias rutas posibles, usando
para ello una variable denominada selector.
El selector se compara con una lista de constantes enteras o de carcter C1, C2, ..., Cn para cada una de
las cuales hay una accin A1, A2, ..., An y:
Si el selector coincide con una constante de la lista, se ejecuta la accin correspondiente a dicha
constante.
Si el selector no coincide con ninguna constante de la lista, se ejecuta la accin Df
correspondiente al ELSE, si es que existe.
Las acciones A1, A2, A3, ..., An pueden ser acciones simples( una sola accin) o acciones compuestas
(un conjunto de acciones).
Pseudocdigo de la estructura de seleccin mltiple

CASE ( selector ){
C1 : accin A1
C2 : accin A2

Cn : accin An
ELSE: accin Df
}

La estructura de Seleccin Mltiple CASE es una sentencia que se utiliza para


elegir entre diferentes alternativas. Se compone de varias sentencias simples,
cuando se ejecuta, una y solo una de las sentencias simples se selecciona y
ejecuta. El valor del selector debe ser un tipo ordinal, y los valores constantes
deben tener el mismo tipo que el selector.

45

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Esta estructura es muy til en el momento en el que debemos tomar diferentes decisiones de una misma
condicin.
Funcionamiento:
En el lugar donde aparece la palabra selector pondremos la condicin a evaluar.
El selector puede ser una variable, una instruccin o cualquier cosas que en el programa tome diferentes
valores.
En el lugar de C1, C2, etc. pondremos los diferentes valores que puede tomar la condicin segn los
cuales el programa debe hacer una u otra cosa.
Pueden existir tantos valores como se necesite.
Despus de las lneas donde pondremos los diferentes valores que puede tomar la condicin
colocaremos las instrucciones que queremos que se realicen. Piensa que estas instrucciones pueden ser solo
una operacin o toda una serie de instrucciones anidadas, tan complejas como lo requiera el programa que
estamos realizando.

3.3.3. Estructuras de Control Repetitivas


Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesita
normalmente contar los sucesos, acciones o tareas internas del ciclo.

Una estructura cclica o estructura repetitiva es aquella que le permite al


programador repetir un conjunto o bloque de instrucciones un nmero
determinado de veces mientras una condicin dada sea cierta o hasta que una
condicin dada sea cierta.

Se debe establecer un mecanismo para terminar las tareas repetitivas. Dicho mecanismo es un control
que se evala cada vez que se realiza un ciclo. La condicin que sirve de control puede ser verificada antes
o despus de ejecutarse el conjunto de instrucciones o sentencias. En caso de que la verificacin o
evaluacin resulte verdadera se repite el ciclo o caso de ser falsa lo terminar.
Son aquellas estructuras que permiten que una o varias sentencias se ejecuten repetidamente.

Las Estructuras Repetitivas o Iterativas son aquellas en las que las acciones se
ejecutan un nmero determinado de veces y dependen de un valor predefinido o
el cumplimiento de una determinada accin.
a) Bucle
Es la estructura de control que permite la repeticin de una serie determinada de sentencias.
Es importante tener en cuenta cuntas veces se repite el bucle y cul es el cuerpo del bucle.

El

cuerpo del bucle lo constituyen la serie de sentencias que pueden ser de


cualquier tipo (secuencial, de decisin o repetitivo) las cuales sern repetidas n
veces, pudiendo ser n conocido o desconocido. Cuando n es desconocido, el
nmero de veces que debe repetirse el cuerpo del bucle estar condicionado por
una expresin lgica.

46

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Un bucle no es ms que una serie de instrucciones que se repiten.


Podemos tener dos tipos de bucles segn lo que nos interese comprobar:
El bucle que se repite mientras se cumple una condicin determinada, y
El bucle que se realiza hasta que se cumple la condicin que marcamos.

Cuidado
A la hora de utilizar un bucle, sea del tipo que sea, debemos ir con cuidado y pensar cuando debe
acabar ya que si no tuviramos en cuenta esto podramos entrar en un bucle sin fin, o sea que iramos
repitiendo las mismas lneas teniendo que abortar la aplicacin, para poderla finalizar.
Por esto es de suma importancia que pensemos, antes de hacer nada, en qu momento, cmo, dnde y
por qu debe acabar el bucle.
b) Caractersticas de las Estructuras Repetitivas
Las estructuras repetitivas permiten representar aquellas acciones que pueden descomponerse en otras
sub-acciones primitivas.
Es una estructura con una entrada y una salida en la cual se repite una accin un nmero determinado o
indeterminado de veces
En una Estructura Repetitiva While (Mientras) se repite una accin mientras se cumpla la condicin
que controla el bucle. La caracterstica principal de esta estructura es que la condicin es evaluada siempre
antes de cada repeticin.
La Estructura Repetitiva For (Desde) permite que las instrucciones las cuales contiene en su mbito, se
ejecuten un nmero de veces determinado.

Entre las estructuras repetitivas se encuentran:

3.3.3.1. Estructura While (mientras)


Mediante esta estructura el cuerpo del bucle se repite mientras se cumpla una determinada condicin
(en otras palabras, mientras el resultado de la evaluacin de la expresin lgica sea verdadero).
La condicin se evala siempre al principio de cada iteracin. Esto implica que, si el resultado de su
evaluacin es falso desde el comienzo de la estructura, el bucle no se ejecuta nunca.

La Estructura Repetitiva While, es aqulla en que el cuerpo del bucle se repite


mientras se cumple una determinada condicin.
Se usa cuando no se conoce el nmero de iteraciones.

47

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

La representacin sera:
Diagrama de Flujo

Pseudocdigo

While (condicin)
{
Accin S1
Accin S2

accin Sn
}

Explicaremos lnea a lnea este bucle:


Primera lnea: WHILE (condicin) {En esta lnea pondremos la <condicin> que se debe dar para que
se ejecute el bucle. En el momento que la condicin sea Falsa se terminar el bucle y se continuar con las
siguientes instrucciones.
Segunda lnea: Acciones Lnea o lneas donde pondremos las instrucciones a efectuar en caso de que la
condicin sea VERDADERA.
Tercera lnea: } Fin del bucle Mientras. De aqu se pasa a la primera lnea del bucle para volver a mirar
la condicin.
En esta estructura no tenemos ninguna lnea que sea opcional.

Por Ejemplo:
Contar los nmeros enteros positivos introducidos por teclado. Se consideran dos variables enteras
NUMERO y CONTADOR (contar el nmero de enteros positivos). Se supone que se leen nmeros positivos
y se detiene el bucle cuando se lee un nmero negativo o cero.

INICIO
Contador = 0
LEER (numero)
WHILE (numero > 0)
{
contador = contador + 1
LEER (numero)
}
IMPRIMIR ('El nmero de enteros positivos es: ', contador)
END

INICIO
Cont=0
Ingrese n:
num

num
num
>0

Cont
FIN

48

Cont=Cont+1

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.3.3.2. Estructura Do while (Hacer mientras)


Esta estructura se ejecuta mientras se cumpla una condicin determinada que se comprueba al final del
bucle. Se ejecuta al menos una vez.

El Estructura Repetitiva Do While se repite mientras el valor de la expresin


booleana de la condicin sea verdadera, pero, a diferencia de la estructura
While, la condicin se evala al final del bucle.
Pseudocdigo en ingls
DO
{
<acciones>

F
WHILE <condicin>
La estructura de bucle Do ... While tiene un pequeo matiz que la hace diferente a la estructura While.
Tanto una como la otra se utilizan frecuentemente, pero cada una de ellas va bien segn el caso, estas
estructuras pueden hacer su uso muy diferente. La condicin se evala despus de realizar las instrucciones
y no antes como pasaba en el caso del While.
Cuidado!!!
En la estructura DoWhile primero ejecutara las instrucciones y despus mirara si se cumple o no la
condicin, con lo que tenemos que tener mucho cuidado ya que las instrucciones como mnimo se
ejecutarn una vez (las veces restantes ya dependern de la condicin).

Por Ejemplo:
Preguntar una letra y cantidad de repeticiones. Repetir en pantalla tantas veces como se indique.
INICIO
INICIO
CHAR letra
INT x, n
x=1
x=1
IMPRIMIR (Ingrese la letra: )
Ingrese letra y cantidad
LEER (letra)
IMPRIMIR (Cuntas veces quieres repetirlo?: )
letra, n
LEER (n)
DO
{
x, -, letra
IMPRIMIR (x , - , letra)
x=x+1
x=x+1
}
WHILE (x < n)
num > 0
FIN

FIN

49

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.3.3.3. Estructura For (Desde/Para)


Esta sentencia incluye una expresin que especifica el valor inicial de un ndice, otra expresin que
determina cuando se contina o no el bucle y una tercera expresin que permite que el ndice se modifique
al final de cada pasada.

La Estructura For ejecuta las acciones del cuerpo del bucle un nmero especfico
de veces y de modo automtico controla el nmero de iteraciones o pasos a
travs del cuerpo del bucle.

La forma general de esta sentencia es:


for (expresin 1; expresin 2; expresin 3) sentencia
en donde:
expresin 1 (expresin de asignacin), inicializa algn parmetro (llamado ndice) que controla
la repeticin del bucle;
expresin 2 (expresin lgica), representa una condicin que debe ser satisfecha para que se
contine la ejecucin del bucle;
expresin 3 (expresin unitaria o expresin de asignacin), modifica el valor del parmetro
inicialmente asignado por la expresin
La ejecucin de la sentencia for sucede de la siguiente forma:
1. Se inicializan los parmetros.
2. Se evala la expresin lgica.
Si el resultado es distinto de cero (verdadero), se ejecuta la sentencia, se evala la expresin que da
lugar a la progresin de la condicin y se vuelve al punto 2.
Si el resultado de 2, es cero (falso), la ejecucin de la sentencia for se da por finalizada y se contina en
la siguiente sentencia del programa.
En muchas ocasiones se conoce de antemano el nmero de veces que se desean ejecutar las acciones
de un bucle. En estos casos en el que el nmero de iteraciones es fija, se debe usar la estructura for. Esta
estructura se usa cuando se desea ejecutar un bucle un nmero determinado de veces, cuyo nmero se
conoce por anticipado.
En la ejecucin del FOR participan tres elementos:
V : variable de control del bucle,
Vi : valor inicial,
Vf : valor final
Existen dos formas de utilizar las estructuras de control repetitivas:
a) Con INCREMENTO DEL CONTADOR (Vi < Vf):
Pseudocdigo
Diagrama de Flujo
FOR (V= Vi, V < Vf , V= V +1)
Sentencia;
FOR(V= Vi, V < Vf , V= V +1)
{
Sentencia 1;
Sentencia 2;
Sentencia N
}

50

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Cuando Vi es menor que Vf el valor de V se incrementa de uno en uno desde el valor de Vi hasta el valor
de Vf. Por cada valor que V toma, el cuerpo del bucle se ejecuta una vez.
Para representar la estructura FOR se puede utilizar el smbolo indicado o plantear el algoritmo con una
estructura tipo WHILE, donde siempre aparece el inicio de la variable contador, la condicin de fin y el
incremento del contador.
Grficamente sera:

INICIO

FOR (V= Vi, V < Vf , V= V +1)


Sentencia;

V = Vi

Sentencia/s
V=V+1
V Vf

FIN

b) Con DECREMENTO DEL CONTADOR (Vi > Vf):


Pseudocdigo
FOR (V= Vi, V > Vf , V= V - 1)
Sentencia;
FOR (V= Vi, V > Vf , V= V - 1)
{
Sentencia1;

Sentencia N
}

Cuando Vi es mayor que Vf el valor de V se decrementa de uno en uno desde el valor de Vi hasta el
valor de Vf. Por cada valor que V toma, el cuerpo del bucle se ejecuta una vez.
Informacin adicional:
V debe ser de tipo ordinal (entero, carcter, lgico u otro tipo ordinal) o subrango.
V, Vi, Vf deben ser todas del mismo tipo, pero el tipo real no est permitido.
Vi, Vf pueden ser expresiones o constantes.
No se debe modificar el valor de V, Vi, Vf dentro del cuerpo del bucle.

51

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.3.3.4. Bucles anidados


Son denominados todos aquellos bucles que estn contenidas dentro de otro bucle. Cuando se anidan
bucles, se debe tener cuidado que el bucle interior est contenido completamente dentro del bucle exterior.
Todos los tipos de bucles pueden anidarse, sea entre s o entre cada uno de stos (while, repeat o for).
While, Repeat o For
While, Repeat o For

Fin While, Repeat o For

El primer bucle que se abra


debe ser el ltimo en
cerrarse.
Lo que es equivalente a
decir, que el ltimo bucle en
abrirse debe ser el primero
en cerrarse y as tantas
veces como sea necesario.

Fin While, Repeat o For


Si los bucles se cruzan no sern vlidos. Es decir, es incorrecto si los bucles anidados se construyen de la
siguiente forma:

Primer bucle abierto

NO puede ser el primer


bucle en cerrarse.

52

INCORRECTO

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.4. CONTADORES, INTERRUPTORES Y ACUMULADORES.


La computadora sigue una serie de instrucciones, pero esas instrucciones tienen que operar sobre una
serie de datos.
La computadora tpica slo procesa una instruccin a la vez, por lo que necesita 'espacios de memoria'
donde guardar o depositar, a modo de cajones, los diversos datos con los que trabaja. Aqu es donde entran
en juego las variables y constantes.
Hay ciertas variables que realizan operaciones especiales de asignacin: el contador y el acumulador

3.4.1. Contador

Un contador es una variable que se incrementa en una unidad o en una cantidad


constante.

Por Ejemplo:
Contador 25
x 50
Contador Contador + 1
xx+5
Al ejecutar las sentencias de asignacin, los nuevos valores de Contador y N son
25+1=26 y 50+5 =55.

3.4.2. Acumulador

El acumulador es una variable que se incrementa en una cantidad variable.


Por Ejemplo:
Suma Suma + x
Donde x es una variable; si x = 7 y Suma = 40, el nuevo valor de Suma ser 47

53

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.5. ARREGLOS DE DATOS


Un arreglo de datos es una coleccin de datos organizados de un modo particular. Tienen un nico
nombre de variable, que representa todos los elementos, los cuales se diferencian por un ndice o subndice.

Por Ejemplo:
Notas de los estudiantes.
NOTAS

nombre del arreglo

NOTAS[0]

nombre del primer elemento del arreglo NOTAS

NOTAS[n-1]

nombre del elemento n del arreglo NOTAS 0, 1, 2, 3, ... n-1 ndices o subndices del
arreglo (pueden ser enteros, no negativos, variables o expresiones enteras)

Un arreglo es un conjunto de elementos del mismo tipo agrupados en una sola


variable. Es una estructura de datos en la que se almacena una coleccin de
datos del mismo tipo

Cada posicin de almacenamiento en un arreglo es llamada un elemento del arreglo.


Para ingresar a un elemento en particular, utilizamos un ndice.
Existen arreglos unidimensionales, bidimensionales, etc.
Fsicamente, un arreglo es un conjunto de localidades de memoria contiguas donde la direccin ms
baja corresponde al primer elemento y la direccin ms alta al ltimo.
En un arreglo de n elementos, stos ocuparan desde la casilla 0 hasta la n-1.
Por s mismo, el nombre del arreglo apunta a la direccin del primer elemento del arreglo.
Cuidado!!!
En un arreglo de n elementos, stos ocuparan desde la casilla 0 hasta la n-1.

Por Ejemplo:
Si tuviera un arreglo A de N = 10 elementos,
Notacin matemtica:
A1, A2, A3, . , AN
A1, A2, A3, . , A10
Notacin computacional:
A[0], A[1], A[2], , A[N-1]
A[0], A[1], A[2], , A[9]
Clasificacin de los arreglos
Los arreglos se clasifican en:

UNIDIMENSIONALES (vectores o listas) y

MULTIDIMENSIONALES (Ejemplo, los bidimensionales son las tablas o matrices).

3.5.1. Arreglos Unidimensionales o Vectores


Un arreglo de una sola dimensin es un arreglo que tiene solamente un subndice.
Un subndice es un nmero encerrado en corchetes a continuacin del nombre del arreglo. Este
nmero puede identificar el nmero de elementos individuales en el arreglo.

54

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Los arreglos unidimensionales o vectores son una lista o columna de datos


del mismo tipo, a los que colectivamente nos referimos mediante un nombre.

Deben cumplir
-

lo siguiente:
Estar compuestos por un nmero de elementos finitos.
Ser de tamao fijo: el tamao del arreglo debe ser conocido en tiempo de compilacin.
Debe ser homogneo: todos los elementos son del mismo tipo.
Son almacenados en posiciones contiguas de memoria, a cada una de los cuales se les
puede acceder directamente.
- Cada elemento se puede procesar como si fuese una variable simple ocupando una
posicin de memoria.

Los vectores listan un nmero finito N de elementos homogneos. Se hace referencia a los elementos
por un conjunto de ndices constituidos por nmeros consecutivos. Se almacenan en memoria en celdas
consecutivas.
Donde:

N es la longitud del arreglo.

Homogneos: todos los elementos son del mismo tipo.

Informacin adicional:
Dado un vector denominado Z de 6 elementos, cada uno de sus elementos se designar por ese mismo
nombre diferencindose nicamente por su correspondiente subndice.
Z

Z0

Z1

Z2

3
...

1
Z5

Declaracin del Vector


nombre_arreglo = tipo_dato [subndice]
Donde:

nombre_arreglo: es un identificador vlido.

subndice: es un ordinal, por ejemplo [3]

tipo_dato: tipo de cada elemento del vector.

Por Ejemplo:
cod = CHAR [10] ;
nom = CHAR [ 60];
Informacin adicional:
Las declaraciones de ndices (tipo_ndice) NO pueden contener variables.

3.5.2. Operaciones con Vectores


3.5.2.1. Lectura
Tienen que utilizarse estructuras de repeticin para leer todos los elementos del vector. Es la carga de
los datos en los elementos del vector.

55

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Por Ejemplo:
Notas = INT [30]
FOR (I = 0 ; I < 30 ; I = I + 1)
LEER ( Notas [I] );

3.5.2.2. Escritura
Es la muestra o impresin de los datos de cada elemento del vector.

Por Ejemplo:
Notas = INT [30]
FOR (I = 0 ; I < 30 ; I = I + 1)
IMPRIMIR (NOTAS[I] );

3.5.2.4. Bsqueda
Es la operacin que permite encontrar la posicin de un elemento con determinado valor o un elemento
con determinado valor de ndice.

Por Ejemplo:
INT x
Notas = INT [30]
IMPRIMIR (Ingrese el valor a buscar:)
LEER (x)
FOR (I = 0 ; I < 30 ; I = I + 1)
{
IF (NOTAS[I]==x)
IMPRIMIR (Encontr: , NOTAS[I], en la posicin , I);
}

3.5.2.5. Orden
Es la operacin que organiza los elementos de la lista segn se indique. Existen varios mtodos para
ordenar los elementos de un arreglo que se vern ms adelante.

3.5.2.6. Intercalacin
Es la operacin que combina los elementos de ms de una lista segn se indique.

3.5.3. Arreglos Bidimensionales o Matrices


Son arreglos con dos ndices, los cuales deben ser ordinales o de tipo subrango.

Columnas
F
i
l
a
s

X[0,0]

X[0,1]

X[0,2]

1
2
3

X[3,0]

X[3,5]

56

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Un arreglo bidimensional es un arreglo de arreglos unidimensionales. Un


arreglo bidimensional tiene dos subndices.

Al igual que para los arreglos unidimensionales, el nombre del arreglo define el nombre de sus
elementos slo que stos se identifican por sus respectivos subndices.

Un Arreglo Bidimensional es un conjunto de m x n elemento, cada uno


identificado por medio de dos ndices [i, j] tal que, 1 < i < m y 1 < j < n. Es un
conjunto de m filas y n columnas, en el que el elemento A[i,j] se encuentra en la
fila i-sima y en la columna j-sima.

Por Ejemplo:
As si el arreglo mostrado en la figura anterior se denomina X, cada uno de sus elementos se
denominarn, por ejemplo:
X[0,0]
elemento de la fila 0 columna 0
X[0,1]
elemento de la fila 0 columna 1
X[0,2]
elemento de la fila 0 columna 2
As hasta identificar los 24 elementos del arreglo X de este ejemplo.
Se definen de la siguiente manera:
Identificador = tipo_elemento [indice1, indice2];
indice1: indica la cantidad de filas
indice2: indica la cantidad de columnas

Por Ejemplo:
parciales = float [37,4];
Informacin adicional:
Reserva 148 posiciones de memoria (datos reales): 37 filas y 4 columnas.
As parciales[i,j] se refiere al elemento del arreglo parciales referenciado mediante la fila i y la
columna j.

3.5.4. Operaciones con Matrices


3.5.4.1. Lectura
Tienen que utilizarse estructuras de repeticin para leer los elementos del arreglo. Si en el vector la
lectura era por orden secuencial, en las matrices se puede realizar la lectura por filas o por columnas.

Por Ejemplo:
A = int[4,3];
FOR (i = 0 ; i < 4 ; i = i + 1)
FOR (j = 0 ; j < 3 ; j = j + 1)
LEER ( A[i,j]);
Los valores deben ser introducidos por filas o por columnas. En este ejemplo, se introducen por filas.

57

TALLER DE INFORMTICA

A=

CAPITULO 3. Algoritmos

30
84
6

12
10
8

46
3
11

30
12
46
84
10
3
6
8
11

3.5.4.2. Escritura
FOR (j = 0 ; j < 3 ; j = j + 1)
FOR (i = 0 ; i < 4 ; i = i + 1)
IMPRIMIR (x[i,j]);
Los valores deben ser mostrados por filas o por columnas. En este ejemplo, se introducen por columnas.

Preguntas de Repaso
1. Qu es un diagrama de flujo?
2. Cules son los smbolos que utilizan los diagramas de flujo para representar las distintas
operaciones?
3. Cules son las estructuras lineales? Explique cada una utilizando un ejemplo.
4. Cules son las estructuras selectivas? Explique cada una utilizando un ejemplo.
5. Cules son las estructuras repetitivas? Explique cada una utilizando un ejemplo.
6. Qu diferencias hay entre un contador y un acumulador?
7. Qu es un arreglo?
8. Cmo se identifica el primero y el ltimo elemento de un arreglo de N elementos?

58

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3.6. GUA DE EJERCICIOS


3.6.1. Ejercicios Algoritmo
1. Enumerar las acciones necesarias para realizar lo siguiente:
Calcular el producto de dos nmeros utilizando la calculadora.
Llamar a un amigo desde un TE pblico.
Cambiar una lmpara elctrica que se encuentra quemada.
Preparar mate amargo.
2. Plantear el algoritmo para hallar el valor de la variable A, sabiendo que es el promedio de B y C.
3. Proponer un algoritmo que dadas las variables Q, R, S y T, permita intercambiar sus valores de
modo que Q tenga el valor original de R, sta el de S, S el de T y finalmente T el valor original
de Q.

3.6.2. Ejercicios Expresiones


1. Si A = 5 y B = 10. Qu valor asume C en cada caso?

C A B
C (B - A) / (A - 3)
C A* 5 B
C 4 / 2* 3 / 6 B / 2 / 1 / 5 ^ 2 - A

C B A 25 4 * (A* B) / 2
C B ^ A (A / B) - 20 / B
C A - B / 2 A* 5

C A* B * 5 (B - A) ^ 3

3.6.3. Instrucciones Secuenciales


1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Escribir un algoritmo que lea dos nmeros e imprima su suma.


Escribir un algoritmo que lea un nmero y escriba su cuadrado.
Escribir un algoritmo que calcule y muestre el cubo de un nmero ingresado.
Escribir un algoritmo que permita ingresar el permetro de un crculo y luego calcule y muestre el
radio del mismo.
Escribir un algoritmo que intercambie dos valores numricos ingresados por teclado.
Escribir un algoritmo que halle el promedio de tres valores A, B, C. El mismo debe emitir los tres
valores por separado y luego el valor promedio.
Convertir una cantidad expresada en dlares a pesos y mostrar el resultado. El algoritmo debe
permitir ingresar la cantidad y el valor de la cotizacin del dlar. Realizar prueba de escritorio.
Convertir una temperatura dada en la escala Celsius e imprmase en su equivalente Fahrenheit.
(F = (9/5) C + 32)
Disee un algoritmo para convertir una longitud dada en centmetros a pies. Considere que 1 pie
= 30.48 centmetros.
Una institucin benfica europea ha recibido tres donaciones en soles, dlares y marcos. La
donacin ser repartida en tres rubros: 60% para la implementacin de un centro de salud, 30%
para un comedor de nios y el resto para gastos administrativos. Disee un algoritmo que
determine el monto en euros que le corresponde a cada rubro. Considere que: 1 dlar = 3.52
soles, 1 dlar = 2.08 marcos, 1 dlar = 1.07 euros.

59

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

11. En una competencia atltica de velocidad el tiempo se mide en minutos, segundos y centsimas
de segundo y el espacio recorrido se mide en metros. Disee un algoritmo para determinar la
velocidad promedio de un atleta en km/h Considere que: 1 hora = 60 minutos, 1 minuto = 60
segundos, 1 segundo = 100 centsimas de segundo, 1 kilmetro = 1000 metros.
12. El sueldo neto de un vendedor se calcula como la suma de un sueldo bsico de $ 250 ms el
12% del monto total vendido. Disee un algoritmo que determine el sueldo neto de un vendedor
conociendo el monto de las tres ventas que hizo en el mes.
13. Disee un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes. Considere que: 1 kilobyte = 1024 bytes, 1
megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.
14. Hacer un algoritmo que calcule la cantidad de horas, minutos y segundos entre dos eventos, de
los cuales se ingresarn la hora (expresada en horas, minutos y segundos) y la fecha (expresada
en da, mes y ao) en que ocurrieron.
15. Una bomba de agua puede extraer 800 litros de agua por hora. Realizar un algoritmo que
calcule el tiempo necesario para extraer todo el lquido de un tanque del que se saben sus
medidas: altura y radio (stas se ingresarn por teclado).
16. Determinar la velocidad de un automvil que se desplaza a una velocidad constante si se conoce
la distancia recorrida y el tiempo utilizado. Mostrar la velocidad encontrada. Ambos datos se
ingresan por teclado
17. Un pintor sabe que con una pintura determinada puede pintar 3,6 metros cuadrados con cada
medio litro. Sabiendo la altura y el largo de la pared a pintar, realizar un algoritmo que informe
cuantos litros de pintura necesitar para la pared en cuestin. Los datos de la pared se
ingresarn en metros.
18. Teniendo como dato la hipotenusa y el ngulo que forma la misma con la base de un tringulo
rectngulo calcular y mostrar los lados y ngulos restantes.
19. Un motor de un 50rpm y tiene una Rueda conectada que tiene una relacin de 1a 2 (una vuelta
del motor dos vueltas de la rueda). Realizar un algoritmo que calcule la distancia recorrida por la
goma en una hora teniendo en cuenta de que el radio de la rueda es de 32 centmetros
20. Dados los catetos de un tringulo rectngulo, calcular e imprimir su hipotenusa. Frmula de
2
2
clculo: h a b , donde a y b son los catetos, h es la hipotenusa.
21. Una maratn tiene 26 millas y 385 yardas. Realizar un algoritmo que permita convertir la
distancia de la maratn a kilmetros, sabiendo que 1 milla tiene 1760 yardas.

3.6.4. Instrucciones de Decisin


1. Escriba un algoritmo que determine si un nmero ingresado es positivo, negativo o cero.
2. Escriba un algoritmo que permita leer dos valores numricos A y B. Si A es mayor que B debe
realizar la suma de ambos, caso contrario, se hace el producto.
3. Escriba un algoritmo que permita ingresar valores numricos A, B, C, D, E y decir si su promedio
es mayor que o igual a 10.
4. Hacer un programa que permita ingresa dos nmeros y el smbolo de la operacin (+,-,*,/).
obtenindose el correspondiente resultado. Si el smbolo no es correcto deber imprimir un
mensaje que indique Error en smbolo.
5. Escriba un algoritmo capaz de encontrar el mximo de dos valores (M y N)
6. Escriba un algoritmo capaz de encontrar el mximo de tres valores (R, S y T).
7. Escribir un algoritmo que permita ingresar tres nmeros distintos entre s y los muestre en
pantalla ordenados de mayor a menor y de menor a mayor.
8. Desarrollar un algoritmo que permita realizar la suma de dos horas distintas (HH, MM, SS).
Tener en cuenta que si la hora supera 24 se debe contar un da.
9. Leer los lados de un rectngulo y el radio de un crculo. Determinar si las reas de ambas figuras
son o no iguales.
10. Disee un algoritmo que permita ingresar la hora actual del da en tres variables, HH, MM y SS y
determine cuantas horas, minutos y segundos restan para las 23:59:00.

60

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

11. Disee un algoritmo que permita ingresar dos valores X e Y, luego determine qu porcentaje es
X de Y.
12. El promedio de prcticas de un curso se calcula en base a cuatro notas de las cuales se elimina
la nota menor y se promedian las tres notas ms altas. Disee un algoritmo que determine la
nota eliminada y el promedio de un estudiante.
13. Disee un algoritmo que lea tres longitudes y determine si forman o no un tringulo. Si es un
tringulo determine de que tipo de tringulo se trata entre: equiltero (si tiene tres lados
iguales), issceles (si tiene dos lados iguales) o escaleno (si tiene tres lados desiguales).
Considere que para formar un tringulo se requiere que: "el lado mayor sea menor que la suma
de los otros dos lados".
14. Ingresar un nmero C y determinar si pertenece al intervalo [A, B] con A y B ingresados por
teclado.
15. Una compaa dedicada al alquiler de automviles cobra $30 hasta un mximo de 300 km de
distancia recorrida.
16. Para ms de 300 km y hasta 1000 km, cobra $30 ms un monto adicional de $ 0.15 por cada
kilmetro en exceso sobre 300. Para ms de 1000 km cobra $30 ms un monto adicional de $
0.10 por cada kilmetro en exceso sobre 1000. Los precios ya incluyen el 18% del impuesto
general a las ventas, IGV.
Disee un algoritmo que, ingresando la distancia recorrida, determine el monto a pagar por el
alquiler de un vehculo y el monto incluido del impuesto.
Basndose en el ao de fabricacin y el peso del automvil en una fbrica se determina la tarifa
de registro segn la siguiente tabla:
Ao
(modelo)

Peso (lb.)

Categora
de Peso

Tarifa de
Registro

1970 o
anterior

Menos de 2.700

$ 11.600

2.700 a 3.800

$ 23.200

Ms de 3.800

$ 34.800

Menos de 2. 700

$ 13.000

2.700 a 3.800

$ 26.000

Ms de 3.800

$ 39.000

Menos de 3.500

$ 12.000

3.500 o ms

$ 46.000

1971 a 1979

1980 o
posterior

El programa debe ingresar el ao y el peso del auto e imprimir la categora y la tarifa.


17. El cuadrante en el cual se ubica una lnea dibujada desde el origen est determinado por el
ngulo que la lnea forma con el eje positivo de x en la siguiente forma:
ngulo del eje positivo de x

Cuadrante

Entre 0 y 90 grados

Entre 90 y 180 grados

II

Entre 180 y 270 grados

III

Entre 270 y 360 grados

IV

El programa debe ingresar el ngulo de la lnea como dato de entrada y desplegar el cuadrante
apropiado, segn la tabla dada. Si el ngulo es exactamente 0, 90, 180 o 270 grados, la lnea
resultante no se ubica en ningn cuadrante sino en cada uno de los ejes respectivos.

61

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

INSTRUCCIONES REPETITIVAS
3.6.5. Estructura FOR (Controladas por un Contador)
1. Escribir un algoritmo que permita ingresar 10 nmeros y calcule el promedio.
2. Ingresar 5 juegos de cuatro valores cada uno. Calcular y emitir el promedio de cada juego.
3. Dados 10 nmeros, escribir un algoritmo que imprima:
a. la suma de los nmeros positivos de la lista
b. cantidad de nmeros negativos de la lista
c. promedio de los nmeros positivos.
4. Desarrollar un algoritmo que determine en un conjunto de cien nmeros la cantidad de
negativos, cuntos son mayores de 50 y cuntos estn comprendidos entre 25 y 45.
5. Escribir un algoritmo que calcule la suma de los cuadrados de los 10 primeros nmeros
naturales.
6. Ingresar dos nmeros y calcular el producto de los mismos por sumas sucesivas.
7. Calcular la suma de los nmeros pares, la suma de los nmeros impares comprendidos entre 1 y
N, donde N es un nmero ingresado por teclado. (recordar que el incremento puede ser de 2).
8. Escribir un algoritmo que imprima la tabla de multiplicar del 2.
9. Escribir un algoritmo que imprima todas las tablas de multiplicar (desde la del 2 hasta la del 9).
10. Escribir un algoritmo que imprima la suma de los 1000 primeros nmeros naturales, es decir, 1
+ 2 + 3 + 4 + ... + 998 + 999 + 1000.
11. Escriba un algoritmo para imprimir las coordenadas (X - Y) de una funcin cuadrtica, de la
forma Y = aX + bX + c haciendo variar X en el intervalo [-20, 20] con un incremento de 2.
12. Escribir un algoritmo que calcule el factorial de un nmero. El factorial de un nmero N se
simboliza: N!, donde N! = N * (N-1)!. Slo existen factoriales de nmeros naturales y el cero. Se
define 0! = 1.
Ej: 5! = 5 * 4 * 3 * 2 * 1 * 1.
13. Leer 10 valores numricos. Calcular e informar: La suma de los valores positivos y el producto
de los valores negativos. (Ignorar los valores nulos)
14. Leer una lista de 50 nmeros y emitir: el valor mnimo de la lista, el valor mximo de la lista y la
ubicacin del mximo dentro de la lista.
15. Dada una lista de 50 valores numricos, indicar si esta ordenada en forma ascendente.
16. Disee un algoritmo para calcular el resultado de la suma de los 100 primeros trminos de la
siguiente serie:
S = 1 1/3 + 1/9 1/27 + 1/81
17. Realizar un algoritmo que convierta un nmero ingresado por teclado (en sistema decimal) a su
equivalente en sistema binario.
18. Construir el algoritmo que realice la operacin inversa al del ejercicio anterior.
19. Escribir un algoritmo que permita el ingreso de dos nmeros x y n, y calcule x n, por
multiplicaciones sucesivas. Hacer las consideraciones necesarias para que funcione. Tener en
cuenta casos particulares.
20. Escribir un algoritmo que permita ingresar el promedio de un curso y luego las calificaciones de
un grupo de 50 alumnos. Se necesita saber cuntos alumnos tienen una calificacin superior al
promedio del grupo. Realizar prueba de escritorio para 10 alumnos.
21. Escribir un programa que permita ingresar dos valores A y B que determinan un intervalo, luego
ir acumulando los valores que se ingresan a continuacin siempre y cuando estos pertenezcan al
intervalo.
22. Se leen 30 valores (comprendidos entre 5 y 40), que representan la temperatura mxima de
cada uno de los das de un mes. Se pide hallar e informar :
La temperatura mxima del mes y el da que se produjo. (Se supone nica)
Cuntos das la temperatura supero los 25 C.

62

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

El promedio de las temperaturas mxima del mes.


23. Se ingresan las notas de 40 alumnos. Por cada alumno se ingresa:
nmero de matrcula : 4 dgitos (1-9999)
asistencia : 1, presente; 0, ausente
calificacin: 2 dgitos (0-10).
A partir de esta informacin se debe calcular e informar:
Cantidad y % de alumnos presentes.
Promedio de calificaciones de alumnos presentes.
% de alumnos aprobados (sobre el total de alumnos presentes).
Nmero de matrcula del alumno de mayor calificacin. (Si hay varios alumnos con esa
calificacin: calificacin y cantidad de alumnos en esa situacin).

3.6.6. Estructuras WHILE y DO WHILE (Controladas por una


condicin)
1. Realizar un algoritmo que permita calcular la suma de los nmeros ingresados mientras que el
valor acumulado no supere el valor 100. Mostrar el valor acumulado antes de superar 100.
2. Ingresar juegos de cuatro valores cada uno. Calcular y emitir el promedio de cada juego. El
proceso finaliza al encontrarse un juego cuyo primer valor es 0 (cero).
3. Leer una lista de nmeros que finaliza cuando se ingresar el nmero 0 (cero), al finalizar emitir
el valor mnimo de la lista.
4. Leer una lista de nmeros que finaliza cuando se ingresar el nmero 0 (cero), al finalizar emitir
el valor mximo de la lista.
5. Leer una lista de nmeros que finaliza cuando se ingresar el nmero 0 (cero), al finalizar emitir
el valor mximo de la lista, y la ubicacin del mximo dentro de la lista. (Suponer un nico
mximo).
6. Escribir un programa que permite ingresar dos valores A y B que determinan un intervalo, luego
ir acumulando los valores que se ingresan a continuacin siempre y cuando estos pertenezcan al
intervalo. El ingreso de nmeros finaliza cuando ingresa el 99.
7. Disear el algoritmo para resolver una ecuacin de segundo grado Ax 2 + Bx + C = y. El
algoritmo deber ingresar A, B y C e ir ingresando x. El programa finaliza cuando ingresa x = 99.
8. Se tienen los siguientes datos sobre nacimientos en una ciudad: sexo (F M) y fecha de
nacimiento (DD y MM). Se pide realizar un algoritmo que informe cuntos son varones y cuntas
son mujeres, cuntos nacimientos hubo en el primer semestre y cuntos en el segundo. El final
de lectura de datos viene dado por una lectura del sexo en blanco.
9. Realizar un algoritmo que determine si una serie de nmeros ingresada por teclado es
ascendente. El final de la serie viene dado por un nmero negativo. (Ej: 1, 5, 5, 10, 11, 12, 12,
20, -1 es una serie ascendente).
10. Disear un Diagrama de Flujo de Datos (DFD) que permita el ingreso de datos de tipo carcter
hasta que se ingrese un espacio en blanco; al final informar si algn dato fue numrico (un
dgito de 0 a 9) y si se ingresaron datos numricos, cuntos fueron.
11. Disear un DFD que permita el ingreso de N nmeros; al final informar la sumatoria de los
nmeros. N se ingresa al principio por teclado.
12. Disear un DFD que permita el ingreso de nmeros e informe si se ingresaron o no nmeros
negativos. El ingreso de nmeros finaliza cuando ingresa el 99.
13. Disear un DFD que permita calcular el promedio de N notas introducidas por teclado, siendo N
un valor introducido por el usuario. Adems ha de indicar si ha habido algn 10, el nmero de
reprobados y de aprobados.
14. Disear un DFD que permita el ingreso de nmeros, muestre el valor acumulado, el promedio y
si ingres el 0 (cero). El final del ingreso se da cuando ingresa el nmero 100 o la suma de los
ingresados supere el valor 100.
15. Disear un DFD que permita mostrar en pantalla una rutina de seleccin del siguiente men: 1.Suma 2.- Resta 3.- Producto 4.- Divisin S.- Salir. El usuario podr elegir cualquier alternativa,

63

TALLER DE INFORMTICA

16.

17.
18.
19.

CAPITULO 3. Algoritmos

luego ingresar A y B y realizar la operacin seleccionada. Solamente con S podr Salir. Tener
en cuenta que si elige 4.- Divisin deber reingresar el denominador hasta que ingrese un valor
diferente a 0 (cero). Si ingresa un nmero negativo o mayor que 4 deber informar Opcin no
vlida.
Disear un DFD que permita el ingreso de N nmeros y al finalizar muestre el menor, el mayor y
la posicin en que se ingres cada uno. N se ingresa al principio por teclado. AYUDA: hacer
primero el mayor, despus agregarle la posicin, despus complicarlo con todo.
Realizar un algoritmo que imprima los N primeros nmeros de la serie de Fibonacci. N se ingresa
por teclado.
Calcular la serie de Fibonacci. Ingresar N y generar la serie hasta que el ltimo trmino sea
menor a N.
Dado un conjunto de nmeros positivos, determinar el mayor de ellos:
a. cuando se tiene como dato su cantidad o tamao del conjunto
b. cuando el conjunto de datos finaliza con un valor negativo.

ESTRUCTURAS DE DATOS.
3.6.7. Vectores
1. Efectuar un algoritmo que permita la carga de un vector de 10 elementos.
2. Efectuar un algoritmo que permita la muestra de los elementos de un vector de 10 elementos.
3. Disear un algoritmo que cargue un vector A con 10 elementos numricos y realice las
siguientes modificaciones:
a. Asignar el valor 11,2 a la tercer posicin del vector A
b. Asignar el valor del elemento de la octava posicin del vector A en la segunda posicin
c. Intercambiar el elemento de la cuarta posicin, con el de la novena posicin del vector A
4. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numrico, duplicar sus valores y luego imprimirlos en el orden ingresado.
5. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numrico y luego imprimirlos en el orden inverso al ingresado.
6. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numrico y luego imprimir:
a. La suma del contenido de los elementos.
b. La cantidad de elementos que sean mayores que 15.
7. Crear un vector de 70 elementos donde cada elemento del vector sea igual a su posicin.
8. Cargar un vector de 50 elementos e informar: cual es el mayor elemento, el menor, y la posicin
de ambos. Considere que los valores no se repiten.
9. Escribir un algoritmo que permita cargar un vector que contenga las notas de un curso de 20
alumnos (controlar que las notas vlidas son entre 0 y 10) indicando:
a. la nota ms alta y la nota ms baja
b. el promedio de notas
c.

el nmero de notas superiores al promedio

d. la cantidad de alumnos aprobados (notas >= a 4)


e. la cantidad de alumnos reprobados.
Al finalizar, mostrar todas las notas y los resultados de los clculos.
10. Cargar un vector con 100 datos numricos, al finalizar la carga calcular y mostrar:
a. promedio de los nmeros positivos
b. promedio de los nmeros negativos
c.

la suma de los elementos que ocupan las posiciones pares del vector

d. la suma de los elementos que ocupan las posiciones impares del vector.

64

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

11. Confeccione un algoritmo que permita leer tres vectores de igual dimensin y luego los sume en
un cuarto vector.
12. Cargar un vector con 100 datos numricos, luego ingresar un nmero X y buscar e informar si X
se encuentra en el vector, mostrando como resultado: Existe el elemento en la posicin .. o
bien, El elemento x no existe.
13. Cargar un vector con 100 datos numricos, luego ingresar un nmero X y buscar e informar si X
se encuentra en el vector y si se encuentra, cuantas veces aparece.
14. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector
numrico y luego imprima cada elemento del vector que vaya precedido inmediatamente por un
elemento nulo.
15. Cargar un vector con las alturas de los N alumnos de un curso. Determinar la media y luego
informar cuantos alumnos son ms altos que la media y cuntos mas bajos.
16. Hacer un programa que permita realizar la suma y el producto de dos vectores de 10 elementos.
El usuario elige la operacin a realizar. Ambos vectores ya estn cargados.
17. En un colegio secundario, se maneja la informacin de las notas de un curso con tres vectores
de longitud N llamados trim1, trim2 y trim3. Los componentes de los vectores son las notas del
primero, segundo y tercer trimestre respectivamente, para cada alumno. Se pide generar un
cuarto vector de nombre prom donde cada componente sea el promedio de los elementos
homlogos de los tres vectores, al finalizar mostrar los tres mejores promedios del curso.
18. Los elementos de un vector numrico de 10 posiciones estn relacionados con la siguiente
expresin: A[i+1] = i*A[i]+i*2 y siendo A[1] = 1. Realizar un algoritmo para calcular los
elementos de este vector.
19. Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos un vector
numrico. Luego mostrar:
a. La posicin (ndice) del primer elemento menor que 0.
b. El valor y posicin del mayor elemento.
20. Dado dos vectores A y B de N y M componentes, realizar un algoritmo que permita cargar dichos
vectores, luego generar un nuevo vector de nombre C que contenga los componentes comunes
de los dos anteriores y mostrar C.
21. Cargar dos vectores: uno con el nmero de empleado y otro con las horas trabajadas por cada
empleado. Cada vector tendr N. Se pide:
a. Promedio de horas trabajadas.
b. Imprimir los nmeros de empleados que trabajaron ms horas que el promedio general.
c.

22.
23.

24.
25.
26.

Imprimir el nmero de empleado que ms horas trabaj y el nmero de empleado que


trabaj menos horas.
Realizar un algoritmo que almacene en un vector los 20 primeros nmeros primos, al finalizar la
carga mostrar el vector cargado.
Realizar un algoritmo que vaya solicitando al usuario la posicin dentro del vector que desea
cargar y luego el valor a cargar. Deber indicar con un mensaje cuando ese elemento ya haya
sido cargado y cuando el vector est completamente cargado.
Ordenar un vector de 5 elementos de menor a mayor.
Ordenar un vector de N elementos de menor a mayor.
Dado un vector de N elementos buscar e imprimir.
a. La cantidad de veces que se encuentra cada nmero dentro del Vector.

b. La cantidad de nmeros distintos dentro del Vector.


27. Cargar un vector de orden N. Se ingresan luego 10 nmeros por teclado. Determinar cuntos de
estos nmeros ingresados estn presentes en el vector.
28. Cargar dos vectores A y B, luego buscar y mostrar cuantos elementos en comn tienen.

3.6.8. Matrices
1. Elaborar un algoritmo que permita cargar nmeros en una matriz de N x M por filas.
2. Elaborar un algoritmo que permita cargar nmeros en una matriz de N x M por columnas.

65

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

3. Elaborar un algoritmo que permita cargar nmeros en una matriz de 6 x 6. Imprimir al final la
suma de las columnas.
4. Elaborar un algoritmo que permita el ingreso de nmeros en una matriz de 10 x 10 e imprima
los elementos de la misma recorriendo por fila y al final de cada fila imprima la suma de esta
ltima.
5. Elaborar un algoritmo que lea nmeros en una matriz cuadrada de 10 x 10. Calcular e imprimir
la suma de los elementos de su diagonal principal.
6. Hacer un algoritmo que me permita cargar los elementos de la diagonal principal de una matriz
de 10 x 10 a un vector.
7. Elaborar un algoritmo que genere una matriz cuadrada de 10 x 10 en la cual se asigne ceros a
todos sus elementos, excepto a los de la diagonal principal, donde asignar unos.
8. Elaborar un algoritmo que cree una matriz cuadrada de 10 x 10 en la cual cargue ceros a todos
sus elementos, excepto a los de la diagonal secundaria, donde se asignarn nmeros ledos por
teclado.
9. Elaborar un algoritmo que cargue nmeros en dos matrices de 5 x 5. Calcular en una tercera
matriz la suma de los elementos de las dos anteriores. Al final mostrar las tres matrices.
10. Hacer un DF que me permita cargar una matriz de M x N, luego calcule y muestre el mayor y
menor elemento de cada fila.
11. Hacer un DF que me permita cargar una matriz de M x N, luego calcule y muestre el menor
elemento de cada columna y la posicin en la que se encuentra.
12. Se deben cargar las notas de cada uno de los 40 alumnos de un curso. Cada alumno tiene 5
notas donde las notas de un alumno corresponden a una fila de una matriz. Elaborar un
algoritmo que calcule e imprima el promedio de cada alumno.
13. En una matriz se tienen las 7 notas correspondientes a cada una de las asignaturas de los 30
alumnos de un curso. Elaborar un algoritmo que calcule e imprima las notas y el promedio de
cada alumno. Cada alumno cursa como mnimo 3 materias y como mximo las 7.
14. Elaborar un algoritmo que cargue nmeros en una matriz de 5 x 10. Calcular la suma de cada
una de sus filas y columnas dejando dichos resultados en dos vectores, uno de 5 elementos para
las filas y otro de 10 elementos para las columnas.
15. Elaborar un algoritmo que permita ingresar nmeros en una matriz en las posiciones
correspondientes al tringulo superior (de la diagonal principal hacia la derecha) teniendo en
cuenta que el resto de la matriz debe permanecer en 0.
16. Elaborar un algoritmo que permita ingresar nmeros en dos matrices una de 5 x 4 y la otra de 4
x 3. Calcular en una tercera matriz el producto de los elementos de las dos anteriores, la matriz
resultado ser de 5 x 3. Al final imprimir las tres matrices.
Nota: Para poder multiplicar matrices, el nmero de filas de una matriz debe coincidir con el
nmero de columnas de la otra (no necesariamente deben ser cuadradas). El producto est
definido por la frmula: c[i,j] = a[i,k] * b[k,j]
17. Elaborar un algoritmo que permita determinar si una matriz cuadrada A ya cargada es identidad.
Nota: Una matriz es considerada identidad si cada elemento a[i,j] = a[j,i].
18. Cargar una matriz de M x N elementos y generar un vector con los valores de una fila indicada
por teclado. No olvidarse de validar el nmero de fila ingresado.
19. Elaborar un algoritmo que permita ingresar los datos de una matriz de 10 x 5 y genere la matriz
transpuesta.
20. En una agencia de quiniela se tienen los valores de los nmeros ganadores y los premios de los
mismos. Los datos estn cargados en una matriz de 365 filas y dos columnas (una fila para cada
da). En la primer columna el nmero ganador y en la segunda el monto del premio. Realizar un
algoritmo que determine cuntas fueron las ocurrencias de cada nmero y que monto de dinero
le correspondi a cada nmero.
21. Se carga una matriz de 50 x 3 con los siguientes datos sobre nacimientos en una ciudad: sexo
(1: Masculino 2: Femenino), mes y ao de nacimiento. Al finalizar la carga se pide que informe:
a. cantidad de varones y cantidad de mujeres
b. cantidad de nacimientos en el primer semestre
c. cantidad de nacimientos en el segundo semestre
d. cantidad de personas que actualmente son mayores de 5 aos.

66

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

22. En una matriz de dimensiones 4 x 4 se pide que encuentre la ubicacin del mayor y menor
elemento. Mostrar la matriz completa y las ubicaciones encontradas con los valores respectivos.
23. Lea una matriz de N x M (variables ingresadas por teclado) e indique:
a. cantidad de elementos positivos
b. cantidad de elementos negativos
c.

cantidad de ceros

d. mayor elemento que contiene la matriz y cuantas veces figura dicho elemento
24. Hacer un diagrama que permita cargar una matriz de 5 x 5 y ordene cada columna de mayor a
menor.
25. Hacer un diagrama que permita cargar una matriz de 5 x 5, luego ingrese un nmero de fila,
validarlo y, por ltimo ordene la fila indicada de mayor a menor.
26. Cargar dos matrices MAT1 y MAT2 ambas cuadradas de orden N. Intercambiar los elementos de
la diagonal principal.
27. Leer una matriz de dimensiones N x M y realizar y mostrar:
a. un vector llamado POS que contendr los elementos positivos de la matriz
b. un vector llamado NEG que contendr los elementos negativos de la matriz
c.

el mayor elemento del vector POS

d. el menor elemento del vector NEG


e. el promedio de los elementos de la matriz, del vector POS y del vector NEG
f.

la matriz original y los dos vectores.

3.6.9. Ejercicios Integradores


1.- Disear un DFD que permita mostrar por pantalla el siguiente men:
1. Factorial de un N
2. Divisin de dos nmeros A y B.
3. Salir.
El usuario debe ingresar la opcin que desea realizar. Slo podr salir del programa si ingresa 3.
Si elije 1 deber pedir al usuario que ingrese un nmero luego deber calcular el factorial y
mostrar el resultado. Debe tener en cuenta que: el nro. debe ser positivo (el programa deber
pedir que ingrese el nmero hasta que ingrese un nro. positivo).
Si elije 2 deber pedir al usuario que ingrese dos nmeros A y B y calcular A dividido B.
Debe tener en cuenta que: el nro. B debe ser diferente de cero (el programa deber pedir que
ingrese el nmero hasta que ingrese un nro. distinto de cero).
Si ingresa cualquier otro nro. Deber informar ERROR y mostrar nuevamente el men.
2.- Disear un DFD que permita el ingreso de 20 notas (NOTA) e informe:
a) la mayor nota ingresada (MA),
b) la menor nota ingresada (ME),
c) la cantidad de aprobados (mayores o iguales a 4) (CA),
d) el promedio de las notas (PN) y
e) la posicin de la mayor (PM).
Realizar la prueba de escritorio para 5 notas utilizando los siguientes valores:
NOTA MA ME CA PN PM
Otras
variables..
1
4.25
-5.30
-3.75
2
7.50
3
10.00
4
6.30
5
2.45

67

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Tener en cuenta que: Las notas ingresadas no se repiten. Se debe respetar el nombre de las
variables. Si necesita ms variables aclarar para qu utiliza cada una. Las notas ingresadas deben
ser validadas. Se debe controlar que las notas ingresadas sean vlidas, si no lo son se debe
reingresar la nota; o sea que en total se tendrn 20 notas vlidas (entre 0.00 y 10.00 inclusive).
Indicar el sentido de las flechas y lneas de flujo, el V/F de los rombos.
3. Una empresa de servicios de encomiendas realiza un control semanal de los volmenes de
carga que transporta, el empleado responsable de llevar adelante el registro debe cargar la
cantidad de bultos por da que sale desde el depsito (verificar que los datos que ingresa el
usuario correspondan a una cantidad valida).
Una vez almacenado en el registro, se deber obtener el promedio semanal de las cargas.
(Bultos por da que sale desde el depsito).
Luego se deber encontrar los das en que la carga transportada supere al promedio semanal
obtenido, e informar cuantos son.
Un ejemplo:
Lunes
Martes
125
325

Mircoles
100

Jueves
85

Viernes
300

Sbado
510

Domingo
150

Promedio semanal: 227.86 bultos transportados, esto es 228.


Superan el promedio los das martes, viernes y sbado.
Informar: 3 das.
4. Una empresa de transporte lleva un control mensual de los pasajes vendidos Ober - Bs As. El
encargado de ventas necesita cargar y almacenar los datos correspondientes a la cantidad de
pasajes vendidos mensualmente, durante el transcurso de un ao. (Verificar que los datos que
ingresa el usuario correspondan a una cantidad vlida). Una vez almacenados los datos se
quiere realizar un estudio estadstico para el mes de Mayo y determinar e informar cuando se
venden ms pasajes los das pares o impares:
Pasajes das pares. (Esto es: 0, 2,4,, 28,30)
Pasajes das impares. (Esto es: 1, 3,5,, 29,31)
Un ejemplo: Carga matriz de 31x12.
D/A 1
2
3
4
5
6
Ene
Feb
Mar
Abr
May
Jun

Oct
Nov
Dic
Suma das pares: 380.
Suma das impares: 530.
Informar: Das impares.

..

..

26

27

28

29

30

31

5. Una empresa de transporte lleva el control de las ventas de pasajes por cada unidad que realiza
la lnea Ober- Buenos Aires. Esta lnea permite la venta de tarifas intermedias.
El encargado de ventas necesita cargar y almacenar los datos correspondientes a una unidad de
transporte con un total de 36 butacas.
Estado de butacas: Libre = 0, Ocupado = 1. (Verificar dato ingresado valido).
Tarifa por butacas vendidas: x $. (Verificar dato ingresado valido).

68

TALLER DE INFORMTICA

CAPITULO 3. Algoritmos

Una vez cargado los datos, se quiere obtener:


a) la cantidad de butacas ocupadas y libres de la unidad de transporte.
b) el importe total en $ de los pasajes vendidos.
Se conoce el costo de un pasaje Ober- Buenos Aires cuesta: $130.
c) Determine cuntos viajan a Buenos Aires, y cuntos con tarifa intermedia.
Un ejemplo: Carga matriz de 36x2. Corresponde a una unidad de transporte.
Asiento
Estado
Tarifa $

1
0
0

2
0
0

3
0
0

4
1
90

5
1
90

6
0
0

7
0
0

8
1
70

9
0
0

10
1
80

Butacas libres: 7
Butacas ocupadas: 36-7=29
Importe total: X $

69

..
..
..

..
..
..

31
0
0

32
0
0

33
1
130

34
1
130

35
1
90

36
1
90

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

CAPITULO 4.
LENGUAJES DE PROGRAMACION

El objetivo de este apunte es proporcionar de una gua para aprender a programar bajo el
Entorno Grfico del Sistema Operativo Linux en Lenguaje C.
Para ello, luego de varios intentos y pruebas sobre las aplicaciones a utilizar en el mbito del
Software Libre, se opt por la Distribucin de Linux Ubuntu y, como interface de IDE (Integrated
Development Environment), el Anjuta. Este apunte est destinado a los alumnos de los cursos de
Taller de Informtica y Computacin de la Facultad de Ingeniera de Ober.
Como aclararacin se expone que el apunte fue realizado mediante la compilacin / edicin de
materiales extrados fundamentalmente de Internet. En algunos casos con modificaciones parciales
y, en otros, modificaciones totales. Otro aporte utilizado, sobre todo en la organizacin de los
temas, fue obtenido de Libros; finalmente, se utilizaron los ejemplos de guas y apuntes de las
Ctedras de aos anteriores. En conclusin, este apunte es el resultado del trabajo de muchas
personas, organizado de la manera ms apropiada para el dictado de las asignaturas mencionadas
y poder conseguir los objetivos propuestos en las mismas.
Los ejemplos de cdigo de este apunte fueron probados sobre:
gcc versin 4.0.3 (Ubuntu 4.0.3-1ubuntu5)
Ubuntu 6.06 LTS - la versin Dapper Drake - publicada en junio de 2006.
Anjuta 1.2.4a (http://anjuta.org/)
El libro se divide en partes, la Parte 1 incluye los captulos que se desarrollan en la Materia
Taller de Informtica. La Parte 2 y 3 son los temas que conjuntamente con la Parte 1 deben ser
vistos en la Materia Computacin.
En los Apndices fueron dispuestos materiales que se considera pueden ser importantes como
consulta o complemento.
Imgenes utilizadas a lo largo del texto

70

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.1. INTRODUCCIN
EL lenguaje C fue creado por Dennis Ritchie en los laboratorios de la Bell Telephone en 1972. El
mismo fue pensado para desarrollar un Sistema Operativo llamado UNIX. Este lenguaje es el
sucesor del lenguaje llamado B (de all el nombre C).
Debido a la flexibilidad y poder de programacin, se extendi rpidamente y empezaron a
surgir distintas versiones. Como consecuencia de esto nace un comit llamado ANSI (American
National Estndar Institute) el cul define lo que se conoce como Standard C o como Estndar
ANSI C.

4.1.1. Por qu usar C?

Es poderoso y flexible: dadas las caractersticas del lenguaje, permite el desarrollo de


proyectos como sistemas operativos, procesadores de texto, hojas de clculo, etc.
Es un lenguaje comn: como est muy difundido su uso, existe una amplia variedad de
compiladores y accesorios tiles para el programador.
Es transportable: se puede correr en cualquier tipo de computadora, esta ventaja se ve
aumentada con el Estndar C.
Posee pocas palabras clave: la base sobre la cual est construida la funcionalidad del
lenguaje tiene pocas palabras claves.
Es modular: el cdigo puede y debe ser escrito en mdulos llamado funciones que
pueden ser utilizadas y re-utilizadas por otras aplicaciones o programas.
El lenguaje C++ es una versin mejorada del C, lo que significa que tiene todo lo que
tiene el Estndar C ms agregados para la Programacin Orientada a Objetos.

Que diferencia hay entre C y C++? C++ es sper conjunto de C, es decir que C es un
conjunto de C o C est contenido por C++.
El C++ incorpora nuevas caractersticas sin comprometer ninguna de las bondades del C, entre
las cosas que se agreg son el concepto de clases, herencia, funciones virtuales del lenguaje
Simula67 y sobrecarga de operadores del Algol68 (caractersticas que veremos en detalle en el
curso).
Quien cre y cuando el C++?
El C++ fue desarrollado por Bjarne Strousrup, en los laboratorio de Bell a principios de los 80,
esto es 10 aos despus que el Lenguaje C.
Son compatibles los programas de C con C++?
Uno de los grandes aciertos de C++, fue mantener la compatibilidad con C, de este modo
cualquier programa hecho en C puede ser considerado tambin como un programa de C++.
Hay un Estndar para el C++?
S. En forma resumida, el ANSI define un conjunto de reglas; cualquier compilador de C o de
C++ debe cumplir esas reglas, si no, no puede considerarse un compilador de C o C++. Estas
reglas definen las caractersticas de un compilador en cuanto a palabras reservadas del lenguaje,
comportamiento de los elementos que lo componen, funciones externas que se incluyen, etc. Un
programa escrito en ANSI C o en ANSI C++, podr compilarse con cualquier compilador que
cumpla la norma ANSI. Se puede considerar como una homologacin o etiqueta de calidad de un
compilador.

71

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Hay caractersticas no estndares en C++?


Si, todos los compiladores incluyen, adems del ANSI, ciertas caractersticas no ANSI, por
ejemplo libreras para grficos. Pero mientras no usemos ninguna de esas caractersticas, sabremos
que nuestros programas son transportables, es decir, que podrn ejecutarse en cualquier
ordenador y con cualquier sistema operativo. Por eso el desarrollo de un programa bajo, por
ejemplo Dev C++ de Bloodshed, podra no compilarse bajo Anjuta.

72

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.2. LENGUAJE C
Para poder crear un programa en lenguaje C debemos realizar una serie de pasos que nos
permitirn pasar de nuestro programa escrito en cdigo fuente a nuestro archivo ejecutable.
El lenguaje C es compilado, esto significa que un programa compilador lee el cdigo fuente
completo escrito por el programador, lo convierte en cdigo objeto tambin conocido como cdigo
binario o cdigo mquina. Una vez compilado, el linker enlazar las libreras dentro de su cdigo
objeto y as obtendr, finalmente el programa ejecutable. Veamos en detalle cada uno de estos
conceptos.

4.2.1. Operaciones bsicas de programacin.


4.2.1.1. Creacin del fichero fuente.
Los programas en C y C++ se escriben con la ayuda de un editor de textos (pico vi) del
mismo modo que cualquier texto corriente.
Los ficheros que contienen programas en C o C++ en forma de texto se conocen como fichero
fuente, y el texto del programa que contiene se conoce como programa fuente.
El usuario siempre escribir programas fuentes y los guardaremos en ficheros fuentes.
Los programas fuente no pueden ejecutarse. Son ficheros de texto, pensados para que ser
comprendidos por los seres humanos, pero incomprensibles para los ordenadores.

4.2.1.2. Creacin del fichero objeto.


Para obtener un programa ejecutable hay que seguir algunos pasos.
El primer paso es compilar o traducir el programa fuente a su cdigo objeto equivalente. Este
es el trabajo que hacen los compiladores de C y C++.
Consiste en obtener un fichero equivalente a nuestro programa fuente comprensible para el
ordenador, este fichero se conoce como fichero objeto,
y su contenido como cdigo objeto.
Los compiladores son programas que leen un fichero de texto que contiene el programa fuente
y generan un fichero que contiene el cdigo objeto. El cdigo objeto no tiene ningn significado
para los seres humanos, al menos no directamente. Adems es diferente para cada ordenador y
para cada sistema operativo.
Por lo tanto, existen diferentes compiladores para diferentes sistemas operativos y para cada

tipo de ordenador.

Estas tareas las realizaremos, como mencionamos con anterioridad, con el IDE Anjuta, pero se
podran realizar en modo de consola, utilizando un compilador por ejemplo g++.

4.2.1.3. Creacin del fichero ejecutable.


Uso de libreras.
Junto con los compiladores de C y C++, se incluyen ciertos ficheros llamados libreras.
Las libreras contienen cdigo objeto de programas que permiten hacer cosas comunes como,
por ejemplo, leer desde el teclado, escribir en pantalla, manejar nmeros, realizar funciones
matemticas, etc.

73

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Las libreras estn clasificadas por el tipo de trabajos que hacen, hay libreras de entrada y
salida, matemticas, de manejo de memoria, de manejo de textos, etc.
Hay un conjunto de libreras muy especiales, que se incluyen con todos los compiladores de C y
de C++. Son las libreras ANSI o estndar. Pero tambin hay libreras no estndar, y dentro de
stas hay libreras pblicas y comerciales. En este curso slo usaremos libreras ANSI.
Ficheros ejecutables y enlazadores.
Cuando obtenemos el fichero objeto, an no hemos terminado el proceso.
El fichero objeto, a pesar de ser comprensible para el ordenador, no puede ser ejecutado.
Hay varias razones para eso:
1. Nuestros programas usaran, en general, funciones que estarn incluidas en libreras
externas, ya sean ANSI o no. Es necesario combinar nuestro fichero objeto con esas
libreras para obtener un ejecutable.
2. A menudo, nuestros programas estarn compuestos por varios ficheros fuente y, de cada
uno de ellos, se obtendr un fichero objeto. Es necesario unir, todos los ficheros objeto
ms las libreras, en un nico fichero ejecutable.
3. Hay que dar ciertas instrucciones al ordenador para que cargue en memoria el programa y
los datos y para que organice la memoria de modo que se disponga de una pila de tamao
adecuado. La pila es una zona de memoria que usa el programa para intercambiar datos
con otros programas o con otras partes del propio programa. Veremos esto con ms detalle
durante el curso.
Existe un programa que hace todas estas cosas, se trata del "link", o enlazador.
El enlazador toma todos los ficheros objeto que componen nuestro programa, los combina con
los ficheros de librera que sea necesario y crea un fichero ejecutable.
Una vez terminada la fase de enlazado, ya podremos ejecutar nuestro programa.

4.2.2. Manejo de Errores.


Por supuesto, somos humanos, y por lo tanto nos equivocamos. Los errores de programacin
pueden clasificarse en varios tipos, dependiendo de la fase en que se presenten.
Pueden

ser:
Errores de sintaxis.
Warnings o avisos.
Errores de enlazado.
Errores de ejecucin.
Errores de diseo.

4.2.2.1. Errores de sintaxis.


Los errores de sintaxis son errores en el programa fuente. Pueden deberse a palabras
reservadas, palabras mal escritas, expresiones errneas o incompletas, variables no definidas, etc.
Los errores de sintaxis se detectan en la fase de compilacin. El compilador, adems de generar
el cdigo objeto, nos dar una lista de errores de sintaxis. De hecho nos dar slo una cosa o la
otra, ya que si hay errores no es posible generar un cdigo objeto.

74

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.2.2.2. Warnings o Avisos.


Adems de errores, el compilador puede dar tambin Avisos o Warnings.
Los avisos son errores, pero no lo suficientemente graves como para impedir la generacin del
cdigo objeto. No obstante, es importante corregir estos avisos, ya que el compilador tiene que
decidir entre varias opciones, y sus decisiones no tienen por qu coincidir con lo que el
programador pretende. Las decisiones se basan en las directivas que los creadores del compilador
decidieron durante su creacin.

4.2.2.3. Errores de enlazado.


El programa enlazador tambin puede encontrar errores que normalmente se refieren a
funciones que no estn definidas en ninguno de los ficheros objetos ni en las libreras. Puede que
hayamos olvidado incluir alguna librera, algn fichero objeto o que hayamos olvidado definir
alguna funcin o variable, o lo hayamos hecho mal.

4.2.2.4. Errores de ejecucin.


Aunque se haya obtenido un fichero ejecutable, es posible que se produzcan errores.
En el caso de los Errores de ejecucin normalmente no obtendremos mensajes de error, sino
que simplemente el programa terminar bruscamente. Estos errores son ms difciles de detectar y
corregir.
Existen programas auxiliares para buscar estos errores, son los llamados depuradores o
debuggers. Estos programas permiten detener la ejecucin de nuestros programas, inspeccionar
variables y ejecutar nuestro programa paso a paso. Esto resulta til para detectar excepciones,
errores sutiles, y fallos que se presentan dependiendo de circunstancias distintas.

4.2.2.5. Errores de diseo.


Finalmente los errores ms difciles de corregir y prevenir.
Si nos hemos equivocado al disear nuestro algoritmo, no habr ningn programa que pueda
ayudar al programador a corregir los errores de diseo. Contra estos errores slo cabe practicar,
pensar. Puede ayudar a solucionar este tipo de errores la opcin depurar que generalmente poseen
los compiladores del lenguaje C.

75

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.3. ESTRUCTURA DE UN PROGRAMA


Los programas de computadoras varan sustancialmente en cuanto al propsito, estilo y
complejidad. Pero la mayora debe: ingresar y almacenar datos, procesar los datos para almacenar
los resultados deseados y mostrar, almacenar o imprimir los resultados obtenidos.
Cada dato utilizado durante la ejecucin del programa deber ser descrito para que el
compilador lo reconozca, sepa cmo almacenarlo y recuperarlo; se deber reservar memoria para
que pueda almacenar la cantidad de datos necesarios.
Una vez almacenados los datos, stos debern procesarse. El proceso vara segn el propsito
del programa.
Finalmente, los datos procesados debern ponerse a disposicin del usuario. Cuando se utiliza
el lenguaje C para escribir un programa se debe tener en cuenta que:

Todos los programas poseen una funcin main() que indica el punto donde se inicia la
ejecucin. La ejecucin finaliza cuando se encuentra el final de main.
Debe declarar todas las variables antes de usarlas.

Las partes ms importantes de un programa en C son:


Directivas del pre-procesador: #include y #define.
Declaracin de variables globales.
Prototipos de funciones.
Declaracin de clases.
Funcin main.
Definicin de funciones.
Definicin de clases.

4.3.1. Directivas del preprocesador


Las lneas que comienzan con el smbolo # son indicaciones para el compilador o directivas del
preprocesador.
Sintaxis:
#include <archivo.h>
La directiva include le indica al compilador que lea y compile el contenido del archivo con
extensin .h que contiene las descripciones de las funciones de librera utilizadas a lo largo del
programa.
Por ejemplo:
#include <stdio.h>
Le indica al compilador que compile el contenido del archivo stdio.h.
Sintaxis:
#define nombre valor

76

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

La directiva define determina un reemplazo o sustitucin. La directiva le indica al compilador


que cada vez que en el programa aparezca nombre sea reemplazado por valor. Esta sentencia
resulta til cuando son programas largos y nombre se utiliza varias veces ya que, si cambia el valor
de nombre se debe modificar una sola vez al principio del programa.
Por ejemplo:

#define NUMERO 5.3

5.3.

Le indica al compilador que cada vez que aparezca NMERO en el programa sea sustituido por

4.3.2. Declaracin de variables globales


Las expresiones que permiten realizar clculos dentro de los programas estn formadas por
variables, constantes y operadores.
Las variables se deben declarar antes de ser utilizadas en el programa, ya que el compilador
debe conocer qu tipo de dato es una variable antes de poder compilar cualquier sentencia que la
use.
El lugar donde se declara una variable afecta mucho la manera en que otras partes del
programa pueden utilizarla.
Las reglas que determinan cmo se puede usar una variable basada en el lugar en que fue
declarada se llaman reglas de alcance del lenguaje.
Si la variable se declara en sta zona del programa, fuera de todas las funciones, incluyendo la
funcin main(), se denomina variable global y se puede utilizar en cualquier parte del programa.

4.3.3. Prototipos de funciones


Antes de utilizar una funcin en el programa, sta se debe definir.
En esta porcin del programa se definen las funciones a utilizar indicando el nombre de la
funcin, el nmero y tipos de argumentos que utilizar durante la ejecucin. Finaliza cada sentencia
con punto y coma (;).
Esta definicin se realiza mediante los prototipos de funciones.

4.3.4. Declaracin de clases


Lugar dentro de los programas donde se deben crear las nuevas clases, se les debe asignar un
nombre utilizando las sentencias struc, union o class de C++.

4.3.5. Funcin main()


Todos los programas escritos en C poseen una funcin llamada main(). Es la funcin que se
ejecuta en primer lugar cuando comienza a funcionar el programa. El programa posee una sola
funcin main().
En la siguiente lnea aparece una llave { que indica el grupo de instrucciones que definen lo
que suceder cuando se ejecute el programa.

77

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Cada grupo de sentencias finaliza con una llave }.

4.3.6. Definicin de funciones


Esta zona contiene el cdigo para cada funcin declarada. El encabezamiento de la definicin
ser exactamente igual a la declaracin, excepto que no finaliza con punto y coma (;).

4.3.7. Definicin de clases


En esta parte del programa se deben definir los objetos o instancias de la clase declarada en la
zona 4.3.4.

78

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.4. DATOS, VARIABLES Y CONSTANTES


4.4.1 Datos
Como se haba mencionado en el captulo 3, Cada dato utilizado durante la ejecucin del
programa deber ser descrito para que el compilador lo reconozca, sepa cmo almacenarlo y
recuperarlo; se deber reservar memoria para que pueda almacenar la cantidad de datos
necesarios.
La declaracin de cada tem de datos consiste en indicar qu tipo de dato es y darle un nombre
que lo identifique.
En C hay tipos bsicos de datos: carcter (character), entero (integer), punto flotante (floating
point) y puntero (point); aunque, en cada versin del lenguaje, pueden aparecer ms o menos
tipos de datos.
Por ejemplo, en C slo existen cinco tipos fundamentales y los tipos enumerados, C++ aade
un sptimo tipo, el bool, y el resto de los tipos son derivados de ellos.
Los nmeros son los datos fundamentales utilizados por los programas de computadoras. El
contenido de la memoria consiste en nmeros binarios almacenados en grupos de 8 bits (1 byte) o
16 bits (2 bytes o 1 word). An cuando un programa de computadora trabaje con letras o grficos,
bsicamente est involucrando una serie de nmeros almacenados en memoria.
Los diferentes tipos de datos dependen, en realidad, de la cantidad de bytes que ocupen en
memoria.

Para obtener informacin ms detallada acerca de los tipos de datos, la cantidad de memoria
reservada remitirse al APENDICE Tipos de datos
Cuando se desea definir tems de datos que almacenen palabras (dos o ms caracteres) nos
encontramos ante el tipo de dato string o cadena de caracteres.
Por ejemplo:

`hola
Juan Prez
Este tipo de datos merece un desarrollo especial por ello se ver en el captulo 9 que estudia el
tema de arreglos.

4.4.2. Variables
El tem de dato llamado variable, se refiere a un espacio de memoria cuyo contenido se
modificar de acuerdo a las circunstancias durante la ejecucin del programa.
Cada variable utilizada en el programa deber ser declarada antes de ser utilizada.
La declaracin de una variable le indica al lenguaje que se pretende utilizar una variable
particular y qu tipo de dato almacenar. La declaracin se forma por un tipo de dato seguido de
uno o ms nombres de variables.

79

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

La inicializacin de una variable significa asignarle al espacio de memoria reservado un valor


particular. Resulta conveniente realizarlo porque cuando se declara una variable, el espacio de
memoria reservado, podr contener cualquier valor.

4.4.2.1. Identificadores
Un identificador es el nombre que permite identificar un espacio de memoria mediante un
nombre vlido para el lenguaje.
El lenguaje C es flexible pero posee ciertas reglas que debemos respetar cuando definimos
identificadores para las variables que utilizaremos en el programa.
Reglas para dar nombre a las variables:

Slo se pueden usar letras (maysculas o minsculas), nmeros y ciertos caracteres no


alfanumricos, como el '_', pero nunca un punto, coma, guin, comillas o smbolos
matemticos o interrogaciones.
El primer carcter no puede ser un nmero.
C y C++ distinguen entre maysculas y minsculas, de modo que los identificadores
nmero y Nmero son diferentes.
Los
primeros
32
dgitos
son
significativos,
esto
significa
que
La_cantidad_total_de_dinero_en_mi_cuenta
y
La_cantidad_total_de_dinero_en_mi_banco sern consideradas como la misma
variable.

4.4.2.2. Declaracin de variables


Una caracterstica del C es la necesidad de la declaracin de las variables que se usarn en el
programa. Aunque esto resulta chocante para los que se aproximan al C desde otros lenguajes de
programacin, es en realidad una caracterstica muy importante y til de C, ya que ayuda a
conseguir cdigos ms compactos y eficaces, y contribuye a facilitar la depuracin, la deteccin y
correccin de errores.
Sintaxis:

[tipo] [lista_de_identificadores];
Tipo debe ser un tipo de datos vlido y lista_de_identificadores puede ser uno o ms
identificadores separados por coma (,). La declaracin de variables puede considerarse como una
sentencia. Desde este punto de vista, la declaracin terminar con un ";".
Por ejemplo:

int numero;
float promedio, final;
char letra;
Tambin es posible inicializar las variables dentro de la misma declaracin.
Por ejemplo:

int a = 1234;

80

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

bool seguir = true, encontrado;


char letra = k;
Se declarara las variables "a", "seguir", "encontrado" y letra; y adems se inicia los valores
de "a" en 1234, seguir en "true" y letra con k.
En C, contrariamente a lo que sucede con otros lenguajes de programacin, las variables no
inicializadas tienen un valor indeterminado, contienen lo que normalmente se denomina "basura",
tambin en esto hay excepciones como veremos ms adelante.

4.4.2.2.1. Declaracin de una variable de tipo entero (integer).


[signed |unsigned]
[signed |unsigned]
[signed |unsigned]
[signed |unsigned]

[short | long | long long ] int <identificador o nombre>


long long [ int ] <identificador o nombre>
long [ int ] <identificador o nombre >
short [ int ] <identificador o nombre >

4.4.2.2.2. Declaracin de una variable de tipo punto flotante (float).


float <identificador o nombre >

4.4.2.2.3. Declaracin de una variable de tipo punto flotante doble precisin (double).
[long] double <identificador o nombre >

4.4.2.2.4. Declaracin de una variable sin tipo (void).


void <identificador o nombre >
Este es una variable especial que indica la ausencia de tipo. Se usa en funciones que no
devuelven ningn valor, tambin en funciones que no requieren parmetros, aunque este uso slo
es obligatorio en C, y opcional en C++, tambin se usar en la declaracin de punteros genricos.

4.4.2.2.5. Declaracin de una variable de tipo enumerado (enum).


enum [<identificador_de_enum>] { <nombre> [= <valor>], ...} [lista_de_variables];
Este tipo nos permite definir conjuntos de constantes, normalmente de tipo int, llamados datos
de tipo enumerado.
Las variables declaradas de este tipo slo podrn tomar valores entre los definidos.
El identificador de tipo es opcional, y nos permitir declarar ms variables del tipo enumerado
en otras partes del programa. La lista de variables tambin es opcional. Sin embargo, al menos uno
de los dos componentes opcionales debe aparecer en la definicin del tipo enumerado.
Varios identificadores pueden tomar el mismo valor, pero cada identificador slo puede usarse
en un tipo enumerado.
Por ejemplo:

enum tipo_horas {una=1, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez,
once, doce, trece=1, catorce, quince, dieciseis, diecisiete, dieciocho, diecinueve,
veinte, veintiuna, veintids, veintitrs, veinticuatro =0};

81

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

En este caso, una y trece valen 1, dos y catorce valen 2, etc. Y veinticuatro vale 0. Como se ve
en el ejemplo, una vez se asigna un valor a un elemento de la lista, los siguientes toman valores
correlativos. Si no se asigna ningn valor, el primer elemento tomar el valor 0.

4.4.2.2.6. Declaracin de una variable de tipo boleana (boolean).


bool <identificador o nombre>
Las variables de este tipo slo pueden tomar dos valores "true" o "false". Sirven para evaluar
expresiones lgicas.
Este tipo de variables se puede usar para almacenar respuestas, por ejemplo: Posees carnet
de conducir? O para almacenar informaciones que slo pueden tomar dos valores, por ejemplo:
qu mano usas para escribir?
En estos casos debemos acuar una regla, en este ejemplo, podra ser:
diestro->"true", zurdo->"false".

4.4.2.3. Inicializacin de variables


En C se pueden asignar valores a la mayora de las variables a la vez que se las declara.
La inicializacin de una variable se realiza poniendo un signo igual y una constante despus del
identificador.
Sintaxis:

[tipo] [identificador = constante];


Por ejemplo:

char a = p; int num = 0;

4.4.3 Ejercicios sobre Variables


1) Cules de los siguientes son tipos vlidos de variables? Marcar la opcin correcta.
a) unsigned char
S
No
b) long char
S
No
c) unsigned float
S
No
d) double char
S
No
e) signed long
S
No
f) unsigned short
S
No
g) signed long int
S
No
h) long double
S
No
i) enum dia {lunes, martes, miercoles, jueves, viernes, sabado, domingo};
S
No
j) enum color {verde, naranja, rojo}; enum fruta {manzana, fresa, naranja, platano};S No
k) long bool
S
No

82

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.5. CONSTANTES
Las constantes son muy similares a las variables, con la diferencia que stas solo pueden tomar
un valor en el momento de la declaracin, luego cualquier intento de modificacin ser tomado
como un error por parte del compilador.
Las constantes se declaran del mismo modo que las variables, solamente se debe anteponer la
sentencia const antes del tipo de dato.
Por ejemplo:

const int mayor = 25;

4.5.1. Normas para la notacin


Veremos las reglas que rigen la escritura de las constantes en C segn diversos sistemas de
numeracin y que uso tiene cada uno.
Por qu es necesaria la notacin?
En todos los casos, especificar el tipo de la constante tiene como objetivo evitar que se realicen
conversiones de tipo durante la ejecucin del programa, obligando al compilador a hacerlas durante
la fase de compilacin.
Por ejemplo:

float x = 0.0;
if(x <= 1.0f) x += 0.01f;
Si en el ejemplo hubiramos escrito "if(x <= 1)...", el compilador almacenara el 1 como un
entero, y durante la fase de ejecucin se convertir ese entero a float para poder compararlo con x,
que es float. Al poner "1.0" estamos diciendo al compilador que almacene esa constante como un
valor en coma flotante.
Lo mismo se aplica a las constantes long, unsigned y char.

4.5.1.1. Constantes "int".


En C se usan tres tipos de numeracin para la definicin de constantes numricas, el decimal, el
octal y el hexadecimal, segn se use la numeracin en base 10, 8 16, respectivamente.
Por ejemplo:

El nmero 127, se representar en:


notacin decimal como 127
octal como 0177
hexadecimal como 0x7f.

En notacin octal se usan slo los dgitos del '0' al '7'.


En la notacin hexadecimal se usan 16 smbolos, los dgitos del '0' al '9' tienen el mismo valor
que en decimal, para los otros seis smbolos se usan las letras de la 'A' a la 'F', indistintamente en
maysculas o minsculas. Sus valores son 10 para la 'A', 11 para la 'B', y sucesivamente, hasta 15
para la 'F'.
Segn el ejemplo el nmero 0x7f, donde "0x" es el prefijo que indica que se trata de un
nmero en notacin hexadecimal, sera el nmero 7F, es decir,
83

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

7F=7*16+15=127. Del mismo modo que el nmero 127 en notacin decimal sera,
1*10+2*10+7=127.
En octal se usa como prefijo el dgito 0. El nmero 0177 equivale a 0177=1*8+7*8+7=127.

Hay que tener mucho cuidado con las constantes numricas, en C y C++ no es el mismo
nmero el 0123 que el 123, aunque pueda parecer otra cosa. El primero es un nmero octal y el
segundo decimal.
La ventaja de la numeracin hexadecimal es que los valores enteros requieren dos dgitos por
cada byte para su representacin. As un byte puede tomar valores hexadecimales entre 0x00 y
0xff, dos bytes entre 0x0000 y 0xffff, etc. Adems, la conversin a binario es casi directa, cada
dgito hexadecimal se puede sustituir por cuatro bits, el '0x0' por '0000', el '0x1' por '0001', hasta el
'0xf', que equivale a '1111'. En el ejemplo el nmero 127, o 0x7f, sera en binario '01111111'.
Con la numeracin octal es anlogo, salvo que cada dgito agrupa tres bits.
As un byte se puede tomar valores octales entre 0000 y 0377, dos bytes entre 0000000 y
0177777, etc. Adems, la conversin a binario es casi directa, cada dgito octal se puede sustituir
por tres bits, el '0' por '000', el '1' por '001', hasta el '7', que equivale a '111'. En el ejemplo el
nmero 127, o 0177, sera en binario '01111111'.
De este modo, cuando trabajemos con operaciones de bits, nos resultar mucho ms sencillo
escribir valores constantes usando la notacin hexadecimal u octal.
Por ejemplo, resulta ms fcil predecir el resultado de la siguiente operacin:

A = 0xaa & 0x55;


Que:

A = 170 & 85;


En ambos casos el resultado es 0, pero en el primero resulta ms evidente, ya que 0xAA es en
binario 10101010 y 0x55 es 01010101, y la operacin "AND" entre ambos nmeros es 00000000,
es decir 0.
Ahora se propone al alumno intentarlo con los nmeros 170 y 85.-

4.5.1.2. Constantes "long".


Para trabajar con valores constantes "long" debemos usar el sufijo "L". Esto resulta
conveniente, sobre todo, al utilizar las constantes en expresiones condicionales y, por coherencia,
tambin en expresiones de asignacin.
Por ejemplo:

long x = 123L;
if(x == 0L) cout << "Valor nulo" << endl;
Puede suceder que el compilador nos seale un error cuando usemos constantes long sin
aadir el sufijo L.

84

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:

if(x == 1343890883) cout << "Nmero long int" << endl;


Esta sentencia har que el compilador emita un error ya que no puede usar un tamao mayor
sin una indicacin explcita.
Hay casos en los que los tipos "long" e "int" tienen el mismo tamao, en ese caso no se
producir error, pero no podemos predecir que nuestro programa se compilar en un tipo concreto
de compilador o plataforma.

4.5.1.3. Constantes "long long".


Para trabajar con valores constantes "long long" debemos usar el sufijo "LL", sobre todo
cuando esas constantes aparecen en expresiones condicionales o de asignacin.
Por ejemplo:

long long x = 16575476522787LL;


if(x == 1LL) cout << "Valor nulo" << endl;
Como cuando se utilizan constantes long, a menudo recibiremos errores del compilador cuando
usemos constantes long long sin aadir el sufijo LL.
Por ejemplo:

if(x == 16575476522787) cout << "Nmero long long" << endl;


Esta sentencia har que el compilador emita un error ya que no puede usar un tamao mayor
sin una indicacin explcita.

4.5.1.4. Constantes "unsigned".


Del mismo modo, cuando trabajamos con valores constantes "unsigned" debemos usar el sufijo
"U" para las mismas situaciones que hemos indicado para las constantes "long".
Por ejemplo:

unsigned int x = 123U;


if(x == 3124232U) cout << "Valor encontrado" << endl;

4.5.1.5. Constantes "unsigned long".


En una constante, es posible utilizar los modificadores "unsigned" y "long", en ese caso
debemos usar el sufijo "UL" para las mismas situaciones que hemos indicado para las constantes
"long" y "unsigned".
Por ejemplo:

unsigned long x = 123456UL;


if(x == 3124232UL) cout << "Valor encontrado" << endl;

4.5.1.6. Constantes "unsigned long long".


Tambin es posible combinar, en una constante, los modificadores "unsigned" y "long long", en
ese caso debemos usar el sufijo "ULL", para las mismas situaciones que hemos indicado para las
constantes "long long" y "unsigned".
85

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:

unsigned long long x = 123456534543ULL;


if(x == 3124232ULL) cout << "Valor encontrado" << endl;

4.5.1.7. Constantes "float".


Tambin existe una notacin especial para las constantes en punto flotante.
En este caso consiste en aadir ".0" a aquellas constantes que puedan interpretarse como
enteras. Si se usa el sufijo "f" se tratar de constantes en precisin sencilla, es decir " float".
Por ejemplo:

float x = 0.0;
if(x <= 1.0f) x += 0.01f;

4.5.1.8. Constantes "double".


Si no se usa el sufijo f, se tratar de constantes de precisin doble, es decir tipo "double".
Por ejemplo:

double x = 0.0;
if(x <= 1.0) x += 0.01;

4.5.1.9. Constantes "long double".


Si se usa el sufijo "l" se tratar de constantes en precisin mxima, es decir "long double".
Por ejemplo:

long double x = 0.0L;


if(x <= 1.0L) x += 0.01L;

4.5.1.10. Constantes "char".


Las constantes de tipo "char" se representan entre comillas sencillas, por ejemplo 'a', '8', 'F'.

4.5.2. Recomendaciones en el uso de la notacin.


4.5.2.1. Constantes enteras.
En general podemos combinar los prefijos "0" y "0x" con los sufijos "L", "U", y "UL". Aunque es
indiferente usar los sufijos en maysculas o minsculas, es preferible usar maysculas, sobre todo
con la "L", ya que la 'l' minscula puede confundirse con un uno '1'.

4.5.2.2. Constantes punto flotante.


Se recomienda aadir el .0, cuando la constante se pueda confundir con un entero.
Usar la notacin exponencial

86

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Tambin podemos usar notacin exponencial, donde el formato exponencial consiste en un


nmero, llamado mantisa, que puede ser entero o con decimales, seguido de una letra 'e' o 'E' y
por ltimo, otro nmero (entero) que es el exponente de una potencia de base 10.
Por ejemplo:

double x = 10e4;
double y = 4.12e2;
double pi = 3.141592e0;
Los valores anteriores se representaran:

x = 10 x 104 = 100000
y = 4,12 x 102 = 412
pi = 3.141592 x 100 = 3.141592
Al igual que con los enteros, es indiferente usar los sufijos en maysculas o minsculas, pero es
preferible usar maysculas, sobre todo con la "L", ya que la 'l' minscula puede confundirse con un
uno '1'.

4.5.3 Constantes carcter. Comentario adicional.


Si has pensado que una constante char se representa con 'k', tal vez, despus de un rato te
preguntes cmo se representa la constante que consiste en una comilla sencilla?
Existen ciertos caracteres, entre los que se encuentra la comilla sencilla, que no pueden ser
representados con la norma general. Para eludir este problema existe cierto mecanismo, llamado
secuencias de escape. En el caso comentado, la comilla sencilla se define como '\', y la barra
descendente se define como '\\'.
Adems de estos caracteres especiales existen otros.

4.5.3.1. Cdigo ASCII.


El cdigo ASCII es el conjunto de caracteres que puede ser representado por el tipo "char",
consta de 128 o 256 caracteres.
El cdigo ASCII de 128 caracteres utiliza 7 bits, actualmente ha quedado prcticamente
obsoleto ya que no admite caracteres como la '' o la '' pero, an se usa en ciertos equipos
antiguos donde el octavo bit se usa como bit de paridad en las transmisiones serie.
El cdigo ASCII de 256 caracteres utiliza los 8 bits y, si recordamos, el tipo "char" tiene siempre
un byte (8 bits) y esto no es por casualidad.
En este conjunto existen, adems de los caracteres alfabticos, en maysculas y minsculas,
los numricos, los signos de puntuacin y los caracteres internacionales, ciertos caracteres no
imprimibles, como el retorno de lnea, el avance de lnea, etc.
Veremos estos caracteres y cmo se representan como secuencia de escape, en hexadecimal,
el nombre ANSI y el resultado o significado.

87

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Los tres ltimos son realmente comodines para la representacin de cualquier carcter.
El \nnn sirve para la representacin en notacin octal. Para la notacin octal se usan tres
dgitos. Hay que tener en cuenta que, anlogamente a lo que sucede en la notacin hexadecimal,
en octal se agrupan los bits de tres en tres. Por lo tanto, para representar un carcter ASCII de 8
bits, se necesitarn tres dgitos. En octal slo son vlidos los smbolos del '0' al '7'.
Segn el ejemplo anterior, para representar el carcter 127 en octal usaremos la cadena '\177',
y en hexadecimal '\x7f'. Tambin pueden asignarse nmeros decimales a variables de tipo char.
Por ejemplo:

char A;
A = 'a';
A = 97;
A = 0x61;
A = '\x61';
A = '\141';
En este ejemplo todas las asignaciones son equivalentes y vlidas.

#include <iostream>
using namespace std;
int main()
{char opc0='A'; //Ascii de A expresado como Caracter
char opc1=65 ; //Ascii de A expresado en Decimal
char opc2= 0101; //Ascii de A expresado en Octal
char opc3 = 0x41; //Ascii de A expresado en Hexadecimal
cout << opc0 <<endl;
cout << opc1 <<endl;

88

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

cout << opc2 <<endl;


cout << opc3 <<endl;
return 0;
}
La salida de este programa muestra por pantalla 4 veces la A.

4.5.3.2. Carcter nulo.


El carcter nulo se usa en C para indicar la terminacin de las cadenas de caracteres, por lo
tanto es muy til y de uso frecuente.
Para hacer referencia a l se usa frecuentemente su valor decimal, es decir char A = 0, aunque
es muy probable que lo encuentres en libros o en programas como '\000', es decir en notacin
octal.

4.5.3.3. Carcter EOF.


EOF viene del ingls "End Of File", este carcter se usa en muchos ficheros como marcador de
fin de fichero, sobre todo en ficheros de texto. Aunque dependiendo del sistema operativo este
carcter puede cambiar, por ejemplo en MS-DOS es el carcter "0x1A", el compilador siempre lo
traduce y devuelve el carcter EOF cuando un fichero se termina.

4.5.4. Ejercicios
1) si debe almacenar el dato, qu tipo de constante debera utilizar en cada caso? Marcar la
opcin correcta.
a) '\x37'
1. char
2. long
3. int
4. float
b) 123UL
1. unsigned
2. int
3. long
4. unsigned long
c) 34.0
1.
2.
3.
4.

int
double
float
long

d) 6L
1. int

89

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

2. long
3. double
4. char
e) 67
1.
2.
3.
4.

char
unsigned
int
float

f) 0x139
1. char
2. unsigned
3. int
4. float
g) 0x134763df23LL
1. long
2. unsigned
3. int
4. long long
5.

Para la creacin de identificadores en la escritura del cdigo fuente se recomienda ver


APENDICE ESTILOS DE NOTACIN.

90

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.6. OPERADORES
Los operadores son elementos que disparan ciertos clculos cuando son aplicados a variables o
a otros objetos en una expresin.
Un operador es un smbolo que le dice al compilador que realice manipulaciones matemticas o
lgicas especficas.
El lenguaje C tiene las siguientes clases de operadores: aritmticos, relacionales, lgicos y
sobre bits.
Hay varios tipos de operadores, clasificados segn el tipo de objetos sobre los que actan.
Los tipos de operadores que veremos son:
Operadores Aritmticos.
Operadores Relacionales.
Operadores Lgicos.
Operadores de Asignacin.
Operador sizeof.
Operador condicional.
Operador coma.

4.6.1. Operadores aritmticos.


Los operadores aritmticos se utilizan para crear expresiones matemticas.

4.6.1.1. Operadores aritmticos unitarios.


Los operadores aritmticos unitarios que utiliza el C son: '+', '-','++', '--'
Sintaxis:

+ <expresin>
- <expresin>
<variable> ++ /* post-incremento */
++ <variable> /* pre-incremento */
<variable>-- /* post-decremento */
-- <variable> /* pre-decremento */
Operadores '+' y '-
Los operadores aritmticos unitarios '+' y '-' asignan valores positivos o negativos a la expresin
a la que se aplican.
Operadores '++' y '--'
Los otros dos operadores unitarios '++' y '--' son un tanto especiales, ya que slo pueden
trabajar sobre variables, pues implican una asignacin.
El primero ('++') incrementa el valor del operando y el segundo ('--') lo decrementa, ambos en
una unidad.

91

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Existen dos modalidades, dependiendo de que se use el operador en la forma de prefijo o de


sufijo.
En su forma de prefijo, el operador es aplicado antes de que se evale el resto de la expresin;
en la forma de sufijo, se aplica despus de que se evale el resto de la expresin.
Por ejemplo:

en las siguientes expresiones "a" vale 100 y "b" vale 10:


c = a + ++b;
En este primer ejemplo primero se aplica el pre-incremento, y b valdr 11 a continuacin se
evala la expresin "a+b", que dar como resultado 111, y por ltimo se asignar este valor a c,
que valdr 111.
Por ejemplo:

c = a + b++;
En este segundo ejemplo primero se avala la expresin "a+b", que dar como resultado 110,
y se asignar este valor a c, que valdr 110.
Finalmente se aplica en post-incremento, y b valdr 11.
Los operadores unitarios sufijos (post-incremento y post-decremento) se evalan despus de
que se han evaluado el resto de las expresiones.
En el primer ejemplo primero se evala ++b, despus a+b y finalmente c=<resultado>.
En el segundo ejemplo, primero se evala a+b, despus c = <resultado> y finalmente b++.

Es muy importante no pensar o resolver las expresiones C como ecuaciones matemticas, NO


SON EXPRESIONES MATEMATICAS.
No veas estas expresiones como ecuaciones, NO SON ECUACIONES.

4.6.1.2. Operadores aritmticos binarios.


Los operadores binarios que utiliza el lenguaje C son: ' +', ' - ', ' * ', ' / ', % '
Sintaxis:
<expresin>
<expresin>
<expresin>
<expresin>
<expresin>

+ <expresin> /*Sintaxis de operador suma */


- <expresin> /* Sintaxis de operador resta */
* <expresin> /* Sintaxis de operador multiplicacin */
/ <expresin> /* Sintaxis de operador divisin */
% <expresin> /* Sintaxis de operador resto */

Evidentemente se trata de las conocidas operaciones aritmticas de suma, resta, multiplicacin


y divisin y los operadores se comportan como en cualquier lenguaje de computadoras.
Debemos tener en cuenta, por ejemplo, que el operador divisin ( / ) aplicado a un entero
truncar (perder) cualquier resto.

92

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:
10 / 3 ser igual a 3 para la divisin entera.
El operador mdulo '%', devuelve el resto de la divisin entera del primer operando entre el
segundo. Por esta razn no puede ser aplicado a operando en coma flotante (ya que al ser
nmeros de punto flotante no hay resto!!).

4.6.2. Operadores relacionales


Los operadores relacionales permiten determinar las relaciones que un valor o cantidad puede
tener con otro.
Aqu resulta clave la idea de verdadero o falso. En C cualquier valor distinto de cero es
verdadero, y cero (0) es falso. As, las expresiones que utilizan operadores relacionales devolvern
como resultado 0 si es falsa y 1 si es verdadera la expresin.
A continuacin mostramos los operadores relacionales y su sintaxis:

En las expresiones, "E1 <operador_relacional> E2, los operandos (E1, E2) tienen algunas
restricciones, pero de momento nos conformaremos con que sean de tipo aritmtico. El resto de las
restricciones las veremos cuando conozcamos los punteros y los objetos.

Es un error frecuente utilizar el = en lugar del ==, observar que el = es para ASIGNAR; y
el == es para COMPROBAR LA IGUALDAD.

4.6.3. Operadores lgicos.


Los operadores lgicos conforman expresiones lgicas y se utilizan para determinar cmo se
presentan las relaciones entre las expresiones involucradas.
La siguiente tabla presenta los operadores lgicos y su sintaxis:

93

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.6.3.1. Operador && o AND.


El operador "&&" equivale al "AND" o "Y"; devuelve "true" slo si las dos expresiones
evaluadas son "true" o distintas de cero, en caso contrario devuelve "false" o cero. Si la primera
expresin evaluada es "false", la segunda no se evala.
Generalizando, con expresiones AND con ms de dos expresiones, la primera expresin falsa
interrumpe el proceso e impide que se contine la evaluacin del resto de las expresiones. Esto es
lo que se conoce como "cortocircuito", y es muy importante, como veremos posteriormente.
El operador && se usa segn la siguiente tabla de verdad, donde se representa true con 1 y
false con 0.

4.6.3.2. Operador || u OR.


El operador "||" equivale al "OR" u "O inclusivo"; devuelve "true" si cualquiera de las
expresiones evaluadas es "true" o distinta de cero, en caso contrario devuelve "false" o cero. Si la
primera expresin evaluada es "true", la segunda no se evala.
El operador || se usa segn la siguiente tabla de verdad, donde se representa l

4.6.3.3. Operador ! o NOT.


El operador "!" es equivalente al "NOT", o "NO", y devuelve "true" slo si la expresin
evaluada es "false" o cero; en caso contrario devuelve "false".
La expresin "!E" es equivalente a (0 == E).
El operador ! se usa segn la siguiente tabla de verdad, donde se representa true con 0 y
false con 1.

94

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.6.4. Operadores de asignacin


La asignacin consiste en un nombre de variable, seguido de un signo igual y el valor a ser
asignado.
Por ejemplo: a = 14;
El operador asigna el valor de la izquierda (14) a la variable (a) que est a la derecha del
operador asignacin (=).
Existen varios operadores de asignacin, el ms evidente y el ms usado es el "=", pero no es
el nico.
Los operadores de asignacin y sus diferentes usos se describen a continuacin:

4.6.5. Operador "sizeof"


El operador sizeof es un operador del tiempo de compilacin.
Este operador tiene dos usos diferentes. Devuelve el tamao de la variable o tipo que est
como operando. Si el operador funciona sobre un tipo de dato, ste deber ir entre parntesis.
Sintaxis:

sizeof <expresin>
sizeof (nombre_de_tipo)
En ambos casos, el resultado es una constante entera que da el tamao en bytes del espacio
de memoria usada por el operando, que es determinado por su tipo.
El espacio reservado por cada tipo depende de la plataforma.
En el primer caso, el tipo del operando es determinado sin evaluar la expresin, y por lo tanto
sin efectos secundarios.
Por ejemplo:

si el operando es de tipo "char", el resultado es 1.


A pesar de su apariencia, sizeof() NO es una funcin, sino un OPERADOR.

4.6.6. Operador condicional (?)


El operador "?:", se trata de un operador ternario (es decir tiene TRES operandos)

95

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Sintaxis:

<expresin lgica> ? <expresin> : <expresin>


En la expresin E1? E2:E3, primero se evala la expresin E1, si el valor es verdadero ("true"),
se evaluar la expresin E2 y E3 ser ignorada, si es falso ("false"), se evaluar E3 y E2 ser
ignorada.
Hay ciertas limitaciones en cuanto al tipo de los argumentos:
E1 debe ser una expresin lgica.
E2 y E3 deben ser de tipo aritmtico.
E2 y E3 deben ser de estructuras o uniones compatibles.
E2 y E3 deben ser de tipo "void".
Por ejemplo:

max = (a >=b) ? a : b;
A la variable max se le asigna el mayor valor.

#define max (a,b) (((a) > (b)) ? (a) : (b))


De este ejemplo slo nos interesa la parte de la derecha. La interpretacin es: si "a" es mayor
que "b", se debe evaluar "a", en caso contrario evaluar "b", en resumen, evala siempre el
mximo!!

4.6.7. Operador coma (,)


El operador coma se utiliza para encadenar diversas expresiones. Provoca una secuencia de
operaciones a realizar, se puede pensar como hacer esto y luego esto.
Tiene una doble funcin: separa elementos de una lista de argumentos de una funcin. puede
ser usado como separador en expresiones "de coma".
Ambas funciones pueden ser mezcladas, pero hay que aadir parntesis para resolver las
ambigedades y provocar errores, ya que el operador coma tiene precedencia ms baja, por
ejemplo, que el operador de asignacin.
Sintaxis:

E1, E2, ... , En


En una expresin "de coma", cada operando es evaluado como una expresin, pero los
resultados obtenidos se tienen en cuenta en la prxima evaluacin.
Por ejemplo:

x = (y=3,y+1);
En primer lugar asigna el valor 3 a la variable y, y despus asigna el valor 4 a la variable x.

96

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.7. EXPRESIONES
La combinacin de variables, constantes definidas o nmeros con uno o ms operadores dan
como resultado un valor. Esta combinacin recibe el nombre de expresin.
Una expresin es, segn el diccionario, un "conjunto de trminos que representan una
cantidad", entre nosotros es cualquier conjunto de operadores y varios operando, que dan como
resultado una cantidad.
Operando es cada una de las cantidades, constantes, variables o expresiones que intervienen
en una expresin.
Existe una divisin, en los operadores, atendiendo al nmero de operando que afectan. Segn
esta clasificacin pueden ser unitarios, binarios o ternarios, los primeros afectan a un solo
operando, los segundos a dos y los ternarios como era de esperar a tres.
Las variables y constantes se pueden procesar utilizando operaciones y funciones adecuadas a
sus tipos.
Cada expresin toma un valor que se determina tomando los valores de las variables y
constantes implicadas y la ejecucin de las operaciones indicadas.
Las expresiones se pueden clasificar, segn los tipos de objetos que manipulan, en:

Aritmticas: cuyo resultado sera de tipo numrico.


Lgicas: cuyo resultado sera de tipo lgico.
Carcter: cuyo resultado sera de tipo carcter.

4.7.1. EXPRESIONES ARITMTICAS.


Una expresin aritmtica es un conjunto de variables y/o constantes unidas o relacionadas por
parntesis y operadores aritmticos.
Son anlogas a las frmulas matemticas. Las variables y constantes son numricas (enteras o
punto flotante) y las operaciones son aritmticas.
Por ejemplo:

sueldo = sueldo_base + 0.15 * monto_ventas


e = a*b*b / 3 + (a*a + b) / (b + c)
Cuando se utilizan expresiones aritmticas se debe tener en cuenta que:

Si en una operacin ambos operando son enteros, entonces el resultado de la


operacin es un entero.
Si en una operacin uno o ambos operando son reales, entonces el resultado de la
operacin es un real.
El operador / produce un cociente entero si los dos operando son enteros. Esto
significa que se pierde la parte decimal si la divisin no es exacta. Esta es una
consecuencia de la nota 1.
El operador / produce un cociente float si uno o los dos operando son float. Esta es
una consecuencia de la nota 2.

97

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:

7 / 2 es igual a 3 y no 3.5 como lo es matemticamente. Esto debido a que 7 y 2 son


enteros y al dividir dos enteros se pierde la parte fraccionaria, no se redondea.
En cambio:

7.0 / 2 es igual a 3.5 ya que si uno o los dos operando son reales, entonces el
resultado es real. En este caso 7.0 es real.

4.7.1.1. Reglas de Precedencia.


Las expresiones que tienen dos o ms operando requieren reglas matemticas que permitan
determinar el orden de las operaciones.
Las Reglas de Prioridad o Precedencia son las reglas matemticas que permiten determinar el
orden de las operaciones.
Son:

Las operaciones que estn encerradas entre parntesis se evalan primero. Si aparecen
varios parntesis anidados, se evalan primero los parntesis interiores.
En caso de coincidir varios operadores de igual prioridad, el orden se determina de
izquierda a derecha.
Las operaciones aritmticas dentro de una expresin suelen seguir el siguiente orden
de prioridad:

Para ms detalle sobre operadores y reglas de precedencia ver


APENDICE. Precedencia de Operadores.

4.7.2. Expresiones lgicas


Una expresin lgica o booleana es un conjunto de variables y/o constantes unidas mediante
operadores lgicos y operadores relacionales.
Las expresiones lgicas se forman combinando constantes lgicas, variables lgicas y otras
expresiones lgicas, utilizando operadores lgicos y relacionales; y su valor siempre es verdadero o
falso.
Una expresin lgica solo puede tomar uno de dos valores: verdadero o falso.
Las expresiones lgicas son ampliamente utilizadas en las estructuras selectivas y las
estructuras repetitivas.

98

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.7.2.1. Expresiones comparativas.


El formato general para las comparaciones es:
<Expresin1> operador de relacin <Expresin2>
y el resultado ser verdadero o falso.
Por Ejemplo:
Si A = 4 y B = 3

A > B da como resultado Verdadero


(A 2) < (B 4) da como resultado Falso.

Los operadores de relacin se pueden aplicar a los tipos de datos estndar: entero, punto
flotante, carcter lgico.
Aplicacin en datos tipo carcter
La aplicacin en valores numricos es evidente; pero cuando deba comparar datos de tipo
carcter, se requiere de una secuencia de ordenacin de los caracteres, similar al orden creciente o
decreciente.
La ordenacin suele ser alfabtica y se recurre al cdigo normalizado ASCII, donde:
0 < 1 < 2 < 3 ....
A < B < C ....
a < b < c ....
Aplicacin en datos tipo lgico.
Cuando se utilizan los operadores de relacin con valores lgicos, Falso < Verdadero.
Por ejemplo:

Si tenemos la expresin Falso < Verdadero, dar como resultado Verdadero


Aplicacin en datos tipo punto flotante
Cuando se utilizan los operadores = <> en valores punto flotante, es importante recordar
que estos valores no se pueden almacenar exactamente, debido a la precisin aritmtica limitada
de las computadoras.
As, lo aconsejable es excluir a los valores punto flotante en este tipo de comparaciones.

4.7.2.2. Expresiones lgicas.


En las expresiones lgicas se pueden mezclar operadores de relacin y lgicos.
Por Ejemplo:

(1 < 5) and (5 < 10) da como resultado Verdadero.


(5 < 10) or (A < B) da como resultado Verdadero.

99

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Para ms detalle sobre operadores y reglas de precedencia ver APENDICE. Precedencia de


Operadores.
Al igual que en las expresiones aritmticas, los parntesis se podrn utilizar y tendrn prioridad
sobre cualquier operacin.
Por Ejemplo:

not 4 > 6 da como resultado ERROR, ya que el operador NOT no se aplica sobre
el 4.
not(4 > 6) da como resultado Verdadero

4.7.3. Ejercicios con operadores y expresiones


1) Suponiendo los siguientes valores iniciales para las variables: x = 2; y = 6; z = 9;
r = 100;
s = 10; a = 15; b = 3; Cules son los valores correctos en cada expresin? Marcar la opcin
correcta.
a) x += 10;
12
10
11
b) s *=

c) r /=

b;
9
13
30

0;
infinito
1
error

d) y += x + 10;
8
12
18
e) z -=

a*b;
-36
-18
36

100

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

2) Usar expresiones equivalentes para las siguientes, usando operadores mixtos.


a) x =

10 + x - y;
x += 10-y
x -= y+10
x += 10+y

b) r =

100*r;
r *= 100*r
r *= 100
r += 100

c) y =

y/(10+x);
y /= 10*x
y /= 10 + y/x
y /= 10+x

d) z =

3 * x + 6;
z += 6
z *= 3
no es posible

3) Evaluar las siguientes expresiones. Siendo: x = 10; y = 20; z = 30;


a) z = x - y, t = z - y;
z=-10, t=-30
t=10
z=30, t=-30
b) (x < 10) && (y > 15)
true
false
c) (x <= z) || (z <= y)
true
false
d) !(x+y < z)
true
false
e) (x+y != z) && (1/(z-x-y) != 1)
true
false
error

101

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.8. INSTRUCCIONES
El elemento que nos est faltando para poder comenzar a escribir nuestros propios programas
son las sentencias o instrucciones.
Un programa contiene las acciones o instrucciones que resolvern el problema. Las
instrucciones describen la secuencia de pasos con el que se quiere solucionar el problema
planteado.
Existen instrucciones de diversos tipos que nos permitirn enfrentarnos a todas las situaciones
posibles en programacin.
Los tipos de sentencias son:
Bloques
Expresiones
Llamadas a funcin
Asignacin
Nula
Bucles
while
do while
for
Etiquetas
Etiquetas de identificacin
case
default
Seleccin
if...else
switch
Veamos cada una de ellas.

4.8.1. Bloques.
Una sentencia compuesta o un bloque es un conjunto de sentencias, que puede estar vaca,
encerrada entre llaves " {}.
Sintcticamente, un bloque se considera como una nica sentencia.
Tambin se usa en variables compuestas, como veremos en el captulo de variables II, y en la
definicin de cuerpo de funciones.
Los bloques pueden estar anidados hasta cualquier profundidad.

102

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.8.2. Expresiones.
Una expresin seguida de un punto y coma (;), forma una sentencia de expresin.
La forma en que el compilador ejecuta una sentencia de este tipo es evaluando la expresin.
Cualquier efecto derivado de esta evaluacin se completar antes de ejecutar la siguiente
sentencia.
Sintaxis:

<expresin>;

4.8.2.1. Llamadas a funcin.


La sentencia de llamada a funcin es la manera de ejecutar las funciones que se definen en
otras partes del programa o en el exterior de ste, ya sea una librera estndar o particular.
La llamada a funcin se forma con el nombre de la funcin, una lista de parmetros entre
parntesis y un ";".

4.8.2.2. Asignacin.
Una instruccin de asignacin consiste en dar a una variable el valor de una expresin, el valor
de otra variable o el valor de una constante.
La sentencia de asignacin se utiliza para almacenar valores a variables o constantes.
Es una operacin que sita un valor determinado en una posicin de memoria.
Sintaxis:

<variable> <operador de asignacin> <expresin>;


La expresin de la derecha es evaluada y el valor obtenido es asignado a la variable o
constante de la izquierda. El tipo de asignacin depender del operador utilizado, estos operadores
ya los vimos en el captulo anterior.
En la parte izquierda de la asignacin se pone el nombre de la variable que se quiere modificar.
La parte derecha contiene una expresin que le dar el nuevo valor a la variable, y por lo tanto
debe tener el mismo tipo que la variable.

4.8.2.3. Nula.
La sentencia nula consiste en un nico ";". Sirve para usarla en los casos en los que el
compilador espera que aparezca una sentencia, pero en realidad no pretendemos hacer nada.
Veremos ejemplos de esto cuando lleguemos a los bucles.

4.8.3. Bucles.
Un bucle es la estructura de control que permite la repeticin de una serie determinada de
sentencias. Es importante tener en cuenta cuntas veces se repite el bucle y cul es el cuerpo del
bucle.
El cuerpo del bucle lo constituyen la serie de sentencias que pueden ser de cualquier tipo
(secuencial, de decisin o repetitivo) las cuales sern repetidas n veces, pudiendo ser n conocido o
desconocido. Cuando n es desconocido, el nmero de veces que debe repetirse el cuerpo del bucle
estar condicionado por una expresin lgica.
Un bucle no es ms que una serie de instrucciones que se repiten.

103

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

A la hora de utilizar un bucle, sea del tipo que sea, debemos ir con cuidado y pensar cuando
debe acabar ya que si no tuviramos en cuenta esto podramos entrar en un bucle sin fin, iramos
repitiendo las mismas lneas teniendo que abortar la aplicacin, para poder finalizar la ejecucin del
programa.
Por esto, es de suma importancia que pensemos, antes de hacer nada, en qu momento,
cmo, dnde y por qu debe acabar el bucle.

4.8.3.1. Bucle "while".


Es la sentencia de bucle ms sencilla, y sin embargo es tremendamente potente.
Sintaxis:

while (<condicin>) <sentencia/s>;


La sentencia o el grupo de sentencias es ejecutado repetidamente mientras la condicin sea
verdadera, ("while" en ingls significa "mientras").
Si no se especifica condicin se asume que es "true", y el bucle se ejecutar indefinidamente.
Si la primera vez que se evala la condicin resulta falsa, la/s sentencia/s no se ejecutarn
ninguna vez.
Por ejemplo:

while (x < 100) x = x + 1;


Se incrementar el valor de x mientras x sea menor que 100.
Este ejemplo puede escribirse, usando el C con propiedad y elegancia, de un modo ms
compacto:

while (x++ < 100);


Aqu vemos el uso de una sentencia nula, observa que el bucle simplemente se repite, y la
sentencia ejecutada es ";", es decir, nada.

4.8.3.2. Bucle "do while".


Esta sentencia va un paso ms all que el "while".
Sintaxis:

do <sentencia/s> while(<condicin>);
La/s sentencia/s es ejecutada repetidamente mientras la condicin resulte verdadera.
Si no se especifica condicin se asume que es "true", y el bucle se ejecutar indefinidamente.
A diferencia del bucle "while", la evaluacin se realiza despus de ejecutar la sentencia, de
modo que se ejecutar al menos una vez.

104

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:

do
x = x + 1;
while (x < 100);
Se incrementar el valor de x hasta que x valga 100.

4.8.3.3. Bucle "for".


Por ltimo, el bucle "for", es el ms elaborado.
Sintaxis:

for ( [<inicializacin>]; [<condicin>] ; [<incremento>] )


<sentencia/s>
La/s sentencia/s es ejecutada repetidamente hasta que la evaluacin de la condicin resulte
falsa.
Antes de la primera iteracin se ejecutar la iniciacin del bucle, que puede ser una expresin o
una declaracin.
En este apartado se iniciarn las variables usadas en el bucle. Estas variables pueden ser
declaradas en este punto, pero en ese caso tendrn validez slo dentro del bucle "for".
Despus de cada iteracin se ejecutar el incremento de las variables del bucle.
Todas las expresiones son opcionales, si no se especifica la condicin se asume que es
verdadera.
Por ejemplo:

for (int i = 0; i < 100; i = i + 1);


Como las expresiones son opcionales, podemos simular bucles "while":

for(;i < 100;) i = i +1;


for(;i++ < 100;);
O bucles infinitos:

for(;;);

4.8.4. Etiquetas.
Los programas C y C++ se ejecutan secuencialmente, aunque esta secuencia puede ser
interrumpida de varias maneras.
Las etiquetas son la forma en que se indica al compilador en qu puntos ser reanudada la
ejecucin de un programa cuando haya una ruptura del orden secuencial.

4.8.4.1. Etiquetas "case" y "default".


Estas etiquetas se circunscriben al mbito de la sentencia "switch", y se ver su uso cuando
estudiemos ese apartado.
105

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Sintaxis:

switch(<variable>)
{
case <expresin_constante>: [<sentencias>][break;]
...
[default: [<sentencias>]]
}

4.8.5. Sentencias de Seleccin.


Las sentencias de seleccin permiten controlar el flujo del programa, seleccionando distintas
sentencias en funcin de diferentes valores.

4.8.5.1. Sentencia "if...else".


Implementa la ejecucin condicional de una sentencia.
Sintaxis:

if (<condicin>) <sentencia1>;
if (<condicin>) <sentencia1>; else <sentencia2>;
Si la condicin es "true" se ejecutar la sentencia1, si es "false" se ejecutar la sentencia2.
El "else" es opcional, y no pueden insertarse sentencias entre la sentencia1 y el "else".
Se pueden declarar variables dentro de la condicin.
Por ejemplo:

if ( int val = func(arg))...


En este caso, la variable "val" slo estar accesible dentro del mbito de la sentencia "if" y, si
existe, del "else".

4.8.5.2. Sentencia "switch".


Cuando se usa la sentencia switch el control se transfiere al punto etiquetado con el "case"
cuya expresin constante coincida con el valor de la variable del "switch".
A partir de ese punto todas las sentencias sern ejecutadas hasta el final del "switch", es decir
hasta llegar al "}". Esto es as porque las etiquetas slo marcan los puntos de entrada despus de
una ruptura de la secuencia de ejecucin, pero no marcan las salidas.
Esta caracterstica nos permite ejecutar las mismas sentencias para varias etiquetas distintas, y
se puede eludir usando la sentencia de ruptura "break" al final de las sentencias incluidas en cada
"case".
Si no se satisface ningn "case", el control parar a la siguiente sentencia despus de la
etiqueta "default". Esta etiqueta es opcional y si no aparece se abandonar el "switch".
No te preocupes, con un ejemplo se aclarar.

106

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Sintaxis:

switch (<variable>)
{
case <expresin_constante>: [<sentencias>] [break;]
...
[default : [<sentencia>]]
}
Por ejemplo:

switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
EsVocal = true;
break;
default:
EsVocal = false;
}
En este ejemplo letra es una variable de tipo "char" y EsVocal de tipo "bool".
Si el valor de entrada en el "switch" corresponde a una vocal, EsVocal saldr con un valor
verdadero, en caso contrario, saldr con un valor falso.
El ejemplo ilustra el uso del "break", si letra es 'a', se cumple el primer "case", y la ejecucin
contina en la siguiente sentencia, ignorando el resto de los "case" hasta el "break".
Otro ejemplo:

Menor1 = Menor2 = Menor3 = Mayor3 = false;


switch (numero)
{
case 0:
Menor1 = true;
case 1:
Menor2 = true;
case 2:
Menor3 = true;
break;
default:
Mayor3 = true;
}
Veamos qu pasa en este ejemplo si nmero vale 1.

107

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Directamente se reanuda la ejecucin en "case 1:", con lo cual Menor2 tomar el valor "true",
lo mismo pasar con Menor3.
Despus aparece el "break" y se abandona el "switch".

4.8.6. Sentencias de salto


Las sentencias de salto permiten romper la ejecucin secuencial de un programa.

4.8.6.1. Sentencia de ruptura "break".


El uso de esta sentencia dentro de un bucle pasa el control a la primera sentencia despus de
la sentencia de bucle.
Un ejemplo de aplicacin es dentro de la sentencia "switch".
Sintaxis:

break
Ejemplo:

switch(letra)
{
case 'a':
case 'e':
case 'i':
case 'o':
case 'u':
EsVocal = true;
break;
default:
EsVocal = false;
}

4.8.6.2. Sentencia de retorno "return".


La sentencia return sale de la funcin donde se encuentra y devuelve el control a la rutina que
la llam, opcionalmente con un valor de retorno.
Sintaxis:

return [<expresin>]
Ejemplo:

int Paridad(int x)
{
if (x % 2) return 1;
return 0;
}
Este ejemplo ilustra la implementacin de una funcin que calcula la paridad de un parmetro.
Si el resto de dividir el parmetro entre 2 es distinto de cero, implica que el parmetro es impar, y
la funcin retorna con valor 1. El resto de la funcin no se ejecuta. Si por el contrario el resto de
108

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

dividir el parmetro entre 2 es cero, el parmetro ser un nmero par y la funcin retornar con
valor cero.

4.8.7. Comentarios.
Los comentarios ayudan a seguir el funcionamiento del programa durante la depuracin o en la
actualizacin del programa, adems de documentarlo.
No se trata propiamente de un tipo de sentencias, pero me parece que es el lugar adecuado
para introducir este concepto.
En C pueden introducirse comentarios en cualquier parte del programa, Los comentarios en C
se delimitan entre /* y */, cualquier cosa que escribamos en su interior ser ignorada por el
compilador, slo est prohibido su uso en el interior de palabras reservadas o en el interior de
identificadores.
Por ejemplo:

main(/*Sin argumentos*/void) est permitido


ma/*funcin*/in(void) es ilegal
La funcin de los comentarios es aclarar y documentar, no entorpecer el cdigo.
En C++ se ha incluido otro tipo de comentarios, que empiezan con //. Estos comentarios no
tienen marca de final, sino que terminan cuando termina la lnea.
Por ejemplo:

void main (void) // Esto es un comentario


{
}
Las llaves {} no forman parte del comentario.

4.8.8. Ejercicios con sentencias.


1) Mostrar los sucesivos valores de la variable x en los siguientes bucles:
a) int x=0;

while(x < 5) x += 2;

0,2,4,6
0,2,4
0,2,4,6,8

b) int x=10;

do x++; while(x < 10);

10
10,11
11

c) bool salir = false;

int x = 13;
while(!salir) {
109

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

x++;
salir = x%7;
}

13,14
13,14,15
13

d) int x = 6;

do {
switch(x%3) {
case 0: x=10; break;
case 1: x=17; break;
case 2: x=5; break;
}
} while(x != 5);

6,10,17
6,10,17,5
6,10,17,10,5

e) int x=0, y=0;

do {
if(x>4) { x %= 4; y++; }
else x++;
} while(y < 2);

f)

0,1,2,3,4,5,1,2,3,4,5,1
0,1,2,3,4,5,1,2,3,4,5
0,1,2,3,4,5,1,2,3,4,5,1,2

int x=0, y=1;


while(y != 3) {
x++;
if(x<3) continue;
x=y; y++;
}

0,1,2,3,1,2,3,2,3
0,1,2,3,1,2,3,2
0,1,2,3,1,2,3,2,3,2

110

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.9. FUNCIONES
Las funciones son un conjunto de instrucciones que realizan una tarea especfica. En general
toman unos valores de entrada, llamados parmetros y proporcionan un valor de salida o valor de
retorno; aunque tanto unos como el otro pueden no existir.
Al igual que con las variables, las funciones pueden declararse y definirse.
Una declaracin es simplemente una presentacin.
Una definicin contiene las instrucciones con las que realizar su trabajo la funcin.

4.9.1. Declaracin de funcin. El Prototipo.


La declaracin de una funcin se realiza mediante una sentencia conocida con el nombre de

prototipo.

Un prototipo consiste en una definicin de la funcin sin cuerpo y terminado con un ";".
Sintaxis:

<tipo> func (<lista de declaracin de parmetros>);


Por ejemplo:

int Intervalo(int a, int b); /*Prototipo de la funcin Intervalo*/


El prototipo sirve para indicar al compilador los tipos de datos de retorno y los tipos de datos de
los parmetros que recibe la funcin, de modo que compruebe si son del tipo correcto cada vez que
se use esta funcin dentro del programa, o para hacer las conversiones de tipo cuando sea
necesario.
Los nombres de los parmetros son opcionales, y se incluyen como documentacin y ayuda en
la interpretacin y comprensin del programa.
El ejemplo de prototipo anterior sera igualmente vlido y se podra poner como:

int Intervalo (int,int); /*Prototipo de la funcin Intervalo */


El prototipo del ejemplo indica que en algn lugar del programa se definir una funcin
"Intervalo" que admite dos parmetros de tipo "int" y que devolver un valor de tipo "int". No es
necesario escribir nombres para los parmetros, ya que el prototipo no los usa. En otro lugar del
programa habr una definicin completa de la funcin.

Normalmente se aconseja:
Copiar el prototipo de la funcin y pegar como una definicin eliminando el ; del final
de lnea de esta manera no se comenten errores.
PERO si hacemos esto utilizando la ltima forma de indicar el prototipo de la funcin
(es decir sin dar nombres a las variables) no sirve, ya que en la definicin de la funcin
necesitamos dar un nombre a la variable para poder usarla.
Las funciones se declaran como prototipos dentro del programa, o se incluyen estos
prototipos desde un fichero externo, (usando la directiva "#include")

111

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

La definicin de la funcin se hace ms adelante; lo habitual es hacerlo despus de la


funcin "main".
Los programas complejos se escriben normalmente usando varios ficheros fuente.
Estos ficheros se compilan separadamente y se enlazan juntos. Esto es una gran
ventaja durante el desarrollo y depuracin de grandes programas, ya que las
modificaciones en un fichero fuente slo nos obligarn a compilar ese fichero fuente, y
no el resto, con el consiguiente ahorro de tiempo.
La definicin de las funciones puede hacerse dentro de los ficheros fuente o enlazarse
desde libreras precompiladas. La diferencia entre una declaracin y una definicin es
que la definicin posee un cuerpo de funcin.

En C++ es obligatorio el uso funciones prototipo, y aunque en C no lo es, resulta altamente


recomendable.

4.9.1.1. Funciones extern y static.


Hay funciones que son "extern" por defecto. Esto quiere decir que son accesibles desde
cualquier punto del programa, aunque se encuentren en otros ficheros fuente del mismo programa.
En contraposicin las funciones declaradas "static" slo son accesibles dentro del fichero fuente
donde se definen.

4.9.2. Definicin de funcin


La definicin de una funcin se compone de las siguientes secciones, aunque pueden
complicarse en ciertos casos:

Tipo de almacenamiento
Tipo de valor de retorno
Modificadores opcionales
Nombre de la funcin
Lista de parmetros (entre parntesis)
Cuerpo de la funcin

4.9.2.1. Tipo de almacenamiento.


Opcionalmente, una palabra que especifique el tipo de almacenamiento, puede ser "extern" o
"static". Si no se especifica es "extern".

4.9.2.2. Tipo de valor de retorno.


El tipo del valor de retorno puede ser "void" si no necesitamos valor de retorno.
En C, si no se establece, por defecto ser "int", aunque en general se considera de mal gusto
omitir el tipo de valor de retorno.
En C++ es obligatorio indicar el tipo del valor de retorno.

112

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.9.2.3. Modificadores opcionales.


Los modificadores tienen un uso muy especfico, de momento no entraremos en este particular,
lo veremos en captulos posteriores.

4.9.2.4. Nombre de la funcin.


Para el nombre de la funcin, resulta muy til y recomendable, poner nombres que indiquen, lo
ms claramente posible, qu es lo que hace la funcin, y que permitan interpretar qu hace el
programa con slo leerlo.
Cuando se precisen varias palabras para conseguir este efecto existen varias reglas aplicables
de uso comn. Una consiste en separar cada palabra con un "_", la otra, que yo prefiero, consiste
en escribir la primera letra de cada palabra en mayscula y el resto en minsculas.
Por ejemplo, si hacemos una funcin que busque el nmero de telfono de una persona en una
base de datos, podramos llamarla "busca_telefono" o "BuscaTelefono".

4.9.2.5. Lista de parmetros.


Entre parntesis se deben incluir las declaraciones de parmetros separados por coma (,).
Los parmetros de una funcin son los valores de entrada (y en ocasiones tambin de salida).
Para la funcin se comportan exactamente igual que variables, y de hecho cada parmetro se
declara igual que una variable.
Una lista de parmetros es un conjunto de declaraciones de parmetros separados con comas.
Puede tratarse de una lista vaca.
En C es preferible usar la forma "func(void)" para listas de parmetros vacas.
En C++ este procedimiento se considera obsoleto, se usa simplemente "func()".

4.9.2.6. Cuerpo de funcin.


El cuerpo de funcin representa el cdigo que ser ejecutado cuando se llame a la funcin.
El cuerpo de la funcin se encierra entre llaves "{}"

4.9.3. Funcin main()


Una funcin muy especial es la funcin "main".
Se trata de la funcin de entrada, y debe existir SIEMPRE. Ser la funcin que tome el control
cuando se ejecute un programa en C.
Existen reglas para el uso de los valores de retorno y de los parmetros de la funcin "main",
pero de momento la usaremos como "int main()" o "int main(void)", con un entero como valor de
retorno y sin parmetros de entrada.
En Linux la funcin main() DEBER retornar un valor sino el compilador indicar un error.
Ejemplo de funcin:

/* Esta funcin devuelve el mayor de dos nmeros */


# include <iostream>
using namespace std;
int Mayor (int a, int b);
/* Prototipo de funcin Mayor */
int main()
{ int x,y;
/*variables locales x e y*/
cout << endl << "Ingrese un entero: ";
113

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

cin >> x;
cout << endl << "Ingrese otro entero: ";
cin >> y;
cout<< endl <<"El mayor valor es :" << Mayor(x,y)<< endl; /*Llamada*/
return 0;
}
int Mayor (int a, int b)
/* Definicin de funcin Mayor */
{ if (a >=b) return a;
else return b; }

4.9.4. mbito de variables


Dependiendo de dnde se declaren las variables, podrn o no ser accesibles desde distintas
partes del programa.

4.9.4.1. Variables locales.


Las variables declaradas dentro de una funcin, y recuerda que "main" tambin es una funcin,
slo sern accesibles desde esa funcin. Esas variables son variables locales o de mbito local de
esa funcin.
Las variables declaradas dentro de un bucle, sern accesibles slo desde el propio bucle, sern
de mbito local del bucle.

4.9.4.2. Variables globales.


Las variables declaradas fuera de las funciones, normalmente antes de definir las funciones, en
la zona donde se declaran los prototipos, sern accesibles desde todas las funciones.
Diremos que esas variables sern globales o de mbito global.
Por ejemplo:

int EnteroGlobal;
int Funcion1(int a);
int main()
{
int EnteroLocal;
EnteroLocal = Funcion1(10);
EnteroGlobal = Funcion1(EnteroLocal);
return 0;}

// Declaracin de una variable global


// Declaracin de un prototipo

// Declaracin de una variable local de main:


// Acceso a una variable local:
// Acceso a una valiable global:

int Funcion1(int a)
{ char CaracterLocal;

// Variable local de funcion1


// Desde aqu podemos acceder a EnteroGlobal, y tambin //a CaracterLocal

pero no a EnteroLocal
if (EnteroGlobal != 0)
return a
else
return 0;}

//EnteroGlobal;

114

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

De modo que en cuanto a los mbitos locales tenemos varios niveles:

<tipo> funcion(parmetros)
{
<tipo> var;
for(<tipo> var;...)
...
return var;
}

// (1)
// (2)
// (3)

(1) los parmetros tienen mbito local a la funcin.


(2) las variables declaradas aqu, tambin.
(3) las declaradas en bucles, son locales al bucle.
Es una buena costumbre inicializar las variables locales.
Cuando se trate de variables estticas se inicializan automticamente a cero.

4.9.5. Ejercicios
1-) En el ejemplo, qu mbito tiene cada una de las variables? Marcar la opcin
correcta

float s,i;
int main()
{
int x;
x=10;
for(int i=0; i<x; i++)
Mostrar(i);
i = 0.0;
while(x>0) {
i *= 10.3;
x--;
}
return 0;
a) La

variable de tipo float s tiene mbito


global
local en main
local en bucle

b) La

variable de tipo int i tiene mbito


global
local en main
local en bucle

c)

La variable de tipo float i tiene mbito


global
local en main

115

TALLER DE INFORMTICA

d) La

CAPITULO 4. Lenguajes de Programacin

local en bucle
variable de tipo int x tiene mbito
global
local en main
local en bucle

2-) Cules de los siguientes prototipos son vlidos?


a) Calcular (int, int, char r);
b) void Invertir(int, unsigned char)
c) void Aumentar (float valor);
d) float Negativo (float int);
e) int Menor (int, int, int);
f) char Menu (int opciones);

S
S
S
S
S
S

No
No
No
No
No
No

3-) Preguntas sobre la estructura de un programa. Marcar la opcin correcta.


a) Entre qu zonas haras las declaraciones de variables globales?
Antes de la zona de las directivas del preprocesador.
Entre la zona de las directivas del preprocesador y las declaraciones de prototipos.
Despus de la definicin de la funcin "main".
b) Qu aparecera normalmente justo despus de la definicin de la funcin "main"?
Las directivas del preprocesador.
Los prototipos de funciones.
Las definiciones de funciones.
4-) Identifique las siguientes partes de las funciones. Marcar la/s opcin/es
correcta/s.
Encabezado o Definicin de la Funcin.
Cuerpo de la Funcin Enunciados de la Funcin.
Prototipo de la Funcin.
Argumentos de la Funcin.
Tipos de Argumentos de la Funcin.
Tipo de Argumento retornado por la Funcin.
5-) Escribir el cdigo fuente de un programa que contenga una funcin que reciba un entero y
devuelva P si es POSITIVO y N si es NEGATIVO.
6-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin que recibe
dos argumentos enteros y devuelve un valor booleano, siendo TRUE si el mayor argumento es
divisible por el menor o FALSE si el mayor argumento no es divisible por el mayor.
7-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin que recibe
como argumento dos nmeros reales, y retorna el menor que es mostrado en main.
8-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin pasando
como argumento un valor entero, esta funcin calcula los coeficientes de la serie de Fibonacci
hasta el entero pasado; y retorna la suma de los trminos que se muestra desde main.

Ej: N=6 , la serie ser = 0 1 1 2 3 5. La suma mostrada en main ser S=12.

116

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

9-) Escribir el cdigo fuente de un programa que permita definir tres funciones, una que
detecta si un carcter es una Vocal , otra que detecta si es Consonante y otra si es un Dgito, todas
devuelven el valor TRUE o FALSE y desde main se debe indicar si el tipo de char ingresado es :
vocal, consonante dgito.
Se puede suponer en principio para simplificar que los caracteres ingresados son TODO
minsculas. Sugerencia: Mirar la tabla de caracteres ASCII.
10-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin la cual
recibe un par de nmeros y retorna el resto de la divisin del mayor dividido el menor.
Sugerencia: usar el operador () ? : .
11-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin que
recibe como argumento un nmero entero, calcula y muestra desde la misma funcin los divisores
de ese nmero retornando un valor TRUE, si el nmero no es primo y FALSE si es primo.
12-) Se dice que un nmero entero es perfecto, si la suma de sus divisores incluyendo el 1 es
igual a s mismo.
Ej: 6 = 3 + 2+ 1 , ver que 3,2,1 son divisores de 6.
Escribir una funcin que reciba un entero, y retorne TRUE para el caso de que el nmero sea
un entero perfecto.
13-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin men
que no recibe ningn argumento y que retorne la opcin de men elegida, sta se mostrar desde
main. Los tems del men deberan ser por ej. 1,2,3,4 y 5 para salir, o A,B,.. y F para Finalizar.
Controlar que slo salga con la opcin indicada.
14-) Escribir el cdigo fuente de un programa que desde main se llame a una funcin men
(similar al ejercicio 13), las opciones del men sern:
1: Cargar un vector y luego presentar nuevamente el men, (todas las funciones refieren al
vector)
2: Ordenar.
3:Buscar el mayor.
4:Calcular el promedio.
5:Salir.
Cada uno de estos puntos se debe realizar con una funcin. No usar variables globales. Usar
pasaje de valores a funciones por referencia para el caso de ordenar!!.
15-) Escribir el cdigo fuente de un programa que desde main llame a una funcin la cual itera
(sin hacer nada) mientras se introduzca la letra s y se detiene cuando se introduce la letra n.
Ver que s y n son MINUSCULAS!!.
16-) Escribir el cdigo fuente de un programa que desde main copie usado la funcin strcpy
de un string.
17-) Escriba una funcin que reciba la cantidad de elementos a acumular y retorne el valor
acumulado.

Ej: recibe 4, y luego se ingresan, dentro de la funcin cuatro nmeros, 1, 3, 3, 2 deber


retornar a main el total acumulado=9.
18-) Escriba una funcin que reciba la cantidad de elementos a promediar y retorne el
promedio. Ej: recibe 3, luego se ingresan, dentro de la funcin tres valores, 10, 5, 15 y deber

retornar a main el promedio=10.

117

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.10. ARREGLOS
Un arreglo es un conjunto de elementos del mismo tipo agrupados en una sola variable. Es una
estructura de datos en la que se almacena una coleccin de datos del mismo tipo
Los arreglos poseen ciertas caractersticas particulares:

Cada posicin de almacenamiento en un arreglo es llamada un elemento del arreglo.


Para ingresar a un elemento en particular, utilizamos un ndice.
Tienen un nico nombre de variable, que representa todos los elementos, los cuales se
diferencian por un ndice o subndice.
Existen arreglos unidimensionales, bidimensionales y tridimensionales.
Fsicamente, un arreglo es un conjunto de localidades de memoria contiguas donde la direccin
ms baja corresponde al primer elemento y la direccin ms alta al ltimo.
En un arreglo de n elementos, stos ocuparan desde 0 hasta la n-1.
Por s mismo, el nombre del arreglo apunta a la direccin del primer elemento del arreglo.

4.10.1. Cadena de caracteres.


Antes de comenzar a desarrollar el tema de los arreglos o "arrays", veremos un caso especial de ellos.
Se trata de las cadenas de caracteres o "strings" (en ingls).
Una cadena, en C, es un conjunto de caracteres, o valores de tipo "char", terminados con el carcter
nulo, es decir el valor numrico 0.
Internamente se almacenan en posiciones consecutivas de memoria.
Este tipo de estructuras recibe un tratamiento especial, y es de gran utilidad y de uso continuo.
Una cadena puede almacenar informaciones como nombres de personas, mensajes de error, nmeros
de telfono, etc.
Sintaxis para definir una variable tipo cadena:

char <identificador> [<longitud mxima>];


En este caso los corchetes no indican un valor opcional, sino que son realmente corchetes, por eso estn
en negrita.
Durante el tratamiento de variables tipo cadena tener en cuenta que:
Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una
posicin para almacenar el carcter nulo.
Por ejemplo:
Si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como:
char Saludo[5]; // Cuatro caracteres para "HOLA" y uno para '\000'.
Es posible hacer referencia a cada uno de los caracteres individuales que componen la cadena,
simplemente indicando la posicin.
Por ejemplo:
Saludo[2]; //Hace referencia al 3 carcter de la cadena, la 'L'.
Los ndices tomarn valores empezando en el cero.
Por ejemplo:

Saludo[0]; //Hace referencia al 1 carcter de la cadena, la 'H'.


La asignacin directa slo est permitida cuando se hace junto con la declaracin.

118

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Por ejemplo:

char Saludo[5];
Saludo = "HOLA"
Esta modalidad producir un error en el compilador, ya que una cadena definida de este modo se
considera una constante, como veremos en el captulo de "arrays" o arreglos.
La manera correcta de asignar una cadena es:

char Saludo[5];
Saludo[0] = 'H';
Saludo[1] = 'O';
Saludo[2] = 'L';
Saludo[3] = 'A';
Saludo[4] = '\000';
O bien:

char Saludo[5] = "HOLA";


Si parece un sistema engorroso, no te preocupes, en prximos captulos veremos funciones que
facilitarn la asignacin de cadenas.
Existen muchas funciones para el tratamiento de cadenas, como veremos, que permiten compararlas,
copiarlas, calcular su longitud, imprimirlas, visualizarlas, guardarlas en disco, etc. Adems, frecuentemente,
nos encontraremos a nosotros mismos creando nuevas funciones que bsicamente hacen un tratamiento de
cadenas.

4.10.2. Arreglos
Empezaremos con los tipos de datos estructurados, los arrays.
Los arrays o arreglos permiten agrupar datos usando un mismo identificador.
Todos los elementos de un array son del mismo tipo, y para acceder a cada elemento se usan
subndices.
Sintaxis:

<tipo> <identificador>[<nm_elemen>][[<nm_elemen>]...];
Los valores para el nmero de elementos deben ser constantes, y se pueden usar tantas dimensiones
como queramos, limitado slo por la memoria disponible.
Cuando slo se usa una dimensin se suele hablar de listas o vectores, cuando se usan dos, de tablas o

matrices.

Ahora podemos ver que las cadenas de caracteres son un tipo especial de arrays. Se trata en realidad de
arrays de una dimensin de objetos de tipo char.
Los subndices son enteros, y pueden tomar valores desde 0 hasta <nmero de elementos>-1.
Esto es muy importante, y hay que tener mucho cuidado.
Por ejemplo:

int Vector[10];
Crear un array con 10 elementos enteros; podremos acceder a los elementos Vector[0] a Vector[9].
Como subndice podremos usar cualquier expresin entera.

119

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

En general C++ no verifica el mbito de los subndices. Si declaramos un array de 10 elementos, no


obtendremos errores al acceder al elemento 11.
Sin embargo, si asignamos valores a elementos fuera del mbito declarado, estaremos accediendo a
zonas de memoria que pueden pertenecer a otras variables o incluso al cdigo ejecutable de nuestro
programa, con consecuencias generalmente desastrosas.
Por ejemplo:

int Tabla[10][10];
char DimensionN[4][15][6][8][11];
...
DimensionN[3][11][0][4][6] = DimensionN[0][12][5][3][1];
Tabla[0][0] += Tabla[9][9];
Cada elemento de Tabla, desde Tabla[0][0] hasta Tabla[9][9] es un entero.
Del mismo modo, cada elemento de Dimensin N es un carcter.

4.10.2.1. Inicializacin de un arreglo.


Los arrays pueden ser inicializados junto con la declaracin.
Por ejemplo:
float R[10] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};
float S[] = {2, 32, 4.6, 2, 1, 0.5, 3, 8, 0, 12};
int N[] = {1, 2, 3, 6};
int M[][3] = { 213, 32, 32, 32, 43, 32, 3, 43, 21};
char Mensaje[] = "Error de lectura";
char Saludo[] = {'H', 'o', 'l', 'a', 0};
En estos casos no es obligatorio especificar el tamao para la primera dimensin, como ocurre en los
ejemplos de las lneas 2, 3, 4, 5 y 6.
En estos casos la dimensin que queda indefinida se calcula a partir del nmero de elementos en la lista
de valores iniciales.
En el caso 2, el nmero de elementos es 10, ya que hay diez valores en la lista.
En el caso 3, ser 4.
En el caso 4, ser 3, ya que hay 9 valores, y la segunda dimensin es 3: 9/3=3.
Y en el caso 5, el nmero de elementos es 17, 16 caracteres ms el cero de fin de cadena.

4.10.2.2. Operadores utilizados con arreglos.


Ya hemos visto que se puede usar el operador de asignacin con arrays para asignar valores iniciales.
El otro operador que tiene sentido con los arrays es sizeof.
Aplicado a un array, el operador sizeof devuelve el tamao de todo el array en bytes.
Podemos obtener el nmero de elementos dividiendo ese valor entre el tamao de uno de los
elementos.
Por ejemplo:

#include <iostream>
using namespace std;
int main()
{
int array[231];
cout << "Nmero de elementos: " << sizeof(array)/sizeof(int) << endl;

120

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

cout << "Nmero de elementos: " << sizeof(array)/sizeof(array[0]) << endl;


cin.get();
return 0;
}
Las dos formas son vlidas, pero la segunda es, tal vez, ms general.

4.10.3. Algoritmos de ordenacin: mtodo de la burbuja


Una operacin que se hace muy a menudo con los arrays, sobre todo con los de una dimensin, es
ordenar sus elementos.
Dedicaremos ms captulos a algoritmos de ordenacin, pero ahora veremos uno de los ms usados,
aunque no de los ms eficaces, se trata del mtodo de la burbuja.
Consiste en recorrer la lista de valores a ordenar y compararlos dos a dos.
Si los elementos estn bien ordenados, pasamos al siguiente par, si no lo estn los intercambiamos, y
pasamos al siguiente, hasta llegar al final de la lista.
El proceso completo se repite hasta que la lista est ordenada.
Veamos el mtodo utilizando un ejemplo:
Ordenar la siguiente lista de menor a mayor:
15 | 3 | 8 | 6 | 18 | 1
Empezamos comparando 15 y 3. Como estn mal ordenados los intercambiamos, la lista quedar:
3 | 15 | 8 | 6 |18 | 1
Tomamos el siguiente par de valores: 15 y 8, y volvemos a intercambiarlos, y seguimos el proceso...
Cuando lleguemos al final la lista estar as:
3 | 8 | 6 |15| 1| 18
Empezamos la segunda pasada, pero ahora no es necesario recorrer toda la lista. Si observas vers que
el ltimo elemento est bien ordenado, siempre ser el mayor, por lo tanto no ser necesario incluirlo en la
segunda pasada.
Despus de la segunda pasada la lista quedar:
3 | 6 | 8 | 1| 15 |18
Ahora es el 15 el que ocupa su posicin final, la penltima, por lo tanto no ser necesario que entre en
las comparaciones para la siguiente pasada.
Las sucesivas pasadas dejarn la lista as:
3) 3 | 6 | 1| 8 | 15 | 18
4) 3 |1 | 6 | 8 | 15 | 18
5) 1 | 3 | 6| 8 | 15 | 18

4.10.4. Ejercicios: cadenas de caracteres.


Teniendo en cuenta la asignacin que hemos hecho para la cadena Saludo, se muestran varias versiones
de una funcin que calcule la longitud de una cadena, cules de ellas funcionan y cules no? Marcar la
opcin correcta.
a) int LongitudCadena (char cad[])

121

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

{
int l = 0;
while(cad[l]) l++;
return l;
}
S No
b) int LongitudCadena (char cad[])

{
int l;
for(l = 0; cad[l] != 0; l++);
return l;
}
S No
c) int LongitudCadena (char cad[])

{
int l = 0;
do {
l++;
} while(cad[l] != 0);
return l;
}
S

No

4.10.5. Ejercicios: arreglos


1-) Hacer un programa que lea diez valores enteros en un array desde el teclado y calcule y muestre: la
suma, el valor promedio, el mayor y el menor.
2-) Hacer un programa que lea diez valores enteros en un array y los muestre en pantalla. Despus
ordenar de menor a mayor y vuelva a mostrar. Finalmente ordenar de mayor a menor y los muestre por
tercera vez. Para ordenar la lista usar una funcin que implemente el mtodo de la burbuja y que tenga
como parmetro de entrada el tipo de ordenacin, de mayor a menor o de menor a mayor. Para el array
usar una variable global.
3-) Hacer un programa que contenga una funcin con el prototipo bool Incrementa (char numero[10]);.
La funcin debe incrementar el nmero pasado como parmetro en una cadena de caracteres de 9
dgitos. Si la cadena no contiene un nmero, debe devolver false, en caso contrario debe devolver true, y
la cadena debe contener el nmero incrementado. Si el nmero es "999999999", debe devolver "0".
Cadenas con nmeros de menos de 9 dgitos pueden contener ceros iniciales o no.

Ej: la funcin debe ser capaz de incrementar tanto la cadena "3423", como "00002323".
La funcin "main" llamar a la funcin Incrementar con diferentes cadenas.
4-) Hacer un programa que contenga una funcin con el prototipo bool Palindromo(char palabra[40]);.
La funcin debe devolver true si la palabra es un palndromo, y false si no lo es.
Una palabra es un palndromo si cuando se lee desde el final al principio es igual que leyendo desde el
principio, por ejemplo: "Otto", o con varias palabras "Anita lava la tina", "Dbale arroz a la zorra el abad",
La ruta nos aport otro paso natural.
En estos casos debemos ignorar los acentos y los espacios, pero no es necesario que tu funcin haga
eso, bastar con probar cadenas como "anitalavalatina", o "dabalearrozalazorraelabad".
La funcin no debe hacer distinciones entre maysculas y minsculas.
5-) Escribir el cdigo fuente de un programa que permita la carga de un string definido de no mas de 20
caracteres e indique cuntos caracteres se tipearon.

122

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Alternativa 1) suponer que no hay espacios en blanco, por ej. si se tipea asfhe<Enter>, debera indicar 5
caracteres.
Alternativa 2) debera contar la cantidad caracteres ingresados incluidos los espacio en blanco, por ej.
Juan Jorge<Enter>, debera indicar 10 caracteres.
Resolucin Alternativa 2:

#include <iostream>
using namespace std;
int main()
{
int i=1;
char mensaje [21];
cout << " Ingrese un texto de no mas de 20 caracteres" << endl;
cin.getline (mensaje,21);
while (mensaje[i]!=0)i++;
cout <<endl <<"El arreglo tiene: " << i << " caracteres";
return 0;
}
6-) Escribir un cdigo de programa que llame desde main a una funcin pasando por referencia el
nombre de un array y desde esa funcin se mostrar por pantalla el array escrito de atrs para adelante.

Ej: se ingresa desde main Juan Pablo y desde la funcin se deber mostrar: olbaP nauJ.
#include <iostream>
using namespace std;
int main()
{
int i=1;
char mensaje [21];
cout << " Ingrese un texto de no mas de 20 caracteres" << endl;
cin.getline (mensaje,21);
while (mensaje[i]!=0)i++;
cout <<endl <<"El arreglo tiene: " << i << " caracteres"<< endl;
while((i+1)!=0){cout << mensaje[i] ;--i;}
cout << endl;
return 0;
}
7-) Escribir el cdigo que permita la carga de un arreglo de dos dimensiones.
8-) Escribir el cdigo que permita cargar un vector y luego mostrar el mayor y menor elemento, SIN
ordenar.
9-) Hacer un programa que cargue 25 valores enteros en un arreglo de 5 x 5, y luego muestre primero
la suma de cada fila y luego la suma de cada columna.
10-) Escribir el cdigo que permita cargar un vector y luego ordenar de mayor a menor.
11-) Escribir el cdigo que permita la carga de una arreglo de dos dimensiones de 3 x 3 y que luego
ordene todas las filas de mayor a menor.
12-) Escribir el cdigo que permita cargar un arreglo de 3 x 3 y que busque el menor elemento de cada
columna y muestre su valor y posicin (fila, columna).
13-) Escribir el cdigo que permita cargar un arreglo de 3 x 3, luego busque los elementos que se
repiten, y los muestre.

Ej: la salida sera: Elementos repetidos: 3 , 5, 12


Alternativa: indicar la cantidad de veces que se repiten cada nmero.

123

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ej: Elementos repetido 3 2 veces, 5 1 vez, 12 - 5 veces.


14-) Escribir el cdigo que permita cargar un arreglo de 10 elementos, primero se deber ingresar la
posicin y luego el valor. Se deber controlar que el ndice o posicin del arreglo no exceda al valor mximo
del arreglo.
Alternativa: Verificar si el elemento ya ha sido cargado.
15-) Escribir el cdigo que permita la carga de los 5 primeros elementos de un arreglo de 10 elementos
y luego lo complete copiando el primero al ultimo lugar, el segundo al ante ultimo lugar. Luego deber
mostrar el arreglo cargado.

Ejemplo: se ingresa 1|3|5|2|4 el arreglo mostrado deber quedar: 1|3|5|2|4|4|2|5|3|1


16-) Escribir el cdigo que permita cargar un arreglo de 3 x 3, pero que slo permita cargar los
elemento de la diagonal principal; el resto lo complete con ceros.
17-) Escribir el cdigo que permita cargar un arreglo de 3 x 3, pero que slo permita cargar los
elemento de la diagonal principal y el tringulo superior, luego deber completar el tringulo inferior de
manera de lograr una matriz simtrica.
Si se ingresan: 1, 2, 3, 7, 5 ,4.
Ej de matriz simtrica:
1
2
3

2
7
5

3
5
4

18-) Escribir el cdigo que permita cargar un arreglo de 3 x 3, y que luego cargue un vector columna
con el promedio de cada fila.
19-) Escribir el cdigo que permita cargar dos arreglos de 3 x 3 de nombre MatA y MatB y, que luego,
presente un men, como el siguiente:
1) Suma las Matrices MatA+MatB.
2) Resta las Matrices MatA-Matb.
3) Cargar MatA.
4) Cargar MatB.
5) Salir.

124

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.11. GUA DE EJERCICIOS


4.11.1. Gua Practica 1 de C++. Instrucciones secuenciales
NOTA: Ejemplos compilados con Anjuta Versin 1.2.4a, bajo Ubuntu 10

Ejemplo N 1:
Disee un programa que permita el ingreso de los lados de un rectngulo y calcule y muestre el rea del
mismo.

INICIO

a = 0 ; b =0

Area = 0

Inicio el programa.

Declaro e inicializo las variables a, b y Area.

Cargo por teclado a.

Cargo por teclado b.

Area = a*b

area

FIN

Calculo el area: Area = a*b.


Muestro el resultado (se muestra en
pantalla el valor de Area).
Finalizo el programa.

1- #include <iostream>
// esta lnea carga una librera, que es necesaria porque las
// declaraciones que permiten el acceso a "cout" y "cin" (lnea 7 y 8) estn en una librera externa.
2- using namespace std;
3- int main() /* esta es la funcin principal, todos los comandos que estn
dentro de las llaves se van a ejecutar (de la lnea 4 a la 14) */
4- {
5int a=0;
// Se "crean" (declaran) las variables "enteras" llamadas
6int b=0;
/* a, b y Area, que se van a utilizar en el programa y se las */
7int Area=0;
// inicializa con el valor cero
8cout << "ingrese el valor del ancho de un rectngulo: ";
/* La funcin cout de la lnea 8 muestra en pantalla el texto que esta dentro de las comillas */
9-

cin >> a;

/* espera que el usuario cargue por teclado un nmero y lo */


/* guarda en la variable a */
10cout << endl << "ingrese el valor del largo de un rectngulo: ";
/* Un mtodo muy til para cout es "endl", que har que la siguiente salida se imprima en una nueva lnea.
*/
111213-

cin >> b;
// carga por teclado un valor y lo guarda en la variable b
Area = a*b;
// esto es un proceso, multiplica a*b y lo guarda en Area
cout << endl << "el area del rectangulo es: " << Area << " m"; /* muestra en pantalla
el contenido de la variable Area */
14- return (0);
} // valor de retorno de la funcin main al sistema.

125

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 1:
Modificar el programa del ejemplo 1 para que se puede ingresar un nmero por teclado, que utilizar
una variable llamada numero, y muestre el cuadrado del mismo. Sugerencia: no borre los enunciados del
programa que no necesita, use doble barra para deshabilitarlos.

Ejercicio N 2:
Modificar nuevamente el programa del ejemplo 1 para que permita ingresar tres nmeros por teclado y
muestre la suma de los mismos. Sugerencia: usar cuatro variables enteras.

Ejercicio N 3:
Convertir una medida en cm., que se ingresa por teclado, a su equivalente en pies, y mostrar el
resultado de la conversin.
Nota: el programa planteado mas abajo contiene errores y faltan sentencias, deber encontrarlos y
corregirlos. Sugerencia: copie el programa sin modificarlo, compile para ver que tipo de errores genera el
compilador y corrijalos de uno en uno.
123456789-

int main();
float Centimetro, float Pulg;
cout >> ingrese una medida en cm:
cin >> centimetro ;
pulg = centimetro x 0.3937;
cout >> " La medida en pulgadas vale: " << pulg;

Ejercicio N 4:
Se ingresa por teclado el radio de una circunferencia y se debe calcular y mostrar en pantalla el
permetro y la superficie de la misma. Sugerencia: usar variables de tipo flotante.

Ejercicio N 5:
Para un algoritmo, dados los catetos de un tringulo rectngulo, calcular e imprimir su hipotenusa.
Frmula de clculo: h = a + b , donde a y b son los catetos, h es la hipotenusa.
Para calcular la raz cuadrada agregue la librera cmath y utilice la funcin sqrt(vari) que permite
calcular la raz cuadrada de una variable (en este caso llamada vari).

Ejercicio N 6:
Un pintor sabe que con una pintura determinada puede pintar 3,6 metros cuadrados con cada medio
litro. Sabiendo la altura y el largo de la pared a pintar , realizar un algoritmo que informe cuantos litros de
pintura necesitar para la pared en cuestin. Los datos de la pared se ingresarn en metros.

Ejercicio N 7:
Una bomba de agua puede extraer 800 litros de por hora, realizar un algoritmo que calcule el tiempo
necesario para extraer todo el lquido de un tanque del que se saben sus medidas altura y radio. Estas se
ingresarn por teclado.

Ejercicio N 8:
Convertir una temperatura dada en la escala Celsius e imprmase en su equivalente Fahrenheit. (F =
(9/5) C + 32).

Ejercicio N 9:
Disee un algoritmo que exprese la capacidad de un disco duro en megabytes, kilobytes y bytes,
conociendo la capacidad del disco en gigabytes.
Considere que: 1 kilobyte = 1024 bytes, 1 megabyte = 1024 kilobyte, 1 gigabyte = 1024 megabytes.

Ejercicio N 10:
Determinar la velocidad de un automvil que se desplaza a una velocidad constante si se conoce la
distancia recorrida y el tiempo utilizado, ambos datos se ingresan por teclado y el algoritmo deber mostrar
la velocidad.

126

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

4.11.2. Gua Prctica 2 de C++. Estructuras de Decisin


Ejemplo N 1
Escriba un algoritmo que determine y muestre en pantalla si un nmero ingresado por teclado es positivo,
negativo o cero.
1- #include <iostream>
2- using namespace std;
3- int main() /* funcin principal, se ejecuta todo lo que esta dentro de las llaves */
4{
5int valor;
/*Se declara una variable de tipo entero llamada "valor" que se va a utilizar
para guardar el numero ingresado por teclado */
6cout << "Ingrese un numero: ";
7cin >> valor;
8-

if(valor>0) cout << endl << "El numero es positivo";

910-

if(valor<0)
cout << endl << "El numero es negativo";

1112131415-

if(valor==0)
{
cout << endl << "El numero es cero";
cout << endl << "El numero vale cero";
}

16171819-

cin.get(); // Otro mtodo para "cin" es get(), que sirve para leer un carcter, pero que nos
cin.get(); // puede servir para detener la ejecucin de un programa.
return (0);
}
INICIO

Valor > 0

SI

El nmero es

SI

El nmero es
negativo

positivo

Ingrese un nmero

NO
valor

Valor < 0
NO
Valor = 0

SI

El nmero es
cero

NO
El nmero
vale cero
FIN

127

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 2:
Identificar los cambios respecto del ejemplo 1 y analizar de que manera afecta al programa.
1- #include <iostream>
2- using namespace std;
3- int main()
4{
5int valor;
67-

cout << "Ingrese un numero: ";


cin >> valor;

8-

if (valor>0) cout << endl << "El numero es positivo";

91011121314151617-

else
{
if (valor<0)
cout << endl << "El numero es negativo";
else
cout << endl << "El numero es cero";
}
return (0);
}

INICIO

Ingrese un
nmero

Valor >
0

SI

El nmero es
positivo

SI

El nmero es
negativo

NO
valor
Valor <
0
NO
El nmero es
cero

FIN

128

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 3:
Identificar los cambios respecto del ejemplo 1 y del ejemplo 2. Analizar de que manera afecta al
programa y cual de los tres es el ms ptimo para resolver este problema en particular.

1- #include <iostream>
2- using namespace std;
3- int main()
4{
5int valor;
67-

cout << "Ingrese un numero: ";


cin >> valor;

8-

if (valor>0) cout << endl << "El numero es positivo";

910-

else if (valor<0)
cout << endl << "El numero es negativo";

1112-

else

1314-

return (0);
}

cout << endl << "El numero es cero";

INICIO

Ingrese un
nmero

Valor >
0

SI

El nmero es
positivo

SI

El nmero es
negativo

NO
valor
Valor <
0
NO
El nmero es
cero

FIN
Recuerde que aunque en los diagrama de flujo aqu presentados no aparece la declaracin de las
variables (por una razn de espacio), todas las variables que utilizara el programa deben declararse y
eventualmente inicializarse.

129

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 4:
Crear un programa para que, mediante un men (implementando una estructura del tipo switch),
permita al usuario realizar la suma, la resta o el producto de dos nmeros ingresados previamente por
teclado. Al final mostrar la operacin realizada (suma, resta producto), y el resultado de la operacin.

1- #include<iostream>
2- using namespace std;
3- int main()
4{
5int a=0,b=0,resul=0;
6char selec;
/*se debe declarar una variable de tipo carcter al comienzo del programa para

utilizarla con la funcin switch*/

78910-

cout <<"Ingrese el primer nro: ";


cin >> a;
cout << "Ingrese el segundo nro: ";
cin >> b;

1112131415-

cout<<"elija una opcion:"<< endl;


cout<<"a -SUMA"<< endl;
cout<<"b -RESTA"<< endl;
cout<<"c -MULTIPLICACION"<< endl;
cout<<"d -Salir"<< endl << endl;

16-

cin >> selec;

171819202122-

switch(selec)
{
case 'a': //se indica entre comillas los valores de salida ya que la variable selec es de tipo
resul = a+b;
//
caracter.
cout << "El resultado de la suma es: "<< resul;
break;

232425-

case 'b':
cout << "El resultado de la resta es:" << a-b;
break;

262728-

case 'c':
cout << "El resultado del producto es:" << a*b;
break;

2930313233-

case 'd':
cout << "no se ha realizado ninguna operacion";
break;
}
}

130

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

INICIO

Diagrama de flujo del ejemplo N 4

Ingrese el
primer numero

selec

?
'a'

'b'

'c'

resul = a+b

El resultado de
la resta es:
a-b

El resultado
del producto
es: a*b

'd'

Ingrese el segundo
numero

Elija una opcin:


a -SUMA
b -RESTA
c -MULTIPLICACION
d -Salir

El resultado de
la suma es:
resul

FIN

selec

Ejercicio N 1:
Ingresar un nmero C y determinar si pertenece al intervalo cerrado [A,B] con A y B ingresados por
teclado.

Ejercicio N 2:
Escribir un programa fuente en C, utilizando la sentencia IF, que permita ingresar por teclado los
lmites de un intervalo cerrado A y B. Deber asegurarse de que A sea menor que B, en caso contrario,
intercambiar los valores. Luego, deber ingresar un nmero C.
Finalmente, mostrar por pantalla uno de los siguientes mensajes, reemplazando, por el valor, donde
aparece el nombre de la variable:
- C es menor que A.
- C pertenece al intervalo A, B
- C es mayor que B.

131

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 3:
Se leen dos valores enteros A, B. Si A es mayor que B se realiza la suma de ambos, caso contrario, se
hace el producto y se muestra el resultado en pantalla ademas de la operacin realizada (suma
producto).

Ejercicio N 4:
Disee un programa que:
- Permita la carga por teclado de los lados de un rectngulo y el radio de un crculo.
- Determine el rea de cada figura.
- Muestre en pantalla el rea mayor y a que figura pertenece.

Ejercicio N 5:
Modifique el programa del ejercicio anterior para que:
- Utilice la directiva define para utilizar el valor de

en el calculo del rea de la circunferencia.

(#define PI 3.141592).
- Considere el caso de que las dos reas sean iguales, y en tal caso, que muestre un mensaje en la
pantalla indicndolo y el valor del rea. (ingrese Radio = 1, Lado1 = 1, Lado2 = 3.141592, para comprobar
el caso de que las dos reas calculadas sean iguales).

Ejercicio N 6:
Escribir un programa a modo de calculadora que permita mostrar al usuario un men con las siguientes
opciones:
1- Operacin suma.
2- Operacin resta.
3- Operacin producto.
4- Operacin divisin.
5- Raz cuadrada.
6- Operacin Potencia.
7- Logaritmo natural.
8- Salir del programa.
Luego mediante la funcin SWITCH, deber realizar la opcin seleccionada, teniendo en cuenta las
siguientes consideraciones:
Para guardar el resultado de la divisin de dos enteros se necesita una variable de tipo flotante.
Para obtener los resultados de las siguientes operaciones puede recurrir a las funciones a las que se
hace referencia:

Raiz cuadrada
Operacion Potencia
Logaritmo Natural

sqrt(x)
pow(x,y)
log(x)

Las tres funciones mencionadas se encuentran en la librera cmath.

Ejercicio N 7:
Escribir un algoritmo que dado un importe de dinero, calcule e informe cunto corresponde pagar de
impuesto, en cuntas cuotas y el valor de las mismas. Tener en cuenta los siguientes datos:
El IMPUESTO es el 10% del importe dado.
Si el importe es mayor que $500 y menor o igual que $1000, se paga en dos cuotas.
Si el importe es mayor a $1000 en tres cuotas.

132

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 8:
Disee un algoritmo que permita ingresar dos valores X e Y y determinar que porcentaje es X de Y.

Ejercicio N 9:
Escribir un algoritmo que permita ingresar tres nmeros distintos entre si e imprima el mayor de ellos.

4.11.3. Gua Prctica N 3 de C++. Estructuras Repetitivas


INICIO
Ejemplo N 1:
Escribir un algoritmo que permita el ingreso de dos nmeros enteros y calcule el
producto de los mismos (multiplicacin) por sumas sucesivas ( Ejemplo: 5x2 =
2+2+2+2+2).

PRO = 0

Ingrese un
numero

1- #include <iostream>
2- using namespace std;
3- int main()
4{

56789-

int a,b,cont,PRO=0;
cout << "Ingrese un numero: ";
cin >> a;
cout << endl << "Ingrese el segundo numero: ";
cin >> b;

1011-

for (cont=1 ; cont<=a ; cont++)


PRO = PRO + b;

12-

cout<<endl<<"El producto de "<<a<<"por"<<b<<" vale "<<PRO;

13-

Ingrese el
segundo
numero

b
cont = 1

cont = cont+1

PRO=PRO+b

SI

cont<=a
NO
El producto
de a por b
vale PRO

FIN
133

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 1:
Escriba un algoritmo que permita el ingreso de dos nmeros enteros, llamados base y exponente,
y calcule la potencia por multiplicaciones sucesivas.
Hacer las consideraciones necesarias para que funcione. Tener en cuenta casos particulares. (Ejemplo:
25= 2x2x2x2x2).

Ejemplo N 2:
Escribir un algoritmo que permita ingresar un nmero entero del 1 al 10 e imprima la tabla de
multiplicar del nmero ingresado.

INICIO
1- #include <iostream>
2- using namespace std;

i; z; tabla;

3- int main()
4{
5int tabla,i,z;
6cout << "Ingrese la tabla que desea calcular: ";
7cin >> tabla;
89101112-

for(i=0;i<=10;i++)
{
z=tabla*i;
cout << endl << z;
}

13-

Ingrese la tabla
que desea
calcular

tabla

i=0

i = i+1

z
z=tabla*i

SI

i<=10
NO
FIN

Ejercicio N 2:
Modificar el programa del ejemplo anterior para que imprima las tablas de multiplicar desde la
seleccionada (mediante el ingreso de un nmero entero), hasta la del 10 inclusive.
Se debe verificar que el numero ingresado este comprendido en el intervalo del 1 al 10.

Nota: para este ejercicio necesitara dos ciclos FOR, uno anidado dentro del otro.

134

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 3:
Realizar un algoritmo que permita acumular nmeros que se ingresan por teclado hasta que la suma de
los mismos sea inmediatamente superior a 1000, y muestre el resultado en pantalla. Se deber poder
ingresar nmeros decimales (float).

INICIO
1- #include <iostream>
2- using namespace std;

suma=0; num;

3- int main()
4{
56-

float num, suma=0;


cout << "Ingrese los nmeros a sumar: ";

7891011-

while (suma <= 1000)


{
cin >> num;
suma=suma+num;
}

12-

cout << endl << "La suma es: " << suma;

13-

Ingrese los
nmeros a
sumar

suma=suma+num

num

SI

suma<=1000

NO
La suma
es suma

FIN
Ejercicio N 3:
Modificar el programa anterior para que muestre el ltimo resultado de la suma antes de sobrepasar el
valor de 1000. (Ejemplo: 400 + 500 + 200 debera mostrar: 900).

Ejercicio N 4:
Escribir un programa para que permita sumar los nmeros positivos que se ingresan por teclado hasta
que se ingresa el -1, que es la condicin de finalizacin del programa, y muestre el resultado de la suma.

Ejemplo N 4:
Escribir un programa para que permita sumar los nmeros enteros que se ingresan por teclado hasta
que se ingresa el 0, que es la condicin de finalizacin del programa, y muestre el resultado de la suma.

135

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

1- #include <iostream>
2- using namespace std;

INICIO

3- int main()
4{

suma=0;
num;

56-

float num, suma=0;


cout << "Ingrese los nmeros a sumar: ";

7891011-

do

12-

cout << endl << "La suma es: " << suma;

13-

Ingrese los
nmeros a
sumar

{
cin >> num;
suma=suma+num;
} while (num != 0);

num
suma=suma+nu
m
SI

num != 0

NO
La suma
es suma

FIN
Vase en este caso la utilidad del ciclo do...while. Como la variable de entrada es la que se chequea
en cada ciclo para la condicin de salida, y en el primer ciclo no se puede hacerlo sin antes realizar el
ingreso de un valor, el ciclo do...while reordena la secuencia de pasos dentro del bucle del while, con lo que
podemos primero ingresar un valor y despus chequear la condicin de salida.

Ejercicio N 5:
Leer 10 valores enteros. Calcular e informar:
La suma de los valores positivos.
El producto de los valores negativos. (Ignorar los valores nulos)

Ejercicio N 6:
Realizar un algoritmo que permita el ingreso de nmeros positivos hasta que se ingresa el cero, y
muestre el mayor de los nmeros ingresados.

Ejercicio N 7:
Realizar un algoritmo que muestre en pantalla los trminos de la serie de fibonachi. Se deber ingresar
un nmero entero que ser la cantidad de trminos de la serie a mostrar.

136

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

El nmero ingresado deber ser mayor o igual a 1 y menor o igual a 50, si no cumple esa condicin se
deber pedir el ingreso de un nuevo valor.

Ejercicio N 8:
Disee un algoritmo para calcular el resultado de la suma de los 100 primeros trminos de la siguiente
serie:
S = 1 1/3 + 1/9 1/27 + 1/81

Ejercicio N 9:
Escribir un programa que permita ingresar dos valores A y B que determinan un intervalo, luego ir
acumulando los valores que se ingresan a continuacin siempre y cuando estos pertenezcan al intervalo. El
programa finaliza cuando se ingresan tres valores fuera del intervalo.

Ejercicio N 10:
Escribir un programa que permita el ingreso de nmeros que estn comprendidos en el intervalo 0 y 99
inclusive ([0,99]), los nmeros mayores a 99 deben ser ignorados. Se asegura al menos el ingreso de un (1)
nmero dentro del intervalo. La carga finaliza al ingresar un numero negativo. Sobre los nmeros ingresados
el programa deber mostrar el mayor valor ingresado, el menor valor ingresado, el promedio y la cantidad
de nmeros ingresados (se consideran solo aquellos que se encuentran dentro del intervalo).

4.11.4. Gua Prctica N 4 de C++. Arreglos


Ejemplo N 1:
Escribir un algoritmo que permita la carga de un vector Vec1 de 10 elementos.
Nota: Considerar que los elementos del vector son nmeros enteros.

1- #include <iostream>
2- using namespace std;

INICIO

3- int main()
4{
5int Vec1[10]; // Declaracin del arreglo Vec1 de una

Vec1[10]

// dimensin y diez elementos enteros.

6-

int i;

89101112-

for(i=0;i<10;i++)
{
cout << "ingrese el elemento " << i << ":";
cin >> Vec1[i];
}

1314-

return (0);
}

i=0

i = i+1

Vec1[i
]
Ingrese el
elemento i:

SI

i < 10
NO
FIN

137

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 1:
Modificar el programa anterior para que muestre los elementos del vector una vez finalizada la carga.

Ejercicio N 2:
Escribir un algoritmo que permita la carga de un vector Vector2 de 10 elementos y busque cuantas
veces aparece un numero N en el mismo. El numero N a buscar se ingresara por teclado una vez finalizada
la carga del vector.

Nota: no modificar el vector.

Ejercicio N 3:
Modificar el programa del ejercicio 1 para que permita buscar el elemento mayor, el menor y calcule el
promedio de los elementos.
Observacin: Ntese la diferencia entre el mtodo de bsqueda del elemento mayor de un vector que se
encuentra cargado y la bsqueda del elemento mayor a medida que se van ingresando una serie de
escalares por teclado.

Ejemplo N 2:
Realizar un algoritmo que permita la carga de un vector Vect3 de N elementos y ordene el mismo de
mayor a menor.
Razonar acerca de la eficiencia de los cuatro mtodos planteados y en que condiciones.
Nota: el numero N, que es la cantidad de elementos del vector, se define como una constante al inicio
del programa.
Mtodo N 1: burbuja con bandera
1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5{
6int i, bandera, temp;
8int Vect3[N];
9for(i=0;i<N;i++)
10{
11cout << "ingrese el elemento " << i << ":";
12cin >> Vect3[i];
13}
14do
15{
16bandera = 0;
17for(i=0;i<N-1;i++)
18{
19if(Vect3[i] < Vect3[i+1])
20{
21temp = Vect3[i];
22Vect3[i] = Vect3[i+1];
23Vect3[i+1]=temp;
24bandera = 1;
25}
26}
27}while(bandera!=0);
2829-

return(0);
}

138

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Diagrama de flujo del ejemplo N 2, mtodo 1

INICIO

Vec3[N]
i=0

i = i+1
Vect3[i]

Ingrese el elemento
i:

SI

i<10
NO

bandera=0
i=0

SI

i = i+1

i < N-1
NO

Vect3[i]
<
Vect3[i+1]

NO

SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp

bandera=1

SI

bandera0
NO
FIN

139

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Mtodo N 2: vuelve el contador a cero cada vez que ordena un elemento.


1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5{
6int i, temp;
8-

int Vect3[N];

910111213-

for(i=0;i<N;i++)
{
cout << "ingrese el elemento " << i << ":";
cin >> Vect3[i];
}

14151617181920212223-

for(i=0;i<N-1;i++)
{
if(Vect3[i] < Vect3[i+1])
{
temp = Vect3[i];
Vect3[i] = Vect3[i+1];
Vect3[i+1]=temp;
i = -1;
// se debe reinicializar en -1 el contador debido al
}
// incremento automtico del bucle for.
}

2425-

return(0);
}

140

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Diagrama de flujo del ejemplo N 2, mtodo 2:

INICIO

Vec3[N]
i=0

i = i+1
Vect3[i]

Ingrese el
elemento i:

SI

i < 10
NO
i=0

SI

i = i+1

i < N-1
NO

NO

Vect3[i]
<
Vect3[i+1]

SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp

i = -1
FIN

141

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Mtodo N 3: burbuja con dos for.


1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5{
6int i, j, temp;
8-

int Vect3[N];

910111213-

for(i=0;i<N;i++)
{
cout << "ingrese el elemento " << i << ":";
cin >> Vect3[i];
}

1617181920212223252627-

for(j=0;j<N;j++)
{
for(i=0;i<N-1;i++)
{
if(Vect3[i] < Vect3[i+1])
{
temp = Vect3[i];
Vect3[i] = Vect3[i+1];
Vect3[i+1]=temp;
}
}
}

2829-

return(0);
}

142

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Diagrama de flujo del ejemplo N 2, mtodo 3:


INICIO

Vec3[N]
i=0

i = i+1
Vect3[i]

Ingrese el
elemento i:

SI

i<10
NO

j=0

i=0

SI

i = i+1

i<N-1
NO

NO

Vect3[i]
<
Vect3[i+1]

SI
temp=Vect3[i]
Vect3[i]=Vect3[i+1]
Vect3[i+1]=temp

SI

j = j+1

j<N
NO
FIN

143

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Mtodo N 4: comparacin de uno contra todos


1- #include <iostream>
2- using namespace std;
3- #define N 10
4- int main()
5{
6int i, j, temp;
8-

int Vect3[N];

910111213-

for(i=0;i<N;i++)
{
cout << "ingrese el elemento " << i << ":";
cin >> Vect3[i];
}

141517181920212223252627-

for(j=0;j<N-1;j++)
{
for(i=j+1;i<N;i++)
{
if(Vect3[j] < Vect3[i])
{
temp = Vect3[i];
Vect3[i] = Vect3[j];
Vect3[j]=temp;
}
}
}

2829-

return(0);
}

144

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Diagrama de flujo del ejemplo N 2, mtodo 4:


INICIO

Vec3[N]
i=0

i = i+1
Vect3[i]

Ingrese el
elemento i:

SI

i<10
NO

j=0

i = j+1

SI

i = i+1

i<N
NO

NO

Vect3[j]
<
Vect3[i]

SI
temp=Vect3[i]
Vect3[i]=Vect3[j]
Vect3[j]=temp

SI

j = j+1

j < N-1
NO
FIN

145

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 3:
Realizar un algoritmo que permita la carga (por filas) de una matriz, llamada matris, de filas x
columnas elementos y ordene los elementos de cada fila de menor a mayor.
Observacin: el ordenamiento de una sola fila de una matriz es muy similar al ordenamiento de un
vector. Utilice como base del cdigo alguno de los desarrollados en el ejemplo N 2.

INICIO

matris [filas][columnas]

F =0

NO
F < filas
SI

1
C =0

SI

C < columnas

Ingrese el
elemento (F,C):

NO

matris [F][C]

F = F+1

C = C+1

146

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Bandera = 0
F =0

NO
F < filas
SI
C =0

SI
C < columnas1

NO

NO
matris[F][C] <
matris[F][C+1]
F = F+1
SI
temp = matris[F][C]
matris[F][C] =
matris[F][C+1]
matris[F][C+1] =temp
bandera = 1

C = C+1

SI

FIN

147

Bandera
!= 0
NO

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Cdigo fuente del programa del ejemplo N 3:


1234-

#include <iostream>
using namespace std;
#define filas 4
#define columnas 4

5- int main()
6{
7int F, C, temp;
8char bandera;
91011121314151617-

int matris [filas] [columnas];


// declaracin del arreglo en base a las etiquetas filas y
// columnas.
for(F=0;F<filas;F++)
{
for(C=0;C<columnas;C++)
{
cout << "ingrese el elemento " << "(" << F << "," << C << ")";
cin >> matris [F][C];
}
}

181920-

do
{
bandera = 0;

21222324252627282930313233-

for(F=0;F<filas;F++)
{
for(C=0;C<columnas-1;C++)
{
if (matris[F][C] < matris[F][C+1])
{
temp = matris[F][C];
matris[F][C] = matris[F][C+1];
matris[F][C+1] =temp;
bandera = 1;
}
}
}

34-

} while (bandera != 0);

3536-

return(0);
}

Ejercicio N 4:
Modificar el programa del ejemplo 3 para que permita visualizar la matriz una vez que ha sido
ordenada.

Ejercicio N 5:
Modificar el programa del ejemplo 3 para utilizar alguno de los otros mtodos posibles de
ordenamiento.

148

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 4:
Realizar un algoritmo que realice la carga (por columnas) de una matriz, llamada MAT, de M x N
elementos y que permita el ingreso de dos nmeros que definen un intervalo cerrado, una vez ingresados, el
programa debe informar al usuario cuantos valores dentro de la matriz estn dentro de ese intervalo.

1234-

#include <iostream>
using namespace std;
#define N 5
#define M 5

5- int main()
6{
7int f, c, temp, cantidad=0;
8-

int matris [M] [N];

910111213141516-

for(C=0;C<N;C++)
{
for(F=0;F<M;F++)
{
cout << "ingrese el elemento " << "(" << F << "," << C << ")";
cin >> matris [F][C];
}
}

1718-

cout << "ingrese los extremos de un intervalo cerrado : ";


cin >> a >> b;

1920212223-

if (a < b)
{ temp = a;
a = b;
b = temp;
}

2425262728293031-

for(F=0;F<M;F++)
{
for(C=0;C<N;C++)
{
if ( matris[F][C] > a && matris[F][C] < b )
cantidad = cantidad + 1;
}
}

3233-

return(0);
}

149

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Diagrama de flujo del ejemplo N 4:

1
Observacin: se ha omitido la carga del arreglo,
que se puede ver en el ejemplo 3.

Ingrese los extremos de


un intervalo cerrado

a b
SI

a<b
NO

temp = a
a=b
b = temp

F =0

NO
F <M
SI
C =0

SI
C<N

NO

NO

matris[F][C] > a
&&
matris[F][C] < b

F = F+1
SI
cantidad = cantidad
+1

C = C+1

150

FIN

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 6:
Escribir un programa que posibilite al usuario la carga de una matriz de M x N elementos, luego se
ingresa un numero e informa cuantos valores mayores al numero ingresado existen en cada fila del arreglo.

Ejercicio N 7:
Hacer un programa que permita cargar una matriz de M x N, calcule y muestre el mayor y menor
elemento de cada columna.

Ejercicio N 8:
Cargar una matriz de M x N y generar:
1) Un vector con el contenido de la suma de cada fila.
2) Copiar todos los valores de una fila de la matriz, indicada por teclado, a un vector.
3) Un vector con la cantidad de elementos negativos de cada columna.

Ejercicio N 9:
Escribir un programa que encuentre la ubicacin del mayor y el menor elemento de una matriz de M x
N. Mostrar la matriz completa y las ubicaciones encontradas con los valores respectivos.

Ejercicio N 10:
Realizar un diagrama de flujo que permita la carga de dos matrices y luego mediante la seleccin de
una opcin permita el clculo de la suma o el producto de las mismas y luego muestre la matriz resultado.

4.11.5. GUA PRCTICA N 5 DE C++. Funciones


Ejemplo N 1:
Escribir el cdigo fuente de un programa que tenga una funcin llamada primera que reciba un
nmero entero y devuelva a main el carcter P si el numero es positivo y N si es negativo.
1- #include<iostream>
2- using namespace std;
3- char primera (int num);
/*prototipo de la funcin primera, la palabra char delante de la
funcin indica que esta devuelve un carcter al punto desde donde se hizo la llamada (en este caso el
carcter se devuelve a main) */
4- int main()
5- {
6- int numero;
7- char tipo;
8- cout << "ingrese un numero entero: ";
9- cin >> numero;
10- tipo = primera(numero); /* en esta instruccin se realizan dos acciones:
1- Se llama a la funcin primera y se le pasa el argumento numero.
2- Se recibe el valor de retorno y se lo asigna a la variable tipo. */
11- if (tipo=='P')
12cout << el numero ingresado es positivo;
13- else if (tipo=='N')
14cout << el numero ingresado es negativo;
15- else cout << error;
16- return(0);
17- }

151

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

/*ntese que el argumento pasado numero, es una variable local de la funcin main, y se recibe en la
funcin factorial como una variable local llamada N, esto se denomina pasaje por posicin o referencia*/
18- char primera (int N) /*definicin de la funcin primera*/
19- {
20- char tipo; /* se pueden definir variables adicionales (en este caso solo una -> tipo) ademas
de las que ya se definen en el pasaje de parametros de la funcin ( N en esta funcin)*/
21- if(N>= 0)
22tipo = 'P';
23- else
24tipo = 'N';
25- return(tipo); // la instruccin return es la que permite definir el valor de retorno de la funcin, y
26- }
// adems podemos tener varios return definiendo mas de una salida de la funcin.
Vase que la funcin primera posee dos variables locales, N y tipo.

Ejercicio N 1:
Escribir el cdigo fuente de un programa que desde main se llame a una funcin que recibe como
argumento dos nmeros reales, y retorna el menor que es mostrado desde main.

Ejemplo N 2:
Escribir un programa que tenga una funcin denominada factorial, que recibe un numero N ingresado
por teclado y calcula el factorial de N, mostrando el resultado en pantalla. La funcin main debe verificar
que el numero N ingresado sea mayor o igual a cero.
Observacin: la funcin factorial no devuelve ningn valor.
El factorial de un nmero se define como:
Ejemplo: 5! = 5 * 4 * 3 * 2 * 1 = 120
1- #include<iostream>
2- using namespace std;
3- void factorial (int N); /*prototipo de la funcin factorial, la palabra void delante de la funcin indica
que esta no devuelve ningn valor*/
4- int main()
5- {
6- int numero;
8- do{
9cout << "ingrese un numero para obtener su factorial: "<< endl;
10- cin >> numero;
11- } while(numero<0);
12- factorial(numero);
/*llamado a la funcin factorial pasando el argumento numero*/
13- return(0);
14- }
15- void factorial (int N)
/*definicin de la funcin factorial*/
16- {
17- long int resul=1;
18- int i;
18- if(N==0)
19cout <<"el factorial de 0 es: 1";
20- else if(N==1)
21cout <<"el factorial de 1 es: 1";

152

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

22- else{
23for(i=1;i<=N;i++)
24resul=resul*i;
25cout <<"el factorial de " << N << " es: "<< resul;
26}
27- }
/*ver que la funcin factorial no devuelve ningn valor, (no se utiliza el return)*/
Observacin: ntese que se usan enteros largos, debido a los resultados que arroja un clculo del
factorial.

Ejercicio N 2:
Crear un cdigo fuente que permita al usuario ingresar un numero del 1 al 10 inclusive, y una vez
ingresado el numero se llame a una funcin denominada tabla que recibe el numero desde main y calculamuestra la tabla de multiplicar del numero ingresado.
Observaciones: cuando el usuario ingresa el numero se debe verificar que se encuentre dentro del
intervalo [1,10]; sino se debe pedir que se ingrese un nuevo valor.

Ejemplo N 3:
Escribir un programa que mediante una funcin menu permita seleccionar si desea calcular una serie
o salir del programa, cualquier otra tecla debe ser ignorada, y una vez mostrado el calculo de la serie se
vuelve a presentar el men al usuario.
La funcin serie toma como argumento dos enteros a y b, y un flotante base, de modo que permita
calcular el resultado de:
k= b

base k
k=a

El clculo es devuelto a main para su impresin en pantalla. (Para a=0, b=5 y base=1,23 la serie arroja
un resultado= )
1- #include<iostream>
2- #include<cmath>
3- using namespace std;
4- float serie(int a, float base, int b);
5- char menu (void);
678910-

//prototipos de las funciones

int main()
{
float resultado, base1;
int inferior, b;
char opcion;

11- opcion = menu();


12- while(opcion != 's')
13{
14cout << "ingrese el limite inferior de la sumatoria: ";
15cin >> inferior;
16cout << "ingrese el limite superior de la sumatoria: ";
17cin >> b;
18cout << "ingrese la base: ";
19cin >> base1;
20resultado = serie(inferior, base1, b);
21cout << "el calculo de la serie es: " << resultado << endl << endl;
22opcion = menu();

153

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

23}
24- cout << el programa ha finalizado;
25- return(0);
26- }
27- char menu (void) //definicin de la funcin menu.
28- {
29- char seleccion;
30- do{
31- cout << "Elija una opcion del menu:" << endl << c - Calcula la serie << endl << s
Salir;
32cin >> seleccion;
33}
while(seleccion != 's' && seleccion != 'c');
343536373839-

return (seleccion);
}
float serie(int a, float base, int b)
{
float sumatoria = 0;
int i;

//definicin de la funcin serie.

40- for(i=a; i<=b; i++)


41sumatoria = sumatoria + pow (base, -i)
42- return (sumatoria);
43- }

Ejercicio N 3:
Modificar el programa del ejemplo 3 para que la potencia se calcule utilizando multiplicaciones
sucesivas y NO utilizando la funcin pow().
Para ello dentro de la funcin serie() se deber llamar a una funcin adicional llamada potencia() que
se tiene que definir adecuadamente, calcule la potencia por multiplicaciones sucesivas y retorne el resultado
a serie() para computar la sumatoria.

Ejercicio N 4:
Realizar un programa que permita el ingreso de un nmero entero positivo N y pase como argumento
ese nmero a una funcin denominada serie. La funcin serie calcula el resultado de: N+(N1)++2+1. El resultado de la serie debe ser devuelto a main para su impresin en pantalla.

Ejercicio N 5:
Escribir un programa que posibilite el ingreso de dos nmeros enteros, X e Y, y calcule mediante una
funcin potencia, X elevado al numero Y. La funcin potencia realiza el calculo por multiplicaciones
sucesivas y retorna el valor del resultado.

Ejercicio N 6:
Realizar un programa que mediante un men permita llamar a dos funciones distintas, una llamada
potencia y otra denominada multiplicacin.
La funcin potencia no recibe ningn argumento y devuelve el valor de la potencia de dos nmeros (el
ingreso de los dos nmeros se hace dentro de la funcin potencia.)
La funcin multiplicacin recibe dos argumentos y no devuelve nada, mostrando el resultado antes de
salir de la funcin.
El men es otra funcin que no recibe nada y entrega el valor del men.

154

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 7:
Escribir el cdigo fuente de un programa que desde main se llame a una funcin pasando un
argumento, esta funcin calcula la serie de Fibonacci y retorna la suma de los trminos que son mostrado
desde main.

Ejercicio N 8:
Escribir el cdigo fuente de un programa que desde main se llame a una funcin men que no reciba
ningn argumento y que retorne la opcin de men elegida , esa se mostrar desde main. Los items del
men deberan ser por EJ. 1,2,3,4 para salir, o A,B, y F para Finalizar.-Controlar que solo se salga con la
opcin indicada.-

Ejercicio N 9:
Realizar un programa que mediante una funcin men permita llamar a 6 funciones distintas, una
llamada suma, resta, multiplicacin, divisin, potencia y raz cuadrada.
Al principio se ingresan por teclado 2 nmeros, en las variables A y B, luego se presenta un men y se
realizan la operacin elegida.
La funcin suma recibe como argumentos los 2 nmeros y devuelve el valor de la suma de los
A+B.
La funcin resta recibe como argumentos los 2 nmeros y devuelve el valor de la suma de los AB.
La funcin producto recibe como argumentos los 2 nmeros y devuelve el valor de la suma de
los A x B.
La funcin divisin recibe como argumentos los 2 nmeros y devuelve el valor del cociente de A
y B. Se debe chequear dentro de la funcin cuando B=0, en caso de serlo, se deber mostrar un
mensaje de error y abortar la operacin.
La funcin potencia recibe como argumentos los 2 nmeros y devuelve el valor de la potencia .
La funcin raz cuadrada recibe como argumentos un nmeros y devuelve el valor de . Se debe
chequear que B sea positivo para poder realizar la raz.
Observacin: tener en cuenta el tipo de variable que retornan las funciones, y en que casos no pueden
tomar valores nulos o negativos, por ejemplo: raz de un numero negativo, o una divisin por cero. Para la
raz se puede utilizar la funcin sqrt(), que se encuentra en la librera cmath.

4.11.6. GUA PRCTICA N 6 DE C++


Ejercicios Combinados usando Vectores, Matrices y Funciones
Antes de comenzar:
Los ejercicios se deben realizar en forma secuencial, de esta manera se adquiere la destreza
necesaria para realizar ejercicios que integran el manejo simultaneo de arreglos y funciones.

Ejercicio N 1:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numrico y
luego imprimirlos en el orden inverso al ingresado.

155

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 2:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numrico,
duplicar sus valores y luego imprimirlos en el orden ingresado.

Ejercicio N 3:
Cargar un vector con las alturas de los N alumnos de un curso. Determinar la media y luego informar
cuantos alumnos son mas altos que la media y cuantos mas bajos.

Ejercicio N 4:
Efectuar un algoritmo que permita el ingreso por teclado de los 30 elementos de un vector numrico y
luego imprimir:
La suma del contenido de los elementos.
La cantidad de elementos que sean mayores que 15.

Ejercicio N 5:
Realizar un algoritmo que vaya solicitando al usuario la posicin dentro del vector que desea cargar y
luego el valor a cargar. Deber indicar con un mensaje cuando ese elemento ya haya sido cargado y cuando
el vector est completamente cargado.

Ejercicio N 6:
Disear un algoritmo que cargue un vector A con 10 elementos numricos reales y con funciones
implementar las siguientes modificaciones:
Asignar el valor 11,2 a la tercer posicin del vector A.
Asignar el valor del elemento de la octava posicin del vector A en la segunda posicin.
Intercambiar el elemento de la cuarta posicin, con el de la novena posicin del vector A.

Ejercicio N 7:
Hacer un programa que permita realizar la suma y el producto (elemento a elemento) de dos vectores
de 10 elementos. El usuario elige la operacin a realizar y cada operacin se realiza mediante una Funcin.

Ejercicio N 8:
Dado un vector de N elementos mediante una funcin cargar y con otras dos realizar cada operacin las
siguientes bsquedas:
La cantidad de veces que se encuentra cada nmero dentro del Vector.
La cantidad de nmeros distintos.

Ejercicio N 9:
Dado dos vectores A y B de N y M componentes, llamar a una funcin que permita ingresar datos a
travs del teclado en dichos vectores, luego llamar una tercer funcin para que genere un nuevo vector que
contenga los componentes comunes de los dos anteriores e imprimirlo.

Ejercicio N 10:
En un colegio secundario, se maneja la informacin de las notas de un curso, con tres vectores de
longitud n, llamados trim1, trim2 y trim3. Los componentes de los vectores, son las notas del primero,
segundo y tercer trimestre respectivamente, para cada alumno. Generar un cuarto vector de nombre prom,
donde cada componente sea el promedio de los elementos homlogos de los tres vectores. Con una Funcin
llamada Mejor imprimir los tres mejores promedios del curso.

156

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 11:
Elaborar un programa en C que cargue nmeros enteros en dos matrices de 5 x 5. Llamar a una funcin
que calcule en una tercera matriz la suma de los elementos de las dos anteriores. Al final imprimir las tres
matrices.

Ejercicio N 12:
Escribir un programa que permita la carga de una matriz de orden NxM ( usar define), luego presenta un
men que llama a tres funciones:
Ordenar de menor a mayor la matriz por filas.
Ordenar de Mayor a menor la matriz por columnas.
Mostrar la matriz.

Ejercicio N 13:
Elaborar un algoritmo que lea nmeros enteros en una matriz cuadrada de 10 x 10 elementos.
Implementar las siguientes funciones:
Una que calcule la suma de los elementos de la diagonal Principal.
Una que cargue los elementos mayores de cada columna en un Vector.
Una que cargue los elementos menores de cada fila en un vector.
Una que almacene los promedios de cada fila en un vector.
Cada una de estas funciones debe ser llamadas mediante un men en el cual se selecciona la operacin
a realizar.

Ejercicio N 14:
En una matriz se tienen las 7 notas correspondientes a cada una de las asignaturas de los 30 alumnos
de un curso. Elaborar un algoritmo que calcule e imprima las notas y el promedio de cada alumno. Cada
alumno cursa como mnimo 3 materias y como mximo las 7.

Ejercicio N 15:
En una agencia de quiniela se tienen los valores de los nmeros ganadores y los premios de los mismos.
Escribir el Programa que determine cuales fueron las ocurrencias de cada nmero y que monto de dinero le
correspondi. Los datos estn cargados en una matriz de 365 filas y dos columnas, una fila para cada da y
en cada columna el nmero ganador y en la siguiente el monto del premio.

Ejercicio N 16:
Hacer un programa que permita mostrar por pantalla el siguiente men:
1. Factorial de un N F.
2. Divisin de dos nmeros A y B.
3. Salir.
El usuario debe poder ingresar la opcin que quiere realizar.
- SOLO podr Salir del programa si ingresa 3.
- Si elije 1 deber pedir al usuario que ingrese un nmero luego deber calcular el factorial y
mostrar el resultado. Debe tener en cuenta que: el nro. debe ser positivo (el programa deber
pedir que ingrese el nmero hasta que ingrese un nro. Positivo).
- Si elije 2 deber pedir al usuario que ingrese dos nmeros A y B y calcular A dividido B. Debe
tener en cuenta que: el nro. B debe ser diferente de cero (el programa deber pedir que ingrese
el nmero hasta que ingrese un nro. distinto de cero).
- Si ingresa cualquier otro nro. Deber informar ERROR y mostrar nuevamente el men. Cada
uno de los puntos 1,2 se debern realizar llamando a una funcin y pasndole los argumentos
necesarios, por ejemplo para factorial un entero y para Divisin dos flotantes ambas funciones
debern retornar el valor que resulte de la operacin.

157

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio N 17:
Definiendo una matriz Global llamada Mat de 3 x 3 , realizar el cdigo en c++ que permita llamar a la
funcin men la cual mostrar:
1. Carga de Matriz. (funcin carga, void , void).
2. Muestra fila ( funcin muestra, recibe int, retorna float)
3. Ordena fila ( funcin ordena , recibe int , retorna void)
4. Mayor que (funcin mayor que recibe un float y retorna un entero indicando cuantos valores de
la matriz son mayores que el flotante pasado.
F. Finaliza el programa.
En caso que se presione una tecla que no sea 1,2,3,4,F f se beber mostrar un cartel "Tecla no vlida"
y nuevamente volver al men.

Ejemplos:
Ejemplo N 1:
/*Este Ejercicio permite comprender la equivalencia entre los valores decimales de los dgitos en Cdigo
ASCII y el valor entero de un dgito*/
/*Utiliza la propiedad de que los dgitos en ASCII estn en forma correlativa '0'=48; '1'=49 ;..
'8'=56;'9'=57*/
# include <iostream>
using namespace std;
int numero(char); //Prototipo
int main()
{ char ingreso;
cin >> ingreso; //ingreso el carcter
switch(numero(ingreso)) //llamo a la funcin
{
case 0: cout<< " Ud ingreso el dgito CERO"; break;
case 1: cout<< " Ud ingreso el dgito UNO"; break;
case 2: cout<< " Ud ingreso el dgito DOS"; break;
case 3: cout<< " Ud ingreso el dgito TRES"; break;
case 4 : cout<< " Ud ingreso el dgito CUATRO"; break;
case 5: cout<< " Ud ingreso el dgito CINCO"; break;
case 6: cout<< " Ud ingreso el dgito SEIS"; break;
case 7: cout<< " Ud ingreso el dgito SIETE"; break;
case 8: cout<< " Ud ingreso el dgito OCHO"; break;
case 9: cout<< " Ud ingreso el dgito NUEVE"; break;
default : cout<<"Ud. no ingreso un dgito";
}
}
int numero(char N) //Definicin, recibo un char
{
int i;
for (i=0;i<=9;i++)
{
if(N==(i+48))return i; //retorno un entero
}}

158

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejemplo N 2:
Arreglo Multidimensional
/*Este ejercicio de c++, carga y muestra una matriz de 3 dimensiones por ejemplo ancho alto,
profundidad. Esto se podra extender a mas dimensiones */
#include<iostream>
#define X 3
#define Y 2
#define Z 2
using namespace std;
int main()
{
int i,j,k;
float matriz[X][Y][Z]; //Matriz de 3 Dimensiones
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
for(k=0;k<Z;k++)
{
cout<< " Ingrese el elemento"<<endl;
cout<<i<<"-"<<j<<"-"<<k<<" :";
cin>>matriz[i][j][k];
}
}
}
for(i=0;i<X;i++)
{
for(j=0;j<Y;j++)
{
for(k=0;k<Z;k++)
{
cout<<"el elemento :";
cout<<i<<"-"<<j<<"-"<<k<<" vale :"<< matriz[i][j][k]<<endl;
}
}
}
}

Ejemplo N 3:
Escribir el cdigo en C++ de una funcin main que llame a factorial pasando un entero como argumento
o parmetro y desde factorial se use la recursividad para calcular el factorial.

#include<iostream>
using namespace std;
int factorial(int); //PROTOTIPO
int main()
{
int num;

159

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

cout<<"Ingrese nro para calcular el factorial: "<<endl;


cin>> num;
cout << factorial(num);
}
int factorial(int n) //DEFINICION
{
if (n==1)return 1;
else return ( n * factorial (n-1));
}

Ejemplo N 4: Ejemplo con funciones combinadas


#include <iostream>
using namespace std;
#define N 3
//cantidad de filas
#define M 2
//cantidad de columnas
#define C 4
//cantidad de matrices
int Matriz[C][N][M]; //definicion de las matrices
///////prototipos de las funciones//////
void Carga(int);
void Muestra(int);
long long unsigned int Factorial(int m, int f, int c);
// long unsigned se utilizan para numeros grandes y sin
// signo, todos positivos!
void Suma(int, int );
char Menu();
////////////////////////////////////////
int main()
{
bool s=true;
// variale que permite la salida del while
bool esta_cargada[C];
// vector "BANDERA"
int c, y, z;
// variables que se usan

Carga

// ponemos el vector bandera en falso, es decir, ninguna matriz cargada!


for(int i=0;i<C;i++)
esta_cargada[i]=false;
///////////////////////////////////////////////////////////////////////
do{
switch(Menu()) //llamada a la funcion Menu. retorna un "char"
{
case 'a':
cout<<endl<<"Ingrese la matriz a cargar "<<endl;
cin>>c;
if(c<=C-1 && c>0)
// para saber si el valor ingresado es
// correcto y no cargar en un lugar no declarado
{
if(!esta_cargada[c-1])
{
// cargamos la matriz mediante funcion
// si esta no fue cargada an

160

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

// y ponemos su correspondiente bandera

en

// verdadero, asi no la volvemos a cargar.


Carga(c-1);
esta_cargada[c-1]=true;
}
else cout<<"Ya se cargo esta matriz";
}
else cout<<endl<<"No esta declarada esta Matriz";
break;
case 'f':

c<=C)

cout<<endl<<"Ingrese la matriz, fila y columna: "<<endl;


cin>>c>>y>>z;
if(esta_cargada[c-1] && y>0 && z>0 && c>0 && y<=N && z<=M &&
if (Factorial(c-1,y-1,z-1)>0)
{
// si factorial es mayor que 0 muestro el resultado:
// (ver funcin Factorial)

esta_cargada[y-1])

cout<<endl<<"El resultado de: "<<Matriz[c-1][y-1][z-1]


<<"! = "<<Factorial(c-1,y-1,z-1)<<endl;}
else cout<<endl<<"Error, numero negativo!";
else cout<<endl<<"Error, no se cargo dicho elemento";
break;
case 'm':
cout<<endl<<"Que matriz desea mostrar"<<endl;
cin>>c;
if(esta_cargada[c-1] && c>0 && c<=C) // si fue cargada y si
// esta definida esta matriz
Muestra(c-1); // llamada a la funcion Muestra
else cout<<endl<<"No se cargo esta matriz";
break;
case '+': /* Una vez qu*/
cout<<endl<<"Que matrices desea sumar"<<endl;
cin>>z>>y;
if(z>0 && y>0 && z<=N && y<=M && esta_cargada[z-1] &&
{

// En el if anterior se tiene en cuenta si estan declarada


// las matrices y si se cargaron.
Suma(z-1, y-1);
// llama la funcin suma la cual guardda el resultado en Matriz[C-1]
// (ver funcion Suma)
esta_cargada[C-1]=true; // pone bandera en verdadero
}
else cout<<endl<<"Al menos una de las matices no se carg";
break;
case 'S':
// Salir es con S y no con s !!!
s=false;
cin.get();
// toma el Enter anterior
cout<<endl<<"Saliendo..."<<endl<<"presione Enter";
cin.get();
// pide un Enter para salir

161

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

break;
default :
// uso el default para las opciones incorrectas
cout<<endl<<"Error, Opcion Incorrecta";
}
}while(s);// sale si s=falso
return 0;
}
///////// Cuerpos de las Funciones//////////////
char Menu() // No recibe argumento pero si retorna, del tipo char
{
char seleccion; //debe ser del mismo tipo que la funcin
cout<<endl<<endl<<" - * - * - Menu - * - * -";
cout<<endl<<"a- Cargar una Matriz";
cout<<endl<<"f- Sacar el factorial de un elemento";
cout<<endl<<"m- Mostrar una Matriz";
cout<<endl<<"+- Sumar las matrices";
cout<<endl<<"S- Salir";
cout<<endl;
cin>>seleccion;
return seleccion;
//retorna dicho valor
}
void Carga(int a)
// recibe "a" como argumento pero no retorna valores
{
cout<<endl<<"Cargue la Matriz: "<<a+1<<endl<<"Cargue la componente: "<<endl;
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
{
cout<<endl<<i+1<<j+1<<" "; // muestro la componente a cargar;
cin>>Matriz[a][i][j];
// Cargo...
}
}
void Muestra(int a) // No retorna y si recibe. Quiere saber que matriz tiene que mostrar
{
cout<<endl<<"La Matriz: "<<a+1<<" es: "<<endl;
for(int i=0;i<N;i++)
{
for(int j=0;j<M;j++)
{
cout<<"\t"/* hace un tab */<<Matriz[a][i][j];
}
cout<<endl; // salto de linea para cada fila
}
}
long long unsigned int Factorial(int m, int f, int c)
{ // Recibe como argumento, la Matiz, la fila y la columna.
// devuelve el factorial si calcula o cero si no puede calcular
if(Matriz[m][f][c]>=0)

162

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

{long long unsigned int r=1;// es del "tipo" de la funcin


for(int i=1;i<=Matriz[m][f][c];i++)
r=r*i;
return r;
}
else return 0;
}
void Suma(int a, int b)
{
for(int i=0;i<N;i++)
for(int j=0;j<M;j++)
Matriz[C-1][i][j]=Matriz[a][i][j]+Matriz [b][i][j];
Muestra(C-1); // Llamada a la funcin Muestra dentro de otra funcin
}
/* Una vez que haya probado con los valores definidos N M y C, intente
modificarlos y ver como responde el programa */

4.11.7. Ejercicios Integradores


Ejercicio 1:
Se ingresarn 20 valores por teclado, se debern guardar de esos 20 solo aquellos valores que no se
encuentren entre 10 y 20 incluidos. Luego el programa deber presentar un men llamando a la funcin
"menu" que mostrar:
a- Calcular y mostrar el Mayor.
b- Calcular y mostrar el Menor.
c- Mostrar el valor de una posicin.
d- Mostrar los valores cargados.
F- Finalizar.
Cada uno de los puntos a, b, c, d, se debern realizar llamando a un funcin (mayor, menor, posicin
y mostrar). Solo se deber finalizar el programa si se presiona la Letra o F f. En caso que se presione una
tecla que no sea a, b, c, d, F f se beber mostrar un cartel "Tecla no vlida" y nuevamente volver al men.

Ejercicio 2:
Modificar el programa anterior de manera que la funcin invocada en el punto c reciba como
argumento un entero indicando el numero de posicin o indice y dentro de esta funcin se muestra el valor
de la posicin y se retorna true, en caso de que el indice o posicin no corresponde (el valor es mayor que la
dimensin o negativo) con los del vector deber retornar false y mostrar el cartel desde main. Es decir que
la funcin posicin retorne una variable booleanabool.

Ejercicio 3:
Escribir un cdigo que permita el ingreso de 2 valores flotantes, luego desde main se llame a una
funcin llamada enteros pasando como argumento estos flotantes y en ella se deber mostrar todos los
enteros comprendidos entre los dos flotantes pasados como parmetros. La funcin enteros no retorna
nada.

Ejercicio 4:
Escribir el cdigo en C++ de un programa que desde main llame a una funcin promedio, la cual recibe
cinco escalares y retorna el promedio que es mostrado desde main.

163

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio 5:
Realizar una funcin que reciba como parmetro dos nmeros enteros X e Y, la funcin retornara si el
numero X es mltiplo de Y. Para ello utilizar la funcin modulo (operador % ). Tambin debe incluir una
segunda funcin en la cual se ingrese un numero entero N, y calcule todos los mltiplos de N en el intervalo
[1 100]. La seleccin se debe realizar por medio de un men.

Ejercicio 6:
Escribir un cdigo en C++ de desde main se pase a una funcin llamada tecla la cual recibe el valor de
una tecla presionada, esta funcin tecla deber mostrar letra, numero o smbolo segn corresponda a
la tecla presionada, y retornar true si es letra o numero y false si es smbolo.

Ejercicio 7:
Definir un string como variable global y desde main llamar a la funcin contar, la cual recibe como
argumento un carcter que contar cuantas veces se repite en el string global, desde esta funcin se
muestra la cantidad y se retorna a main la dimensin del string, la cual es mostrada en main.

Ejercicio 8:
Para que un tren complete el recorrido entre dos localidades, la locomotora debe ejercer una fuerza
variable con la posicin, que responde a la siguiente funcin:

F = - 0,0035 x2 + 18 x + 10000
En un grfico Fuerza en funcin de la posicin, el trabajo es el rea bajo la curva.
Se puede aproximar dicha rea dividiendo el espacio de inters en intervalos iguales y suponiendo que
cada uno es un rectngulo de altura igual al valor de la funcin al comienzo del segmento y de ancho igual a
la longitud del intervalo (aproximacin de orden 0). Cuanto menor sea la longitud del intervalo, mayor sera
la exactitud de la aproximacin.

Realizar un programa en C++ para determinar el trabajo realizado por la locomotora, para ir desde la
localidad 1 hasta la localidad 2 a 5000m de distancia, utilizando una aproximacin de orden 0. Analizar la
influencia de la longitud del intervalo. Probar con intervalos de 500m y de 100m.

164

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Implementar una funcin que evale el valor de la fuerza para una posicin dada y otra funcin que
vaya sumando las sucesivas reas.
Comparar los resultados.
Ejercicio Resuelto

//Programa que calcula el trabajo realizado por una fuerza, de funcin conocida,
//aproximando el rea bajo la curva mediante interpolacin de orden 0.
#include <iostream>
using namespace std;
float aproximacion_orden_0 (float inicio, float fin, float incremento); //funcin que calcula el rea
bajo la curva
float fuerza_en_posicion (float posicion); // funcin que evala la funcin en la posicin dada.
int main()
{
float trabajo;
trabajo= aproximacion_orden_0(0,5000,10);
cout<<"El trabajo realizado por la Fuerza desde los 0m hasta los 5000m es de "<<trabajo<<"
Joules";
return(0);
}
float aproximacion_orden_0 (float inicio, float fin, float incremento)
{ float area_orden_0 = 0;
for (float posicion=inicio; posicion< fin; posicion=posicion + incremento)
{
area_orden_0 = area_orden_0 + fuerza_en_posicion(posicion)*incremento;
}
return (area_orden_0);
}
float fuerza_en_posicion (float posicion)
{
float fuerza;
fuerza=-0.0035*posicion*posicion+18*posicion+10000;
//Fuerza en funcin de la posicin F= -0,0035x^2 + 18x + 10000
return(fuerza);
}

Ejercicio 9:
Realizar un programa que permita mostrar por pantalla el siguiente men HASTA que el usuario ingrese
S para salir del programa. Si el usuario ingresa una opcin diferente a las que aparecen en el men deber
mostrar ERROR. Opcin Incorrecta. El men es el siguiente:

MENU DE OPCIONES
A Cargar una tabla de multiplicar
B Buscar un nmero en el vector
C- Sumar nmeros
S SALIR

165

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

El usuario deber ingresar por teclado la opcin (OPC) a ejecutar y luego llamar a la funcin
correspondiente. Hay como variable global V1 un vector de 10 elementos.
a) Si el usuario elige la opcin A Mostrar una tabla de multiplicar deber pedir que se ingrese un
nmero (N1) del que quiere calcular la tabla. N1 debe estar entre 1 y 10. Luego llamar a la funcin TABLA
que deber cargar la tabla del nmero N1 en el vector V1
O sea que, la funcin TABLA recibe como argumento N1 y no devuelve nada a main().
b) Si el usuario elige la opcin B - Buscar un nmero en el vector deber pedir que se ingrese un numero
N2 y se llamar a la funcin BUSCA deber buscar el nmero en el vector V1. Si existe deber retornar 1 a
main() o 0 si no existe. Cuando devuelve a main deber mostrar all el resultado.
c) Si el usuario elige la opcin D Sumar nmeros deber llamar a la funcin SUMA que calcular la
suma de los nmeros del vector, por ltimo devolver a main el acumulado (S2) y desde all se mostrar por
pantalla.
O sea que, la funcin SUMA no recibe argumentos y devuelve S2 a main().

Ejercicio 10:
Realizar un programa que permita mostrar por pantalla el siguiente men HASTA que el usuario ingrese
S para salir del programa. Si el usuario ingresa una opcin diferente a las que aparecen en el men deber
mostrar ERROR. Opcin Incorrecta. El men es el siguiente:

MENU DE OPCIONES
A Mostrar una tabla de multiplicar
B Generar una serie de nmeros
C Calcular el Factorial de un nmero
D Sumar nmeros
E - Calcular la potencia
S SALIR
El usuario deber ingresar por teclado la opcin (OPC) a ejecutar y luego llamar a la funcin
correspondiente.
a) Si el usuario elige la opcin A Mostrar una tabla de multiplicar deber pedir que se ingrese un
nmero (N1) del que quiere calcular la tabla. N1 debe estar entre 1 y 10. Luego llamar a la funcin TABLA
que deber mostrar la tabla del nmero N1.
O sea que, la funcin TABLA recibe como argumento N1 y no devuelve nada a main().
b) Si el usuario elige la opcin B Generar una serie de nmeros deber llamar a la funcin SERIE, sta
pedir que se ingrese un nmero N2. N2 deber estar entre 1 y 30. N2 indicar la cantidad de trminos a
calcular y sumar de la siguiente serie:
S = 1 - 1/3 + 1/9 - 1/27 + 1/81 - .
La funcin SERIE no recibe nada de main pero deber devolver a main el valor de S y main mostrar el
resultado por pantalla.
O sea que, la funcin SERIE no recibe argumentos y devuelve S a main().
c) Si el usuario elige la opcin C Calcular el Factorial de un nmero deber llamar a la funcin
FACTORIAL. La funcin pedir que se ingrese un nmero (N3), deber calcular el factorial de N3 y mostrar
el resultado por pantalla. Tener en cuenta los casos particulares.
O sea que, la funcin FACTORIAL no recibe argumentos ni devuelve nada a main().

166

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

d) Si el usuario elige la opcin D Sumar nmeros deber ingresar un nmero positivo (N4) y llamar a
la funcin SUMA que calcular la suma de los nmeros ingresados mientras que el acumulado no supere N4;
por ltimo devolver a main el acumulado (S2) y desde all se mostrar por pantalla.
O sea que, la funcin SUMA recibe como argumento a N4 y devuelve S2 a main().
e) Si el usuario elige la opcin E Calcular la potencia deber ingresar dos valores X e Y, con estos
datos llamar a la funcin POTENCIA que calcular XY utilizando la funcin pow() y devolver el resultado
(P) a main donde se mostrar por pantalla.
O sea que, la funcin POTENCIA recibe como argumentos a X y a Y, y devuelve P a main().

Ejercicio 11:
Realizar un programa que permita llamar a una funcin MENU que deber mostrar por pantalla el
siguiente men. El men es el siguiente:

MENU DE OPCIONES
1 Cargar un vector
2 Cargar una matriz
3 Buscar un nmero en la matriz
4 Ordenar la matriz
5 Buscar el mayor en el vector.
6 SALIR
El usuario deber ingresar por teclado la opcin (OPC) a ejecutar y devolver el valor de OPC a main.
O sea que, la funcin MENU no recibe argumento pero devuelve a main OPC.
El programa se ejecutar HASTA que el usuario ingrese 6 para salir del programa. Si el usuario ingresa
una opcin diferente a las que aparecen en el men deber mostrar ERROR. Opcin Incorrecta
Luego main llamar a la funcin correspondiente.
a) Si el usuario elige la opcin 1 Cargar un vector deber llamar a la funcin CARGAV que deber
permitir cargar el vector V.
O sea que, la funcin CARGAV no recibe argumentos y no devuelve nada a main().
b) Si el usuario elige la opcin 2 Cargar una matriz deber preguntar al usuario cmo quiere cargar la
matriz (CA). El usuario podr ingresar F si quiere cargar la matriz por filas o C si quiere cargar la matriz
por columnas. Luego deber llamar a la funcin CARGAM que deber permitir cargar la matriz M por filas o
columnas segn haya pedido el usuario.
O sea que, la funcin CARGAM recibe como argumento CA y no devuelve nada a main().
c) Si el usuario elige la opcin 3 Buscar un nmero en la matriz deber permitir al usuario ingresar un
nmero N1 y luego llamar a la funcin BUSCA que deber buscar si el nmero N1 se encuentra en la matriz
M. Si lo encuentra deber informarlo, adems de mostrar en qu fila y columna se encuentra. Si no lo
encuentra deber mostrar un mensaje NO Encontrado.
O sea que, la funcin BUSCA recibe como argumento N1 y no devuelve nada a main().
DEBE CONTROLAR QUE para poder realizar la opcin 3, la matriz deber estar cargada.
d) Si el usuario elige la opcin 4 Ordenar la matriz deber llamar a la funcin ORDEN que ordenar la
matriz por columnas, luego retornar a main y desde all se llamar a la funcin MUESTRAM que mostrar la
matriz ordenada.
O sea que, la funcin ORDEN no recibe argumentos y no devuelve nada a main().
DEBE CONTROLAR QUE para poder realizar la opcin 4, la matriz deber estar cargada.

167

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

e) Si el usuario elige la opcin 5 Buscar el mayor en el vector deber llamar a la funcin MAYOR que
deber buscar el mayor nmero ingresado (MAX) en el vector, pero no deber modificarlo. Retornar a main
el valor de MAX.
O sea que, la funcin MAYOR no recibe argumentos y devuelve MAX a main().
DEBE CONTROLAR QUE para poder realizar la opcin 5, el vector deber estar cargado.
NOTA:
la matriz y el vector deben declararse como variables globales. La matriz deber ser de 4 x 5 y el vector
de 8 elementos.

Ejercicio 12:
Funcin main
Main mostrar un menu como el siguiente:

1- Contar la cantidad de veces que un caracter aparece en un string.


2- Calcular la Serie.
S Salir.
El usuario podr ingresar solamente las opciones indicadas (1,2,S). En caso de presionar cualquier otra
tecla deber mostrar el error por pantalla: "Opcin NO VALIDA", y volver a mostrar el men.
Segn la tecla presionada, se deber llamar a la funcin correspondiente o finalizar el programa.
Si el usuario elige 1, en Main se debern pedir el carcter que pasar como parmetro a Mensaje.
Si el usuario elige 2, en Main se debern pedir los parmetros necesarios para llamar a la funcin serie
(X y n), y deber verificar que los argumentos pasados sean vlidos ( n > 0 ).
Main llamar a mensaje pasando el argumento necesario (carcter) y mostrar "ENCONTRO" si la
funcin devolvi VERDADERO o "NO ENCONTRO" si la funcin devolvi FALSO.

Funcin mensaje
Se define en esta funcin un string llamado mensa que contiene el siguiente texto: "Si pensas que tu
profesor es jodido, espera a que tengas un jefe!!".
Esta funcin recibe un carcter como argumento. El cdigo deber contar la cantidad de ocurrencias de
este carcter en el string (mensa). Si el caracter no existe en el string deber retornar FALSE, en caso
contrario muestra la cantidad de veces que se encuentra y retorna a main con TRUE. Este valor booleano
retornado se usar para mostrar desde main ENCONTR o NO ENCONTRO.

Funcin Serie
Esta funcin recibe como argumento dos valores, un entero positivo n mayor que cero y un nmero X,
luego calcula y muestra:

S = -X+ (X2 )/2 - (X3 )/3+(X4 )/4- ......... (- X)n/n


Para el clculo de las potencias de X dentro de esta funcin, se deber llamar a otra funcin llamada
Potencia. Esta funcin Potencia solo deber calcular la potencia de X para cada valor de n, o sea que
Potencia recibir dos argumentos (n y X) y devolver el resultado a la funcin Serie.
Por ejemplo:
si Potencia recibe (1, -7) , calcula
si Potencia recibe (2, -7) , calcula
si Potencia recibe (3, -7) , calcula
si Potencia recibe (4, -7) , calcula
....
Y as sucesivamente hasta n

-71
-72
-73
-74

168

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

Ejercicio 13:
Realizar un programa que permita llamar a una funcin MENU que deber mostrar por pantalla el
siguiente men.

MENU DE OPCIONES
1 Cargar una matriz
2 Buscar un nmero en la matriz
3 Intercambiar dos columnas de la matriz.
4SALIR
El usuario deber ingresar por teclado la opcin (OPC) a ejecutar y devolver el valor de OPC a main. O
sea que, la funcin MENU no recibe argumento pero devuelve a main OPC.
El programa se ejecutar HASTA que el usuario ingrese 4 para salir del programa. Si el usuario ingresa
una opcin diferente a las que aparecen en el men deber mostrar ERROR. Opcin Incorrecta
Luego main llamar a la funcin correspondiente.
Si el usuario elige la opcin 1 Cargar una matriz deber preguntar al usuario cmo quiere cargar la
matriz (CA). El usuario podr ingresar F si quiere cargar la matriz por filas o C si quiere cargar la matriz
por columnas. Luego deber llamar a la funcin CARGAM que deber permitir cargar la matriz M por filas o
columnas segn haya pedido el usuario. O sea que, la funcin CARGAM recibe como argumento CA y no
devuelve nada a main().
2 Buscar un nmero en la matriz deber permitir al usuario ingresar
un nmero N1 y luego llamar a la funcin BUSCA que deber buscar si el nmero N1 se encuentra en la
matriz M. Si lo encuentra deber retornar E a main. Si no lo encuentra deber retornar N y desde main se
deber imprimir Encontrado o No encontrado segn corresponda. O sea que, la funcin BUSCA recibe
como argumento N1 y devuelve un carcter a main(). DEBE CONTROLAR QUE para poder realizar la opcin
2, la matriz deber estar cargada.
3 Intercambiar dos columnas de la matriz deber permitir al usuario
ingresar los nmeros C1 y C2 los cuales se debern validar y luego llamar a la funcin CAMBIO que deber
intercambiar las columnas especificadas y luego imprimir la matriz. O sea que, la funcin CAMBIO recibe
como argumento C1 y C2 y no devuelve nada a main(). DEBE CONTROLAR QUE para poder realizar la
opcin 3, la matriz deber estar cargada.

1. #include <iostream>
2. #define M 3
3. #define N 4
4. using namespace std;
5. int mat [M] [N];
6. int menu();
7. void cargam(char ca);
8. char busca(int n1);
9. void cambio(int c1, int c2);
10. int main()
11. {
12. int opc, n1, c1, c2, band=0;
13. char ca, res;
14. do{
15.
opc=menu();
16.
switch (opc){
17.
case 1: do{
18.
cout <<endl<<Elija como desea cargar la matriz: F o C;
19.
cin >> ca;
20.
}while(ca!= F && ca!=C);

169

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

21.
cargam(ca);
22.
band=1;
23.
break;
24.
case 2: if (band == 1){
25.
cout<< endl<<ingrese el numero a buscar en la matriz ;
26.
cin>> n1;
27.
res=busca(n1);
28.
if(res==E) cout<<endl<<Encontrado;
29.
else cout<<endl<<No encontrado;}
30.
else
cout<<endl<<La matriz no esta cargada;
31.
break;
32.
case 3: if (band == 1){
33.
do{
34.
cout<<endl<<Ingrese un nro entre 0 y 3 para c1 ;
35.
cin >> c1;
36.
cout<<endl<<Ingrese un nro entre 0 y 3 para c2 ;
37.
cin >> c2;
38.
}while((c1 <0 || c1>3) || (c2<0 || c2>3));
39.
cambio(c1, c2);
40.
}
41.
else
cout<<endl<<la matriz no esta cargada;
42.
break;
43.
case 4: cout<< Saliendopresione una tecla para continuar;
44.
break;
45.
default: cout<<endl<<ERROR. Opcin incorrecta
46.
}
47. }while (opc != 4);
48. return 0;
49. }
50. int menu()
51. {
52. int opc;
53. cout<< endl<<MENU DE OPCIONES<<endl <<1 Cargar una matriz<<endl<<2 Buscar un
nmero en la matriz<<endl<<3 Intercambiar dos columnas de la matriz. <<endl <<4 SALIR;
54. cin>>opc ;
55. return opc;
56. }
57. void cargam(char ca)
58. {
59. int i, j;
60. if (ca == F) {
61. for(i=0; i<M; i++)
62. {
63. for(j=0; j<N; j++) {
64. cout<<endl<<Ingrese el elemento <<i <<j <<: ;
65. cin>>mat[i][j]; }
66. }
67. }
68. else { for(j=0; j<N; j++)

170

TALLER DE INFORMTICA

CAPITULO 4. Lenguajes de Programacin

69. {
70. for(i=0; i<M; i++) {
71. cout<<endl<<Ingrese el elemento <<i <<j <<: ;
72. cin>>mat[i][j]; }
73. }
74. }
75. }
76. char busca(int n1)
77. {
78. int i,j;
79. char enc =N;
80. for(i=0; i<M; i++)
81. {
82. for(j=0; j<N; j++) {
83. If(mat[i][j] == n1)
84. enc = E; }
85. }
86. return enc;
87. }
88. void cambio(int c1, int c2)
89. {
90. int aux, i, j;
91. for(i=0; i<M; i++)
92. {
93. aux= mat[i][c1];
94. mat[i][c1]= mat[i][c2];
95. mat[i][c2]= aux;
96. }
93. for(i=0; i<M; i++)
94. {
95. for(j=0; j<N; j++) {
96. cout<<mat[i][j]<<\t; }
97. cout<<endl;
98. }
84. }

171

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

CAPITULO 5.
SISTEMAS OPERATIVOS
En el Captulo 1, cuando se presenta la definicin y clasificacin de Software se sostena que: Software
es el conjunto de instrucciones detalladas que controlan la operacin de un sistema de cmputos y existen
tres tipos principales de software:
Software de Sistema: es un conjunto de programas generalizados que administran los
recursos de la computadora, como la CPU, los dispositivos de comunicaciones y los perifricos.
Software de Aplicaciones: programas escritos para una aplicacin especfica de negocios con
el objeto de realizar funciones especficas por los usuarios finales.
Software de Usuario Final: Es un tipo especial de aplicacin que consiste en herramientas de
software que permiten el desarrollo de aplicaciones por los usuarios finales con muy poca o nula
intervencin de programadores profesionales.
Dentro del Software de Sistema estaran los Sistemas Operativos SO, estos programas realizan tareas
bsicas, tales como reconocimiento de la conexin del teclado, enviar la informacin a la pantalla, no perder
de vista archivos y directorios en el disco, y controlar los dispositivos perifricos tales como impresoras,
escner, etc.

5.1. DEFINICIONES
5.1.1. Software de sistemas
Coordina las diferentes partes del sistema de cmputos y sirve como mediacin entre el software de
aplicacin y el hardware.
Consta de:
* Sistema operativo

Programa sucesos de cmputo

Asigna recursos de cmputo

Hace seguimientos de eventos


* Traductores de Lenguaje
Intrpretes
Compiladores
* Programas de Utilera

Operaciones rutinarias (sort, print, etc)

Administracin de datos (crea, fusiona archivos)

5.1.2. Sistema Operativo


Es el software del sistema que administra y controla las actividades y recursos de la computadora. Es el
administrador del sistema. Decide qu recursos de la computadora habrn de ser usados, qu programas se
ejecutarn y el orden en que ocurrirn las actividades.

5.1.2.1. Funciones del Sistema Operativo


a- Define y asigna los recursos del sistema
b- Programa el uso de los recursos y trabajos de cmputos
c- Realiza el seguimiento de las actividades del sistema de cmputos

172

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

a) Definicin y asignacin de los recursos del sistema


El SO asigna recursos a los trabajos que se encuentran en la cola de ejecucin.
Proporciona ubicaciones en la memoria primaria para los datos y los programas y controla los
dispositivos de entrada y salida.
b) Programacin del uso de los recursos y trabajos
El SO decide cundo programar los trabajos que se presentan y cundo coordinar la
programacin de las distintas reas de la computadora, de manera que partes diferentes de los
trabajos puedan ser procesadas al mismo tiempo.
No todos los trabajos son realizados en el orden en que se presentan. El SO debe programarlos
de acuerdo al orden de prioridades.
c) Seguimiento de las actividades del sist. de cmputos
El SO debe realizar un seguimiento de las actividades realizadas, de quin usa el sistema, qu
programas se han ejecutado, y dar cuenta de cualquier intento no autorizado de utilizar el
sistema.

5.1.2.2. Capacidades especiales del SO


a) Multiprogramacin
Es la capacidad ms importante del SO para compartir recursos de la computadora.
Es un mtodo para ejecutar dos o ms programas empleando la misma computadora. El CPU
solo ejecuta un programa, pero puede dar servicio a las necesidades de entrada y salida de
otros al mismo tiempo.
Dos o ms programas estn activos al mismo tiempo, pero no usan los mismos recursos de la
computadora simultneamente.
Varios programas se cargan en memoria principal, este aspecto mejora la administracin de la
memoria y de los dispositivos de E/S.
b) Multitarea
Es la multiprogramacin en los sistemas operativos individuales, para microcomputadoras.
Una persona puede ejecutar ms de un programa de manera concurrente en una computadora.
Por ejemplo, imprimir y escribir un texto en el procesador.
c) Almacenamiento Virtual
Maneja los programas de manera ms eficiente al dividirlos en pequeas porciones de longitud
fija o variable, almacenando solo una pequea parte del programa en la memoria principal a la
vez. El resto se almacena en disco hasta que se necesita.
Solo unas cuantas instrucciones se ejecutan en realidad en cualquier momento dado.
El almacenamiento virtual divide el programa en un nmero de porciones de longitud fija llamadas
pginas, o porciones de longitud variable llamadas segmentos.
Cada una de estas porciones es pequeo (2 a 4 Kb), esto permite que un gran nro. de programas
residan en memoria principal.
d) Tiempo compartido
Permite compartir simultneamente los recursos de la computadora entre muchos usuarios al
asignar un periodo de tiempo muy pequeo (2 miliseg.) a cada usuario. En este lapso el usuario
puede utilizar libremente para realizar cualquier operacin.
En la Multiprogramacin era hacer que la CPU emplee una cantidad fija de tiempo para cada
programa, ac es para cada usuario.
e) Multiproceso

El SO es capaz de unir dos o ms CPU para que trabajen en paralelo en un solo sistema de
cmputos, el cual puede asignar mltiples CPU para mltiples instrucciones de un mismo
programa o de diferentes programas en forma simultnea.

173

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.1.3. Traduccin de lenguajes


El Software de Sistema incluye programas especiales de traduccin de lenguajes que traducen
programas escritos en un Lenguaje de programacin de alto nivel (BASIC, C) a un lenguaje de mquina que
sta pueda ejecutar. Estos programas se llaman compilador o intrpretes

Proceso:
a) El programa escrito en el lenguaje de alto nivel se llama cdigo fuente
b) El compilador traduce el cdigo fuente a cdigo de mquina llamado cdigo objeto
c) Los diferentes mdulos de cdigo objetos se juntan en un proceso llamado edicin de liga (linkage
editing). El mdulo de carga resultante es el cdigo a ejecutar por la computadora.
Algunos lenguajes de programacin (BASIC) no usan un compilador sino un intrprete que traduce cada
instruccin en cdigo fuente, en cdigo de mquina y la ejecuta. Es ms lento porque traduce de a una
instruccin por vez.

5.1.4. Programas de Utilera


En el software de sistema se incluyen programas de utilera para rutinas, tareas repetitivas como copiar,
limpiar la memoria, formatear un disco, eliminar archivos, crear un texto.
Son programas escritos previamente que se almacenan para que puedan ser compartidos por todos los
usuarios de un sistema de cmputos.

5.1.5. Sistemas Operativos para Microcomputadoras


En el software de sistema se incluyen programas de utilera para rutinas, tareas repetitivas como copiar,
limpiar la memoria, formatear un disco, eliminar archivos, crear un texto.
Son programas escritos previamente que se almacenan para que puedan ser compartidos por todos los
usuarios de un sistema de cmputos.

5.1.6. Historia de los Sistemas Operativos


Los Sistemas Operativos han sufrido una serie de cambios revolucionarios llamados generaciones.
Generacin Cero (dcada de 1940)
Los primeros sistemas computacionales no posean sistemas operativos. Los usuarios tenan completo
acceso al lenguaje de la maquina. Todas las instrucciones eran codificadas a mano.
Primera Generacin (dcada de 1950)
Los sistemas operativos de los aos cincuenta fueron diseados para hacer mas fluida la transicin entre
trabajos.
Este fue el comienzo de los sistemas de procesamiento por lotes, donde los trabajos se reunan por
grupos o lotes.
El laboratorio de investigacin General Motors implement el primer sistema operativo para la IBM 701.
Los sistemas de los 50's generalmente ejecutaban una sola tarea.
Segunda Generacin (a mitad de la dcada de 1960)

174

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

La caracterstica de los SO fue el desarrollo de los sistemas compartidos con multiprogramacin, y los
principios del multiprocesamiento.
Se desarrollaron sistemas compartidos, en la que los usuarios podan acoplarse directamente con el
computador a travs de terminales. Surgieron sistemas de tiempo real, en que los computadores fueron
utilizados en el control de procesos industriales.
Tercera Generacin (mitad de dcada 60 a mitad dcada de 70)
Los computadores de esta generacin fueron diseados como sistemas para usos generales. Casi
siempre eran sistemas grandes, voluminosos, con el propsito de serlo todo para toda la gente. Eran
sistemas de modos mltiples, algunos de ellos soportaban simultneamente procesos por lotes, tiempo
compartido, procesamiento de tiempo real y multiprocesamiento. Eran grandes y costosos.
Introdujeron mayor complejidad a los ambientes computacionales.
Cuarta Generacin (mitad de dcada de 1970 en adelante)
Con la ampliacin del uso de redes de computadores los usuarios obtienen acceso a computadores
alejados geogrficamente a travs de terminales
Los sistemas de seguridad se ha incrementado mucho ahora que la informacin pasa a travs de varios
tipos vulnerables de lneas de comunicacin. La clave de cifrado esta recibiendo mucha atencin.
El porcentaje de la poblacin que tiene acceso a un computador en la dcada de los ochenta es mucho
mayor y aumenta rpidamente.
El concepto de maquinas virtuales es utilizado. El usuario ya no se encuentra interesado en los detalles
fsicos del sistema de computacin que esta siendo accedida. En su lugar, el usuario ve un panorama
llamado maquina virtual creado por el sistema operativo.
Los sistemas de bases de datos han adquirido gran importancia. Nuestro mundo es una sociedad
orientada hacia la informacin, y el trabajo de las bases de datos es hacer que esta informacin sea
conveniente accesible de una manera controlada para aquellos que tienen derechos de acceso.

5.1.7. Tipos de Interfaz con el usuario


5.1.7.1. Interfaz de Lnea de Comandos
La forma de interfaz entre el sistema operativo y el usuario en la que el usuario escribe los comandos
utilizando un lenguaje de comandos especial.
Los sistemas con interfaces de lneas de comandos se consideran ms difciles de aprender y utilizar que
los de las interfaces grficas. Sin embargo, los sistemas basados en comandos son por lo general
programables, lo que les otorga una flexibilidad que no tienen los sistemas basados en grficos carentes de
una interfaz de programacin.

5.1.7.2. Interfaz Grfica del Usuario


Es el tipo de visualizacin que permite al usuario elegir comandos, iniciar programas y ver listas de
archivos y otras opciones utilizando las representaciones visuales (iconos) y las listas de elementos del
men. Las selecciones pueden activarse bien a travs del teclado o con el mouse.
Permite a los programadores crear programas que realicen de la misma forma las tareas ms frecuentes,
como guardar un archivo, porque la interfaz proporciona mecanismos estndar de control como ventanas y
cuadros de dilogo.
Las aplicaciones escritas para una interfaz grfica de usuario son independientes de los dispositivos

5.1.8. Sistemas operativos actuales


En la actualidad existen varios sistemas operativos para diferentes necesidades y tipos de computadoras:

175

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

MS-DOS (Disk Operating System) Sistema operativo para microcomputadoras de 16 bits. So


monotareas, entorno de texto. Limita el tamao de programas en memoria a 640 K.
OS/2 WARP Diseado por IBM es el competidor ms cercano de MS-DOS sobre todo por sus grandes
capacidades de interconexin de equipos y facilidad de uso bajo ambiente grfico.
Netware diseado por Novell, lder mundial en SO para redes de computadoras por el poder y
versatilidad de sus funciones, as como su extremada capacidad de interconectar computadoras y recursos
de tan variadas capacidades y marcas.
Unix: Sistema operativo de alto rendimiento utilizado actualmente en grandes proyectos y para
necesidades de intercomunicacin a nivel internacional y de gran volumen de operaciones diarias.
Linux: es un sistema operativo multiusuario, multitarea y de distribucin gratuita a travs de la licencia
GNU. La licencia GNU es un diseo de la Free Software Fundation, promueve la distribucin abierta y el
desarrollo abierto de los programas. El software con licencia GNU tiene que distribuirse junto con el cdigo
fuente, a diferencia del software comercial que no incluye dicho cdigo y por lo tanto es inalterable.
Microsoft Windows 95, 98, etc. Es un entorno multitarea dotado de una interfaz grfica de usuario,
no necesita del MS-DOS para ser ejecutado, ya que es un sistema operativo.
Est basado en mens desplegables, ventanas en pantalla y el mouse.
Los nombres de los archivos pueden tener hasta 256 caracteres para tener una descripcin completa del
contenido del archivo.
Posee Plug and Play, una tecnologa con la cual un usuario puede fcilmente instalar o conectar
dispositivos permitiendo al sistema automticamente alojar los recursos del hardware sin la intervencin de
usuario.
Microsoft Windows NT: Microsoft no solo se ha dedicado a escribir software para PCs de escritorio
sino tambin para poderosas estaciones de trabajo y servidores de red y bases de datos. Es un SO para
redes que brinda poder, velocidad. Es un SO de 32 bits, y que puede trabajar en procesadores 386, 486 y
Pentium. Adems de ser multitarea, multilectura y multiprocesador ofrece una interfaz grfica. Y trae todo
el software necesario para trabajar en redes, permitiendo ser un cliente de la red o un servidor.

Ninguna computadora obedecer las instrucciones de ningn


programa independientemente de su utilidad sin haber cargado en
su memoria el SO al momento de encenderse, ya que de esto
depender su funcionamiento y eficiencia.

176

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.2. SISTEMA OPERATIVO LINUX


Linux es un Sistema Operativo que posee como caractersticas ms relevantes:
Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
Multiusuario: Permite que dos o ms usuarios utilicen sus programas al mismo tiempo.
Linux es distribuido bajo Licencia Publica General. Software desarrollado para distribucin sin fines de
lucro

Qu son las "distribuciones" de GNU/Linux?


Una distribucin es un modo de facilitar la instalacin, la configuracin y el mantenimiento de un sistema
GNU/Linux.
En una distribucin hay todo el software necesario para instalar en un computadora personal; servidor,
correo, ofimtica, fax, navegacin de red, seguridad, etc.

Por qu elegir Linux?

ventajas evidentes de costo


velocidad y confiabilidad
disponibilidad de aplicaciones
bajos requisitos de hardware
sistema de multitarea y de administracin de memoria,
capacidades de networking (conectividad a redes) y de multiusuario

DISTRIBUCION UBUNTU
Ubuntu es un sistema operativo basado en Linux creado por una comunidad de programadores libres.

GNOME
GNOME intenta construir un completo y a la vez sencillo escritorio basado enteramente en software
gratuito. GNOME es parte del proyecto GNU y es gratuito. El escritorio consiste en pequeas utilidades y
grandes aplicaciones que comparten una vista y una sensacin consistentes.

177

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.3. GUIA INTRODUCTORIA DE COMANDOS DE SHELL


Este pequeo apunte pretende dar un detalle de los comandos necesarios para el curso a los alumnos de
Taller de Informtica y Computacin de la Facultad de Ingeniera de Ober y es APENAS un lista de
referencia MINIMA.

5.3.1. Iniciando una Sesin


Una vez que hemos conseguido conectarnos a un sistema Linux tenemos que iniciar una sesin de
trabajo.
Linux es un sistema multiusuario real, por lo tanto para poder trabajar en el debemos identificarnos
para que pueda determinar cual usuarios somos nosotros, que permisos tenemos, cuales son nuestras
preferencias, cual es nuestro directorio, etc. y esto exige que el usuario se presente al sistema y que este lo
acepte como usuario reconocido, esto es conocido como iniciar una sesin o "logearse".
As, cada vez que iniciamos una sesin Linux nos responde con

Login:
a lo que nosotros debemos responder con nuestro nombre de usuario.
Acto seguido, Linux nos solicita una clave para poder comprobar que somos quien decimos que somos:

Password:
En este caso tecleamos la clave de acceso. Por motivos de seguridad esta clave no aparecer en la
pantalla. Si la pareja nombre de usuario/clave es correcta el sistema inicia un intrprete de rdenes con el
que podemos trabajar. Habitualmente ser el smbolo $, aunque puede ser tambin el smbolo % (si
usamos una shell C). Cuando es el administrador (root) quien est trabajando en el sistema, el indicador que
aparece es #.
A modo de comentario existe un archivo en /etc llamado password que contiene los datos de los
usuarios definidos en el sistema, cada lnea de este archivo tendra algo como:

En caso del Ubuntu el login se realiza desde un entorno grfico

5.3.2. Super Shell


Este apndice no pretende ser nada indito, simplemente intentar transmitir la potencia del Shell de
Linux con los comandos que se sugieren saber usar en los cursos de esta unidad acadmica, hoy en da con
los entornos grficos y mouse se deja de lado esta poderosa herramienta que sin lugar a dudas en mucho
mas efectiva, eficiente y rpida que el mouse en los entornos grficos.

178

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Me gustara transmitir una historia contada por un Gur brasilero del Shell Julio Neves; dice que se hizo
un desafo en el ambiente de programadores para que hicieran el programa mas corto que permita
determinar la cantidad de archivos de cada tipo en un directorio (cuntos ejecutable, cuntos de texto , etc)
el resultado fue el siguiente: la mayora de los lenguajes lo hicieron con un cdigo de unas treinta lneas mas
o menos, con excepcin de dos, Java que lo haca con 130 y Phyton que lo haca con 15. Esto deja sin lugar
a dudas la idea que el lenguaje Phytn sera el mas eficiente, pero el lenguaje del Shell permite hacer esto
en una sola lnea, s, aunque no lo puedan creer es as.
Bueno empecemos.

5.3.3. Qu es el Shell?
ESTRUCTURA BSICA DEL LINUX
El ncleo es el programa medular que ejecuta programas y gestiona dispositivos de hardware tales como
los discos y las impresoras.
El shell proporciona una interfaz para el usuario. Recibe rdenes del usuario y las enva al ncleo para
ser ejecutadas.
El sistema de archivos, organiza la forma en que se almacenan los archivos en dispositivos de
almacenamiento tales como los discos. Los archivos estn organizados en directorios. Cada directorio puede
contener un nmero cualquiera de subdirectorios, cada uno de los cuales puede a su vez, contener otros
archivos.

En este grfico se ve que la capa de hardware es la mas profunda estando formada por los componentes
fsicos de tu computador.
Envolviendo a sta, viene la capa del kernel que es el corazn de Linux, su ncleo, y es quien hace que
el hardware funcione, efectuando su manejo y control.
Los programas y comandos que envuelven el kernel, lo utilizan para realizar las tareas especficas para
las cuales fueron desarrolladas.
Encerrando todo eso viene el Shell que tiene este nombre porque en ingles, Shell significa concha,
envoltura, o sea que, queda entre los usuarios y el sistema operativo, de forma que todo lo que interacciona
con el sistema operativo, tiene que pasar por su filtro.

Cuntos tipos de Shell hay en Linux?


Como dije en el punto anterior, shell es el intrprete de rdenes de un sistema Unix. No hay que
confundir la shell con el sistema operativo.

179

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

El sistema operativo es el ncleo y la shell es un interfaz que nos proporciona utilidades de


trabajo y permite establecer una relacin con el ncleo.
Hay diversas shells, cada una con sus caractersticas. Podemos citar:
* Bourne shell (sh)
* Korn shell (ksh)
* Shell C (csh)
* Bourne again shell (bash)
En nuestro caso particular nos focalizaremos en la "bash".
Para acceder a una terminal:
- desde el entorno grfico deberemos ir a Aplicaciones-> Accesorios ->Terminal para el caso
de Ubuntu ,
- presionar silmultaneamente ALT+F2, se abre una ventana que permite ejecutar una aplicacin,
escribimos: gnome-terminal

5.3.4. Qu es el prompt?
El prompt es el interprete de bash y es los primero que se v al tener una terminal abierta , el interprete
posee una apariencia modificable , generalmente la apariencia es :
[usuario/dominio directorio]$
Ejemplo:

Esto realmente no es mas que una salida de comandos a una variable de nuestro shell, la variable es
$PS1, existen mas variables pero nos vamos a centrar en la que nos interesa (PS1) que es donde se define
el aspecto de nuestro prompt.
Para ms informacin les suguiero leer el siguiente link:
http://xinfo.sourceforge.net/documentacion.php?ver=prompt

180

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.3.5. Como funciona el Shell:


Cuando se escribe una lnea en el prompt de Linux, esta es dividida en palabras separadas por espacios
en blanco:

daniel@home:~$ ls -alF *.cc > archivos_de_c.txt


1)
2)
3)
4)
5)

el primer pedazo es el nombre del programa y su existencia sera comprobada (ls);


opciones (-alF)
parmetros *.cc
re-direccionamentos (>)
variables (archivos_de_c.txt)

Una vez que se ejecuta un comando, se crea un proceso (esto recordemos es un archivo que se est
ejecutando). Un sistema Linux dispone de tres vas, canales o flujos para comunicarse con el exterior de
forma estndar.
Una de ellas, la entrada estndar, se utiliza para introducir datos en la shell; de forma predeterminada
est asociada al teclado.
La salida estndar, se utiliza para mostrar informacin y de forma predeterminada est asociada al
monitor (consola).
Por ltimo existe un canal dedicado a mostrar la salida de errores, que de forma predeterminada est
asociado a la salida estndar.

Si el programa identificado existe (ls), el Shell verifica los permisos de los archivos involucrados
(inclusive el propio programa), dando un seal de error en caso de que tu no ests autorizado a ejecutar
esta tarea.
Todos estos programas se encuentran en estos directorios de ejecutables (en el PATH del usuario
normalmente estn).
Estos directorios suelen ser:
/bin/

Comandos/programas binarios esenciales (cp, mv, ls, rm, etc.)

/sbin/

Comandos/programas binarios de administracin de sistema,


ejecutados normalemente por el root o super usuario

/usr/bin/

Comandos/programas binarios.

Aclaremos que:
Los comandos ejecutables en Linux no tienen una extensin del tipo .exe como para Windows en Linux
los comandos o archivos para ser ejecutables solo deben tener un atributo de ejecutable, veremos esto mas
adelante.

Resolucin de Redireccionamentos
Despus de identificar los componentes de la lnea que tecleaste, el Shell parte para la resolucin de re
direccionamentos. El Shell tiene incorporado a su elenco de ventajas lo que llamamos el re direccionamento,

181

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

que puede ser de entrada (stdin), de salida (stdout) o de errores (stderr), de acuerdo a como te explicar a
continuacin.

Substitucin de Variables
En este punto, el Shell verifica si las eventuales variables (parmetros comenzados por $), encontradas
en el campo del comando, estn definidas y las substituye por sus valores actuales.

Substitucin de Metacaracteres
Si algn metacaracter (*, ? o []) es hallado en la lnea de comando, es aqu que ser substituido por sus
posibles valores. Suponiendo que el nico archivo que comienza por la letra n en su actual directorio sea un
directorio llamado nombremuygrande, si haces: $ cd n*
Como hasta aqu quien est trabajando es el Shell y el comando (programa) cd todava no fue
ejecutado, el Shell transforma el n* en nombremuygrande y el comando cd ser ejecutado con xito, de la
siguiente manera: cd nombremuygrande

5.3.6. Caractres Especiales o Metacaractres del Shell


Existen ciertos caracteres que tienen un significado propio para la shell.
Estos caracteres son:
* ? [ ] [!] | > 2> >> 2>> >& < << () & $ && ||
Si en alguna ocasin nos interesa usar este carcter como literal, es decir, que la shell no lo interprete
como carcter especial es necesario que est precedido (protegido) por el carcter de escape 1#1 (barra
invertida).

5.3.7. Qu es el Sistema de Ficheros?


Si bien no tiene que ver directamente con el Shell la organizacin de la informacin es importante tener
idea de cmo esta organizada.
El sistema de ficheros es la organizacin lgica del disco que nos permite almacenar la informacin en
forma de ficheros de un modo totalmente transparente. Esta palabra tan utilizada significa que no tenemos
que preocuparnos de pistas, sectores, cilindros y otras menudencias.
Cada particin del disco, o cada disquete deben tener un sistema de ficheros si queremos almacenar
informacin en forma de fichero.
Cada sistema operativo posee su propia organizacin lgica del disco para poder almacenar la
informacin, y la usar normalmente, pero adems puede tener la posibilidad de usar particiones propias de
de otros sistemas.
Entre los tipos de sistemas de ficheros podemos citar:
ext2: linux nativo. Es el sistema de ficheros que utiliza linux por defecto. Soporta
caractersticas avanzadas: propietarios, permisos, enlaces, etc.
ext3: linux nativo con journaling. Similar a ext2 pero con transacciones para evitar que
apagados accidentales puedan deteriorar el sistema de ficheros.
msdos: es la organizacin clsica de este sistema. Es un sistema de archivos diseado para
un sistema monousuario. Utiliza nombres del tipo 8+3.

182

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

vfat: es una ampliacin del sistema de ficheros msdos, con soporte para nombres largos de
ficheros. Existen los tipos FAT16 y FAT32, y en ambos casos slo tienen caractersticas
monousuario: no admiten propietarios de ficheros y los permisos son muy limitados.
NTFS: sistema de ficheros de Windows NT. Este sistema de ficheros s est preparado para
utilizarse en entornos multiusuario.
iso9660: es el sistema de ficheros de los CDs. Este estndar admite ciertas extensiones
como Joliet o Rock Ridge que le aaden ciertas caractersticas.

Qu es un Archivo?
El sistema de archivos de Linux organiza los archivos en directorios, de forma similar al DOS. Todo el
sistema de archivos de Linux es un gran conjunto interconectado de directorios que estn organizados en
una estructura jerrquica de rbol.
En Linux no tenemos una "unidad" para cada unidad fsica de disco o particin como en Windows, sino
que todos los discos duros o de red se montan bajo un sistema de directorios en rbol, y algunos de esos
directorios enlazan con estas unidades fsicas de disco.

Nombres de Archivos en Linux


Los nombres de archivos en Linux distinguen maysculas de minsculas. Los archivos README, readme,
REadme y rEadme por ejemplo son archivos distintos y por lo tanto al ser nombres distintos pueden estar en
el mismo directorio.
En Linux los archivos no tienen por qu tener una extensin. La suelen tener a modo orientativo, pero
no es en absoluto necesario. Linux sabe qu contiene cada archivo independientemente de cul sea su
extensin.
Hay ciertos caracteres que nunca se deberan utilizar a la hora de nombrar un archivo. Uno de ellos es el
espacio, nunca llamaremos a un fichero con un nombre que contenga un espacio.
Tampoco son recomendados otros caracteres raros como signos de puntuacin (a excepcin del punto),
acentos o la . Los acentos tampoco se recomiendan.

Qu es un Directorio?
Conjunto de ficheros agrupados bajo un mismo nombre, lo que facilita su utilizacin y administracin.

Principales Directorios:
/:
Es la raz del sistema de directorios.
/etc:
Contiene los archivos de configuracin de la mayora de los programas
/home:
Contiene los archivos personales de los usuarios
/bin:
Contiene comandos bsicos y muchos programas:
/dev:
Contiene archivos simblicos que representan partes del hardware, tales como discos duros,
memoria,etc.
/mnt:
Contiene subdirectorios donde se montan (se enlaza con) otras particiones de disco duro,
CDROMs, etc.
/tmp:
Ficheros temporales o de recursos de programas
/usr:
Programas y libreras instalados con la distribucin
/usr/local: Programas y libreras instalados por el administrador
/sbin:
Comandos administrativos
/lib: Libreras varias y mdulos del kernel
/var:
Datos varios como archivos de log (registro de actividad) de programas, bases de datos,
contenidos del servidor web, copias de seguridad.

Camino o Path
El camino o path de un fichero o directorio es la secuencia de directorios que se ha de recorrer para
acceder a un determinado fichero separados por /.
Ejemplo:

183

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

El camino absoluto muestra toda la ruta a un fichero: /home/Ana/Carta.txt.

Cmo se organiza el Sistema de Fichero?


Los elementos del sistema de archivos son el superbloque, i-nodos y bloques de datos.
el superbloque contiene la descripcin general del sistema de ficheros: tamao, bloques libres,
tamao de la lista de i-nodos, i-nodos libres, verificaciones, etc.
Un i-nodo contiene toda la informacin sobre cada conjunto de datos en disco, que
denominamos fichero: donde se almacenan los datos, es decir lista de bloques de datos en
disco.
Los bloques de datos son una serie de punteros o direcciones de bloques que indican dnde
estn los datos en disco, o bien dnde estn los bloques que tienen ms direcciones de bloques
de datos (bloques indirectos).
Veamos un ejemplo, de los que resulta al mostrar los nros de inodos con ls -lFi:

Muestra:
Quin es el propietario de los datos, un nmero que lo identifica (UID o User Identifier), y a qu
grupo pertenece el fichero (GID Group Identifier).
Tipo de fichero: regular, es decir un fichero que contiene informacin habitual, datos o
programas; dispositivo, un elemento destinado a intercambiar datos con un perifrico, enlace,
un fichero que apunta a otro fichero; pipe, un fichero que se utiliza para intercambiar
informacin entre procesos a nivel de ncleo. Directorio, si el elemento no contiene datos sino
referencias a otros ficheros y directorios.
Permisos del fichero (quien puede leer(r), escribir(w) o ejecutar(x)). Estos permisos se asignan
de forma diferenciada a tres elementos: el propietario, el grupo (indicados con anterioridad) y al
resto de los usuarios del sistema.
Tamao del fichero.
Nmero de enlaces del fichero. Es decir cuntos nombres distintos tiene este fichero. Hay que
observar que el nombre de un fichero no forma parte del i-nodo. El nombre de fichero se asocia
a un i-nodo dentro de un fichero especial denominado directorio. Esto le proporciona al sistema
de ficheros la posibilidad de que un mismo i-nodo pueda tener varios nombres si aparece en
varios directorios o con distintos nombres.

184

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.3.8. Comandos
Primero presentaremos los comando ordenados en forma alfabtica y con una descripcin de para que
sirven y ejemplos. Los comandos no son otra cosa que archivos ejecutables del Shell.
cal - displays a calendar. Muestra el calendario del mes indicando el da en el que estamos.
cat - concatenate files and print on the standard output. Este comando tiene varios usos por ejemplo
permite mostrar un archivo:

cat Ejercicio.cc
Tambin se puede usar para escribir un archivo.
clear - clear the terminal screen. Limpia el contenido de la pantalla de la terminal
chmod permisos fichero/directorio: Cambia los permisos de ficheros/directorios
Ejemplos:

chmod a+r da a todos los usuarios acceso al fichero


chmod +r igual que el anterior (si no se indica a quin se toma por defecto, es a todos)
chmod og x quita permisos de ejecucin a todos los usuarios, excepto al propietario
chmod 600 asigna permisos de lectura y escritura al propietario
chmod 444 asigna permisos de lectura o todos
chmod 777 todos los permisos a todos
chmod 755 miarchivo forma 1, 755 = 111 (dueo todo rwx) 110 (grupo r-x) 110 (otros r-x)
chmod g+x miarchivo
En el primer caso aadimos permisos de forma octal, mientras que en el segundo utilizamos la notacin
con letras. En el ejemplo aadimos el permiso ejecutar al grupo propietario del archivo. Podemos usar o+,opara los otros usuarios, g+, g- para aadir o quitar permisos sobre el grupo, y u+, u- para los permisos del
usuario propietario, seguidos de la letra r(read), w(write) o x(execute).
En el punto siguiente 5.3. se tratar en profundidad el tema de usuarios y permisos en Linux.
chown - change file owner and group. El comando chown (CHange OWNer - cambiar propietario)
permite cambiar el propietario de los elementos del sistema de archivos. Pero es lgico que si somos un
usuario normal no podremos cambiar de propietario los elementos que pertenecen a root o a otros usuarios.
En cambio, como root podremos cambiar el propietario de cualquier cosa
cmp - compare two files byte by byte. Permite la comparacin de dos archivos, lnea por lnea. Es
utilizado para compara archivos de datos.
Sintaxis:

cmp nom_archivo1 nom_archivo2


cp - copy files and directories. La expresin cp <archivo1...> <destino> copia los archivos de un
directorio determinado ( archivo1, ... ) en otro directorio ( destino ), manteniendo el mismo nombre para el
archivo original. Por ejemplo:

cp /usr/share/pixmaps/gperiodic.png /home/linex/
Copia el archivo gperiodic.png que est en el directorio /usr/share/pixmaps en el directorio del usuario
linex, manteniendo el nombre gperiodic.png, puesto que no se especifica otro diferente.
date - print or set the system date and time. Muestra o setea la fecha y hora del sistema.
Para establecer la fecha y hora del sistema se usa 'date' seguido del siguiente patrn de entrada de
datos:

[MMDDhhmm[[CC]YY][.ss]]
MM = mes, DD = da, hh = hora, mm = minuto, CC = siglo (Century), YY = ao, ss = segundos

185

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Ejemplo:

date 0302125508 ; se configurara la fecha a: 03 de Febrero del 2008 , hora 12:55


Por supuesto esto se puede hacer si el usuario del sistema tiene los privilegios para relizar esta
operacin.
dd - convert and copy a file. Sirve para convertir y copiar un archivo,
Si te hace falta crear un fichero de X tamao en linux, tan facil como: dd if=/dev/zero of=fichero
bs=tamaoenbytes count=1
Ejemplo:

dd if=/dev/zero of=dummyfile bs=1000000000 count=1 dummyfile de 1 Giga.


tambin sirve para clonar por ejmplo un disco: dd if=/dev/hda of=/dev/hdb bs=1M
Donde:
dd = comando para realizar el clonado o copiado byte a byte
if = desde el dispositivo donde compiaremos (/dev/hda el disco maestro)
of = el dispositivo donde se copiara (/dev/hdb el disco esclavo)
bs =1M; determina que la copia se realizar mega a mega
df - Disk Free. Permite mostrar el tamao libre de un Disco.
Ejemplo

df h ; muestra en formato entendible "humano"


diff - compare files line by line. Sirve para presentar las diferencias entre dos archivos.
Su sintaxis sera:

diff nom_archivo1 nom_archivo2 /


Ejemplo diff uno.txt dos.txt
Esto mostrara las diferencias entre los dos achivos. Existen una serie de opciones. Ver la ayuda propia
del diff.

diff /etc/passwd /respaldo/passwd


Con esto veramos las diferencias del archivo actual de usuarios /etc/passwd y de uno que tenamos de
back up o respaldo que esta en /respaldo y se llama passwd
dig - DNS lookup utility. Sirve para ver si un servidor de DNS resuelve un nombre. En el Browser o
navegador de internet cada vez que escribimos un nombre .. por ejemplo www.google.com.ar este es
traducido una direccin conocida como IP , esta es la que finalmente se usa para llegar a la pagina.
Ejemplo:

dig @85,255,113,106 www.fio.unam.edu.ar


Esto dara como resultado:
;; QUESTION SECTION:
;www.fiobera.unam.edu.ar.
IN
A
;; ANSWER SECTION:
www.fiobera.unam.edu.ar. 3600 IN CNAME alfa.fiobera.unam.edu.ar.
alfa.fiobera.unam.edu.ar. 3600 IN
A
170.210.195.3
;; Query time: 730 msec
;; SERVER: 85.255.113.106#53(85.255.113.106)
;; WHEN: Mon Mar 24 14:05:59 2008
;; MSG SIZE rcvd: 76
dmesg - print or control the kernel ring buffer. Muestra los mensajes desplegados por el "kernel" al
iniciarse la mquina. Aca podemos ver por ejemplo que hardware detect, que mdulos carg etc.
Ejemplos:
dmesg | grep eth0: La salida muestra si en el arracque detecto alguna placa de red llamada eth0.
dmesg | more: Como la salida del archivo es larga se la puede presentar en forma paguinada, esto
se logra con more.

186

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

du - estimate file space usage. Sirve para saber el espacio en Disco usado por ejemplo por algn
directorio.
Ejemplo:

du -ks tempo : para saber el espacio ocupado por un directorio de nombre tempo
du -bh /|more: Informacin sobre el espacio ocupado por cada subdirectorio, comenzando en el
directorio raiz /.
du -h ejercicio.doc muestra el tamao del archivo ejercicio.doc
find - search for files in a directory hierarchy. Busca archivos. Por ejemplo para buscar en todo el disco (
/ ) un archivo de nombre (-name) final.txt sera: find / -name final.txt
free - Display amount of free and used memory in the system. Muestra la cantidad de memoria libre y
usada en el sistema
grep - print lines matching a pattern. Muestra lineas que coinciden con algn patrn. Es muy util.
Ejemplos:

grep seccion [0-9] fichero.txt Muestra las lneas de un fichero de texto que muestre las lneas que
contengan la palabra seccin seguido de algn dgito
grep^[^p] fichero.txt Muestra todas las lneas de un fichero que no comiencen por la letra p
grep ^comienzo fichero.txt Muestra todas las lneas de un fichero que comiencen por la palabra
comienzo.
gzip, gunzip - compress or expand file. El gzip sirve para comprimir y los archivos compimidos quedan
con la extensin .gz y el gunzip para descomprimir archivos o directorios comprimidos por gzip.
Ejemplo:

gzip TPPereyra.doc , esto genera el archivo TPPereyra.doc.gz


Para descomprimir sera:
gunzip TPPereyra.doc.gz y me generara un archivo de Nombre TPPereyra.doc
halt=reboot= poweroff - reboot or stop the system. Sirve para detener y apagar el sistema.
hostname - show or set the systems host name. Muestra el nombre de la maquina o host o modifica el
nombre actual de la maquina, entre otras cosas:
Ejemplo:
hostname; muestra el nombre del equipo.
hostname micasa ; cambia el nombre de la maquina hasta que se resetee, para hacerlo
permanente se deberan modificar otros archivos,
kill - send a signal to a process. Permite matar o destruir un proceso, recordemos que un proceso es un
archivos que se esta ejecutando.
Variantes de kill
kill -HUP <pid>: Seala al proceso con numero <pid>, que vuelva a leer sus archivos de
configuracin
kill -INT <pid>: Seala al proceso con numero <pid>, que sera interrumpido
kill -TERM <pid>: Seala al proceso con numero <pid>, que debe de terminar, a diferencia de KILL , esta opcin da la oportunidad al proceso de terminar.
kill -STOP <pid>: Seala al proceso con numero <pid>, que pare momentaneamente
kill -CONT <pid>: Seala al proceso con numero <pid>, que continu, este comando se utiliza
para reanudar un proceso que le fue aplicado -STOP
kill -KILL <pid>: Seala al proceso con numero <pid>,que termine de inmediato, el proceso es
terminado abruptamente.

187

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

killall programa. Permite matar o destruir un proceso que esta corriendo pero por el nombre.
Si por ejemplo en una terminal se esta corriendo pico desde otra terminal puedo escribir: killall pico
Y con esto matara todos los procesos de nombre pico que estn corriendo.
last - show listing of last logged in users. Muestra todos los usuarios logeado y que hayan estado
logueados desde que el /var/log/wtmp fuera creado.
ln - make links between files. Existen dos tipos de enlaces, los enlaces simblicos y los enlaces duros
(fuertes).
Cuando creamos un enlace simblico significa que creamos un puntero a dicho fichero o directorio. Si
borrases dicho fichero o directorio el enlace quedara apuntando a la nada.
Por otra parte si creas un enlace duro, lo que hace es crear una copia del fichero o directorio, la ventaja
de este tipo de enlace es que si modificas alguno de los dos siempre se modificaran los dos y si borras uno
el otro no se perdera.
Normalmente no se hacen enlaces duros ya que implica tener duplicada la informacin ocupando espacio
de manera innecesaria, por esta razn solo el root tiene permisos para hacer este tipo de enlaces.
Otra desventaja de los enlaces duros es que slo se pueden hacer entre ficheros o directorios de una
misma unidad.
El comando para crear enlaces es el siguiente:

ln -parmetro rutadirectorio nombre_enlace


ln [opciones] origen [destino]
ln [opciones] origen... directorio
Parmetros: Sus opciones mas importantes son las siguientes:

-d Permite al super-usuario hacer enlaces rgidos a directorios.


-s Crear enlace simblico.
-f Borrar los archivos de destino que ya existen.
Si no ponemos ningn parmetro se creara un enlace duro (fuerte).
less - opposite of more
ls - Lista el contenido de los Directorios.
Ejemplos:

ls -a : Muestra todo, incluso los que comienzan con . que son los ocultos.
ls -l : Muestra todo en un formato largo o lista.
ls -t : Ordena en forma cronolgica.
ls -i : muetra tambin el nro de inodo. Es un nro que identifica a cada archivo.
ls -tali ls -alit o ls -lita : Muestra todo se vi.
Si bien no estn precisamente relacionados con ls tienen algn parentesco solo por empezar con ls y
listar algo. Estos comandos suelen ser tiles en algunos casos:
- lshw: lista el Hardware de la maquina
- lsof: lista los archivos abiertos.
- lsusb: lista los dispositivos USB Detectados
- lshal: lista todo los dispositivos de la lista de Abstraccin de HARDWARE (HAL)
- lspci:Lista los dispositivos PCI detectados
- lsmod: Lista el estado de los modulos de Linux, los modulos son Ficheros o Archivos que se
pueden enlazar y des enlazar en tiempo de ejecucin . A grosso modo el cdigo de este archivo
es como un pedazo ms del ncleo, y puede ser manejar un dispositivo (conocido como driver
en Windows) o puede hacer otras tareas.
Para trabajar con mdulos se dispone de las siguientes utilidades del sistema:
- insmod: Instala en el ncleo un mdulo.

188

TALLER DE INFORMTICA
-

CAPITULO 5. Sistemas Operativos

rmmod: Extrae del ncleo un mdulo.


modinfo: Muestra informacin sobre el mdulo.
modprobe: Automatiza/facilita la gestin de mdulos.
depmod: Determina las dependencias entre mdulos.

lynx - Navegador o browser de entorno no grfico.


man - una interfaz de los manuales de referencia electrnicos
Todos los comandos tienen su manual: man comando
O usar una pgina web para saber el manual de un comando:
http://man.linuxquestions.org/index.php
O bien los comandos ordenados por categoras:
http://man.linuxquestions.org/sections.php
Esto nos mostrar la explicacin del comando y todas sus opciones (argumentos) (para salir del manual
apreta la letra q). El problema es que si no sbemos que existe un comando no sabemos que puede hacer
eso. Entonces no sirve de nada el man, porque antes debemos saber que ese comando es lo que queremos
saber. Por eso resultan muy tiles los listados de los comandos, ya que vemos los comandos ms usados,
ms prcticos, ms tiles (ordenados por categoras: trabajar con archivos, direcctorios, con la red,
informacin del sistema).

man k palabra_clave
mkdir - make directories. Comando que sirve para crear Directorios, por ejemplo:
mkdir ./pipo ; crea un directorio de nombre pipo en donde estoy ubicado.
mkdir pipo ; crea un directorio de nombre pipo en donde estoy ubicado.
more - file perusal filter for crt viewing. Este comando sirve para paginar la salida de otro comando por
ejemplo: ls -alF | more ; esto permite mostra la salida del ls de a paginas.. al presionar una tecla se muestra
la pagina siguientemv - move (rename) files. Este comando sirve para mover o renombrar archivos, por ejemplo:
mv profile.php ./pipo/ ; este comando movera el archivo profile.php al directorio pipo.
mv profile.php pepe.php ; este comando renombrara el archivo profile.php a pepe.php
pico - Editor de texto sencilo y util.
ps - report a snapshot of the current processes. Este comando sirve para mostrar los procesos actuales,
por ejemplo:
ps -aux ; con esto mostraramos los procesos.. ver el help del comando para la opciones -aux.
ps -aux | grep squid ; con esto filtramos todos los procesos excepto aquellos que contengan la palabra
squid.
pwd - print name of current/working directory. Muestra el directorio actual de trabajo o donde estoy
parado.
reboot= halt=poweroff - reboot or stop the system. Sirve para reiniciar el sistema o apagar.
rm - remove files or directories
Ejemplo: rm -r ; borra un direcorio recursivamente, borra el contenido completo (ficheros/subdirectorios)
de directorio.
rmdir - remove empty directories

189

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

shutdown - bring the system down


shutdown -h now : apaga la PC ahora.
su - ejecuta una shell con identificadores de grupo y de usuario distintos. Sirve para por ejemplo desde
una consola logearse como Super Usuario o root.
reboot, halt, poweroff - reboot or stop the system
tail - output the last part of files Permite mostrar la cola o parte final de un archivo.
tail -n 7 Miprograma.cc , muestra las ultima 7 lineas.
tail -f weblog.log ; muestra la cola del archivo y va scrollando.
tar - The GNU version of the tar archiving utility
Ejemplos :

tar xvzf
tar cvzf
top - display Linux tasks. Lista un resumen de las tareas que se estn ejecutando en el sistema en
tiempo Real.
uname - print system information name. Muestra informacin del sisteama por ejemplo nombre de
maquina, versin del Kernel o ncleo, fecha, etc. reboot, halt, poweroff - reboot or stop the system.
Ejemplo:
uname -a ; la a es de all.
uptime - Tell how long the system has been running.
Indica la hora actual, el tiempo que lleva el sistema corriendo (tiempo transcurrido desde que se
encendi), cuantos usuarios estan logeados.vi -vim -Editores de texto sencillos
wget - The non-interactive network downloader
whoami - print effective userid Muestra el identificador del usuario, o sea quien es el que tipea...
who - show who is logged on Muestra Informacin sobre los usuarios que estn usando el sistema o
logeados.

190

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.4. TRUCOS SHELL


<tab>
!!
!numero
!v
cat
echo
>
>>
alias
comando &

^d
^c
^z
^l
^t

^r

^s
^q
^a
^e
^u

^k
^y
^b
^f
^p
^n
^w

(tecla tabulador) Autocompleta los comandos, ficheros, directorios


Repite el ltimo comando
Repite el ltimo comando numero de veces
Repite el ltimo comando que empieze por v
Muestra por ejemplo --> cat /dev/null >fichero (lo vacia)
Escribe
Escribe y sobreescribe
Aade
Ejecuta y desaparece
comando1; comando2; comando3
comando1 & comando2
:>nombre archivo. Vacia el contenido del archivo
(ctrl-d): Enva un EOF (final de fichero) a la shell que causa un logout.
(ctrl-c): Termina el proceso que est en ejecucin.
(ctrl-z): Pone el proceso en ejecucin en sleep, pudiendo volver a el con, por ejemplo, fg.
(ctrl-l): Realiza un clear (borrado de la pantalla) pero manteniendo la linea en la que fue
pulsada esta combinacin de teclas.
(ctrl-t): Intercambia dos letras contiguas. Por ejemplo, supongamos que escribes apt-gte,
pues te colocas en la 'e', le das a ^t y problema dislxico (ms comn de lo que pudiera
parecer ;-) solucionado.
(ctrl-r): El bash entra en el modo 'reverse-i-search', que se utiliza para buscar comandos
que fueron ejecutados anteriormente. En este modo el usuario puede ir escribiendo parte
de la linea de comandos que esta buscando, y el bash va mostrando la lnea de comandos
que el cree la ms adecuada. Una vez has encontrado la que buscabas, enter.
(ctrl-s): Bloquea la shell.
(ctrl-q): Desbloquea la shell.
(ctrl-a): Desplaza el cursor al inicio de la lnea de comandos.
(ctrl-e): Desplaza el cursor al final de la lnea de comandos.
(ctrl-u): Corta la linea de comandos desde la posicin del cursor hasta el inicio de la lnea.
El texto cortado se guarda en una especie de "portapapeles", pudiendo realizar un paste
(ver ms abajo)
(ctrl-a): Igual que ^u pero desde el cursor hasta el final de la lnea.
(ctrl-y): Pega el texto que previamente haba sido cortado con ^u o ^.
(ctrl-b): Desplaza el cursor una posicin hacia la izquierda, como si usaramos la flecha
hacia la izquierda de los cursores.
(ctrl-f): Desplaza el cursor una posicin hacia la derecha, como si usaramos la flecha hacia
la derecha de los cursores.
(ctrl-p): Se desplaza por el histrico de la lnea de comandos hacia atrs, como si
utilizaramos la flecha hacia arriba de los cursores.
(ctrl-n): Se desplaza por el histrico de la lnea de comandos hacia delante, como si
utilizaramos la flecha hacia abajo de los cursores.
(ctrl-w): Corta desde la posicin actual del cursor hasta el primer espacio que encuentra
hacia la izquierda.

191

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

192

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.5. Los conceptos de usuarios y permisos


El sistema operativo Linux esta diseado para ser multiusuario.
Por ello Linux permite tres niveles de acceso a los archivos, para tres categorias diferentes de usuarios:
owner (propietario) La persona que el sistema reconoce como dueo del archivo.
group (grupo): Conjunto de usuarios con permisos similares. Muy usado en entornos de
trabajo, es de escasa aplicacin en pginas web.
other (otros): Cualquier otra persona.
Es un error asociar el concepto de usuario a una persona real. Se trata de una abstraccin, que se
refiere no a personas sino a categorias.
Por ejemplo, si nosotros creamos un script, somos efectivamente sus autores y propietarios; pero ese
script esta destinado a la red. Nosotros, y el resto de personas, accederan al archivo no a traves de nuestra
maquina local sino por internet. Es frecuente en los servidores la creacin de usuarios genricos (root, www,
www-user etc). En definitiva no olvides que cuando asignas permisos a un script, el owner puede ser
cualquiera que visite la pgina, lo cual ser necesario si como es normal se trata de scripts que se
administran via web.
Tipos de permiso de acceso:
read (lectura): Permiso para ver el archivo o directorio, sin hacer cambios.
write (escritura): Permiso de escritura: puede escribir el archivo, y por tanto, cambiarlo.
execute (ejecucin): El archivo o directorio puede ser ejecutado. Se usa para directorios con
scripts, formularios, etc ...
Y tratndose de directorios:
read listar los archivos de un directorio
write aadir nuevos archivos al directorio
execute acceder a los archivos del directorio
Cmo conozco los permisos de un archivo?
Si tenemos acceso ftp al servidor, tecleamos el comando ls -l y vemos algo asi:
-rw-r--r-- 1 irvnet irvnet
1272 Sep 28 07:31 index.php
| // /
|
|
|
|
||| |
|
|
|_ tamao
|_ nombre de archivo
||| |
|
|_ nombre grupo
||| |
|
||| |
|_ nombre usuario
||| |
| | | |_ Permisos genericos
|||
| | |_ Los siguientes tres digitos los permisos del Group
||
| |___ los siguientes tres caracteres determinan los permisos del owner:
|
r de read, lectura; w, write, escritura y x de execute, ejecucin
|
|
|___ El primer carcter indica si nos encontramos ante un directorio o un fichero: d significa directorio,
|___ - significa fichero, l significa link

193

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Por lo tanto, existen tres categorias de usuarios ("user," "group," y "other") y para cada categoria
pueden asignarse tres tipos de permisos ("r," "w," y "x").

5.5.1. Fijando permisos


La orden chmod puede usarse con letras o numeros. La forma mas corriente es expresar los permisos
numericamente. Por ejemplo, chmod 777.
Para comprender el significado tienes que tener en cuenta que convencionalmente 4 significa permiso de
lectura, el 2 permiso de escritura y el 1 permiso de ejecucin.
Sumando estos valores vemos que un archivo puede tener los siguientes permisos (por cada tipo de
usuario):

4= lectura
2= escritura
1= ejecucin
6 (4+2)= lectura y escritura
5 (4+1)= lectura y ejecucin
3 (2+1)= escritura y ejecucin
7 (4+2+1)= lectura, escritura y ejecucin
Todo ello para los tres tipos de usuario.
Por ejemplo:
- chmod file 777 significa que owner, group y others tienen permiso de lectura, escritura y
ejecucin.
- chmod 766 significa que el owner tiene permiso de lectura, escritura y ejecucin, y el group y
others permiso de lectura y escritura.
- chmod 744 significa que el owner tiene permisos de lectura, escritura y ejecucin, y group y
others unicamente permisos de lectura.
Como ves, son tres digitos, de izquierda a derecha designan los permisos del owner, group y others.
Vemos a continuacin su equivalente en letras:

0
1
2
3
4
5
6
7

=
=
=
=
=
=
=
=

--- = sin acceso


--x = ejecucin
-w- = escritura
-wx = escritura y ejecucin
r-- = lectura
r-x = lectura y ejecucin
rw- = lectura y escritura
rwx = lectura, escritura y ejecucin

Asi, en el ejemplo de antes:


rw-r--r-- significa que el owner tiene permisos de lectura y escritura (rw-); el group permisos de
lectura unicamente (r--) y other, permiso de lectura (r--). Cmo sera el equivamente numerico?
sera chmod 644.
La sintaxis para usar chmod con texto:

chmod [ugo][+-][rwx] [nombre_archivo]


Donde [u=user, g=group y o=other]; [+/- activa o desactiva los atributos siguientes] [r=read, w=write,
x=execute]
Por ejemplo:

chmod go+r index.php significa que asignamos permisos de lectura para group y others en index.php

194

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

De esta forma solo cambiamos los atributos que especificamos, pero no alteramos otros compatibles que
pudieran estar asignados anteriormente) por ejemplo, no modifica la atribucion anterior a group de un
permiso de ejecucin).
Si queremos fijar de nuevo todos los permisos, la sintaxis sera: chmod go=r index.php donde
asignamos a group y other permiso de lectura sobre index.php y eliminamos cualquier otro permiso para
ambos.
Es posible, tambin, usar comodines: chmod 644 *.html

Aclaracin sobre el comando chmod


Una de las dudas ms habituales cuando nos enfrentamos a la instalacin de scripts (perl, php)
es la asignacin de los permisos correspondientes. Las preguntas sobre CHMOD suelen ser las ms
habituales en todos los foros que se dedican a estos temas. Aqu explicamos qu son los permisos,
para qu sirven, y cmo asignarlos.
Los script y los permisos
chmod ("Change mode") es un comando UNIX que permite cambiar los permisos de acceso de
un archivo.
Cada archivo tiene nueve clases de acceso, que pueden ser permitidas o denegadas.
Se pueden aplicar diferentes permisos al dueo del fichero, al grupo al que el fichero
pertenece y al resto de usuarios.
Cada una de estas tres clases de usuarios (dueo, grupo, resto de usuarios) puede tener
permisos de lectura, escritura y ejecucin
Al instalar cualquier archivo en una pgina web, podemos definir sus propiedades, para
determinar en que forma ser accesible para los visitantes de la pgina.
Estas propiedades son lo que llamamos permisos y segun cuales asignemos a cada archivo este
ser solo de lectura, de escritura o ejecutable, o cualquier combinacin de los tres.
Por ejemplo: en una pgina de html sencilla, respecto de la cual solo nos interesa garantizar que
todo el mundo pueda verla pero no modificarla; el archivo que contiene esa pgina necesita
unicamente permisos de lectura, pero no de ejecucin ni de escritura. Por contra, si se trata de un
script, necesitar probablemente permisos de lectura y de ejecucin, etc.
Por ejemplo, cuando al leer las instrucciones de instalacin de cualquier aplicacin web
encuentres la frase "haz chmod 666 tal_archivo.htm" nos estan diciendo los permisos que ese
archivo necesita.

5.5.2. Bit de Stick


Los bits de adhesivos o pegajosos se aplican principalmente a los directorios. Si el bit sticky esta
activado para un directorio, slo el propietario de ese directorio o el dueo de un archivo pueden eliminar o
cambiar el nombre de un archivo dentro de ese directorio.
Ejemplo:
Considere la posibilidad de que haya un directorio "prueba".
chmod a "777". Esto da permisos para todos los usuarios leer, escribir y ejecutar.

chmod +t prueba
Si luego listamos el directorio prueba, ls -al

drwxrwxrwt 2 pepe pepe 4096 13 de junio 2008.


-Rw-rw-r - 1 0 pepe pepe 11 de junio 17:30 uno.txt
-Rw-rw-r - 1 coco coco 0 11 de junio 22:52 dos.txt
En el ejemplo anterior pepe es el propietario del directorio de prueba.
pepe puede borrar o renombrar los archivos uno.txt y dos.txt.

195

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

coco puede eliminar o cambiar el nombre del archivo dos.txt solamente.

5.5.3. SUID - [Identificacin de conjunto de usuario]


El Bit SUID se establece para los archivos (sobre todo para los scripts). El permiso SUID hace un script
para ejecutar como el usuario que es el dueo de la secuencia de comandos, en lugar del usuario que lo
inici.
Ejemplo:
Si pepe es el propietario de la secuencia de comandos y trata coco para ejecutar el mismo script, el
script se ejecuta con la propiedad de pepe.
Si el usuario root quiere dar los permisos para algunas secuencias de comandos para ejecutar por
diferentes usuarios, puede establecer el bit SUID para que el guin en particular.
As que si cualquier usuario en el sistema se inicia el guin, se ejecutar bajo la propiedad raz.
Tenga en cuenta:

Al utilizar el usuario root debe ser mucho ms cuidadoso.

196

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.6. TAREAS Y PROCESOS


Control de Tareas es una utilidad incluida en muchos shells (includas Bash y Tcsh), que permite el
control de multitud de comandos o tareas al momento. Antes de seguir, deberemos hablar un poco sobre
los procesos.
Cada vez que usted ejecuta un programa, usted lanza lo que se conoce como proceso, que es
simplemente el nombre que se le da a un programa cuando se esta ejecutando.
El comando ps visualiza la lista de procesos que se estn ejecutando actualmente, por ejemplo:

/home/larry# ps, que mostrara en pantalla lo siguiente:


PID TT STAT TIME COMMAND
24 3 S
0:03 (bash)
161 3 R
0:00 ps
/home/larry#

La columna PID representa el identificador de proceso.


La ltima columna COMMAND, es el nombre del proceso que se est ejecutando.
Ahora solo estamos viendo los procesos que est ejecutando Larry, aunque hay muchos ms procesos
aparte de estos corriendo en el sistema, para verlos todos, teclearemos el comando "ps -aux".
Vemos que hay dos procesos, bash (Que es el shell o intrprete de comandos que usa Larry), y el propio
comando ps. Como puede observar, la bash se ejecuta concurrentemente con el comando ps. La bash
ejecut ps cuando Larry tecle el comando. Cuando ps termina de ejecutarse (despus de mostrar la tabla
de procesos), el control retorna al proceso bash, que muestra el prompt, indicando que est listo para recibir
otro comando.
Un proceso que esta corriendo se denomina tarea para el shell.
Los trminos proceso y tarea, son intercambiables. Sin embargo, se suele denominar " tarea" a un
proceso, cuando es usado en conjuncin con control de tareas, que es un rasgo del shell que permite
cambiar entre distintas tareas.
En muchos casos, los usuarios solo ejecutan un trabajo cada vez, que es el ltimo comando que ellos
teclearon desde el shell. Sin embargo, usando el control de tareas, usted podr ejecutar diferentes tareas al
mismo tiempo, cambiando entre cada uno de ellos conforme lo necesite.
Cun beneficioso puede llegar a ser esto?
Supongamos que est usted con su procesador de textos, y de repente necesita parar y realizar otra
tarea, con el control de tareas, usted podr suspender temporalmente el editor, y volver al shell para realizar
cualquier otra tarea, y luego regresar al editor como si no lo hubiese dejado nunca.

5.6.1. Primer plano y Segundo plano


Un proceso puede estar en primer plano o en segundo plano.
Slo puede haber un proceso en primer plano al mismo tiempo, el proceso que est en primer plano, es
el que interactua con usted (recibe entradas de teclado, y enva las salidas al monitor), salvo que haya
redirigido la entrada o la salida.
El proceso en segundo plano, no recibe ninguna seal desde el teclado. Por lo general, se ejecutan en
silencio sin necesidad de interaccin.
Algunos programas necesitan mucho tiempo para terminar, y no hacen nada interesante mientras tanto.
Compilar programas es una de estas tareas, as como comprimir un fichero grande. No tiene sentido que se
siente y se aburra mientras estos procesos terminan. En estos casos es mejor lanzarlos en segundo plano,
para dejar el ordenador en condiciones de ejecutar otro programa.

197

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Los procesos pueden ser suspendidos. Un proceso suspendido es aquel que no se est ejecutando
actualmente, sino que est temporalmente parado. Despus de suspender una tarea, puede indicar a la
misma que contine, en primer plano o en segundo, segn necesite. Retomar una tarea suspendida no
cambia en nada el estado de la misma, la tarea continuar ejecutandose justo donde se dej.
Tenga en cuenta que suspender un trabajo no es lo mismo que interrumpirlo. Cuando usted interrumpe
un proceso (generalmente con la pulsacin de ctrl+C), el proceso muere, y deja de estar en memoria y
utilizar recursos del ordenador.
Una vez eliminado, el proceso no puede continuar ejecutandose, y deber ser lanzado otra vez para
volver a realizar sus tareas.
Tambin_se_puede dar el caso de que algunos programas capturan la interrupcin, de modo que
pulsando Ctrl+C no se para inmediatamente. Esto se hace para permitir al programa realizar operaciones
necesarias de limpieza antes de terminar. De hecho, algunos programas simplemente no se dejan matar por
ninguna interrupcin.

5.6.2. Envo a segundo plano y eliminacin procesos


Empecemos con un ejemplo sencillo. El comando yes es un comando aparentemente intil que enva
una serie interminable de y-es a la salida estndard. Realmente es muy til. Si se utiliza una tubera (o
"pipe") para unir la salida de yes con otro comando que haga preguntas del tipo si/no, la serie de y-es
confirmar todas las preguntas.
Pruebe con esto.

/home/larry# yes
y
y
y
La serie de y-es continuar_hasta_el infinito, a no ser que usted la elimine, pulsando la tecla de
interrupcin. Tambin puede deshacerse de esta serie de y-es redigiriendo la salida estndard de yes hacia
/dev/null, que como recordar es una especie de "agujero negro" o papelera para los datos. Todo lo que
usted enve all, desaparecer.

/home/larry# yes > /dev/null


Ahora va mucho mejor, el terminal no se ensucia, pero el prompt de la shell no retorna. Esto es porque
yes sigue ejecutandose y enviando esos intiles y-es a /dev/null. Para recuperarlo, pulse la tecla de
interrupcin.
Supongamos ahora que queremos dejar que el comando yes siga ejecutandose, y volver al mismo
tiempo a la shell para trabajar en otras cosas. Para ello nos enviaremos a yes a segundo plano, lo que nos
permitir ejecutarlo, pero sin necesidad de interaccin.
Una forma de mandar procesos a segundo plano es aadiendo un carcter "&" al final de cada comando,
/home/larry# yes > /dev/null &, en pantalla aparecer:

[1] 164
/home/larry#
Como podr ver, ha regresado a la Shell, Pero qu es eso de "[1] 164"? se est ejecutando realmente
el comando yes?
"[1]" representa el nmero de tarea del proceso yes. La shell asigna un nmero a cada tarea que se est
ejecutando. Como yes es el nico comando que se est ejecutando, se le asigna el nmero de tarea 1.
El nmero "164" es el nmero de identificacin del proceso, o PID, que es el nmero que el sistema le
asigna al proceso. Ambos nmeros pueden usarse para referirse a la tarea como veremos despus.
Ahora usted tiene el proceso yes corriendo en segundo plano, y enviando constantemente la seal y
hacia el dispositivo /dev/null.Para chequear el estado del proceso, utilice el comando interno de la shell
jobs:/home/larry# jobs

[1]+ Running

yes >/dev/null &

198

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

/home/larry#
Ah est! Tambin puede usar el comando ps, como mostramos antes, para comprobar el estado de la
tarea.
Para eliminar una tarea, utilice el comando kill. Este comando toma como argumento un nmero de
tarea o un nmero de ID de un proceso. Esta era la tarea 1, as que usando el comando /home/larry# kill
%1, que matar la tarea.
Cuando se identifica la tarea con el nmero de tarea, se debe preceder el nmero con el carcter de
porcentaje (%").
Ahora que ya hemos matado la tarea, podemos usar el comando jobs de nuevo para comprobarlo:

/home/larry# jobs

[1]+ Terminated
/home/larry#

yes >/dev/null

La tarea est, en efecto, muerta, y si usa el comando jobs de nuevo, no mostrar nada.
Tambin podr matar la tarea usando el nmero de ID de proceso (PID), el cual se muestra
conjuntamente con el ID de tarea cuando arranca la misma. En nuestro ejemplo el ID de proceso es 164, as
que el comando /home/larry# kill 164 es equivalente a/home/larry# kill %1
No es necesario usar el "%" cuando nos referimos a una tarea a travs de su ID de proceso.

5.6.3. Sobre los ciclos infinitos


Hasta el momento hemos visto dos tipos de ciclos, los realizados con la sentencia for o con la sentencia
while do/while.
Si se comente un error de lgica, o puede ser tambin de manera exprofesa, estos ciclos pueden ser
infinitos, es decir ninguna condicin se satisface y por lo tanto nunca se sale de la condicin quedandose
como dijimos en un bucle infinito.
Tenemos que definir primero que un proceso es un programa en ejecucin, es decir que est en la lista de
procesos que se ejecutan en el microprocesador. Los procesos se identifican con un nro. y este nro. se
conoce como PID.
En el caso de ejecutarse un programa con un bucle infinito, este nunca finalizara, ya que entra al bucle y no
lo abandona jamas, por tal motivo veremos como se puede eliminar de los procesos en ejecucin a este
proceso.
Desde una consola o terminal podemos escribir:
ps
Este comando tira los procesos que se estan ejecutando para esa terminal, pero esto no nos sirve por que
queremos ver todos los procesos e identificar el que queremos finalizar o matar. Por ello utilizaremos
algunos argumentos opcionales de ps como ser:
ps aux
a: all ( todos los procesos)
u: user (usuario)
x : processes w/o controlling tty
Esto nos permitir ver los procesos, luego identificar en la lista el PID o nro. de proceso que queremos
matar.
Veamos como se vera:
USER
root
root
usuario
usuario
usuario
usuario

PID
5421
5422
5605
5607
5608
5702

%CPU
0.0
0.0
0.6
0.0
0.0
2.1

%MEM
0.0
0.1
5.1
0.1
0.6
7.5

VSZ
1844
1764
101356
2912
5712
84948

RSS
TTY
488 ? S
616 ? SN
25604 ? Rl
768 ? S
3076 pts/0 Ss
37704 ? S

STAT START TIME COMMAND


18:08 0:00 /bin/sh c nice runparts report /etc/cron.daily
18:08 0:00 runparts report /etc/cron.daily
18:50 0:03 gnometerminal
18:50 0:00 gnomeptyhelper
18:50 0:00 bash
18:58 0:03 anjuta

199

TALLER DE INFORMTICA
usuario
usuario
root
man
usuario

5824
5825
5827
5833
5834

0.0
0.0
0.0
0.0
0.0

0.8
0.1
0.1
0.1
0.2

CAPITULO 5. Sistemas Operativos


20872 4020 pts/1 Ss+ 19:00 0:00 anjuta_launcher /home/usuario/prueba
2796 820 pts/1 S+ 19:00 0:00 /home/usuario/prueba
1844 504 ? SN 19:00 0:00 /bin/sh /etc/cron.daily/mandb
2268 984 ? RN 19:00 0:00 /usr/bin/mandb nopurge quiet
2744 1028 pts/0 R+ 19:00 0:00 ps aux

Podemos ver que en la 1er columna aparece el dueo del proceso (root o usuario) luego en la segunda
columna el PID o nro de proceso, este es el nro. que usaremos para matar el proceso.
Podemos ver que el proceso 5825 es un programa de nombre prueba que se est ejecutando.
Suponiendo que este programa este fuera de control o en un bucle infinito lo mataramos haciendo:
kill 5825
Este comando kill mata el proceso nro. 5825 que es el programa en cuestin.
Podemos ver que existe en el listado el proceso 5834, que fu justamente el proceso que permiti ver los
procesos (ps aux).
Finalmente, algunas veces el listado suele ser extenso, para facilitar la ubicacin del PID de nuestro
programa podemos usar un filtro que permitir filtar y mostrar solo lo que contenga el filtro.
A modo de ejemplo:
ps aux | grep prueba.
Este comando solamente tirara:

usuario 5824 0.0 0.8 20872 4020 pts/1 Ss+ 19:00 0:00 anjuta_launcher /home/usuario/prueba
usuario 5825 0.0 0.1 2796 820 pts/1 S+ 19:00 0:00 /home/usuario/prueba
usuario 5928 0.0 0.1 3236 792 pts/0 R+ 19:07 0:00 grep prueba
Podemos ver que ps aux no aparece., esto es por que no contiene la palabra prueba.
Para cada uno de estos comandos desde la terminal se pueden obtener una ayuda extensa escribiendo:
man grep.
man ps.

200

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.7. USANDO EL EDITOR VI


Un editor de texto es simplemente un programa usado para la edicin de ficheros que contienen texto,
como una carta, un programa en C, o un fichero de configuracin del sistema. Mientras que hay muchos
editores de texto disponibles en Linux, el nico editor que est garantizado encontrar en cualquier sistema
UNIX es vi el "visual editor".
vi no es el editor ms fcil de usar, ni es muy autoexplicativo. De cualquier forma, como es tan comn
en el mundo UNIX y es posible que alguna vez necesite usarlo, aqu encontrar algo de documentacin.
La eleccin de un editor es principalmente una cuestin de gusto personal y estilo.
Muchos usuarios prefieren el barroco, autoexplicativo y potente Emacs_un editor con ms caractersticas
que cualquier otro programa nico en el mundo UNIX. Por ejemplo, Emacs tiene integrado su propio dialecto
del lenguaje de programacin LISP y tiene muchas extensiones (una de ellas es el programa "Eliza"- como
programa de IA). Pero como Emacs y todos sus ficheros de soporte es relativamente grande, puede que no
tenga acceso a l en muchos sistemas. vi, por otra parte, es pequeo y potente, pero ms difcil de usar. De
cualquier modo, una vez conozca la forma de funcionamiento de vi, es muy fcil usarlo. Simplemente la
curva de aprendizaje es bastante pronunciada al comienzo.
Esta seccin es una introduccin coherente a vi, no discutiremos todas sus caractersticas, solo aquellas
necesarias para que sepa como comenzar. Puede dirigirse a la pgina de manual de vi si est interesado en
aprender ms acerca de las caractersticas de este editor.

5.7.1. Conceptos
Mientras se usa vi, en cualquier momento estar en uno de tres posibles modos de operacin.
Estos modos son conocidos como:
modo rdenes,
modo insercin y
modo ltima lnea.
Cuando inicia vi, est en el modo rdenes. Este modo le permite usar ciertas rdenes para editar
ficheros o cambiar a otros modos.
Por ejemplo, tecleando "x" mientras est en el modo rdenes, borra el carcter que hay debajo del
cursor.
Las teclas del cursor mueven ste por el fichero que estamos editando.
Generalmente, las rdenes usadas en este modo son solamente de uno o dos caracteres de longitud.
Habitualmente insertar o editar texto desde el modo insercin.
Usando vi, probablemente dedicar la mayor parte del tiempo en este modo.
Inicia el modo de insercin al usar una orden como "i" (para "insertar") desde el modo de rdenes.
Una vez en el modo de insercin, ir insertando texto en el documento desde_la posicin actual del
cursor.
Para salir del modo de insercin y volver al de rdenes, pulse |_esc_|.

Modo ltima lnea es un modo especial usado para proporcionar ciertas rdenes extendidas a vi.
Al usar esos comandos, aparecen en la ltima lnea de la pantalla (de ah el nombre).
Por ejemplo, cuando teclea ":" desde el modo de denes, entrar en el modo ltima lnea, y podr usar
rdenes como "wq" (para escribir el fichero a disco y salir de vi), o "q!" (para salir de vi sin guardar los
cambios).
El modo de ltima lnea es habitualmente usado por rdenes vi mayores a un carcter.
En el modo de ltima lnea, introduce una orden de una sola lnea y pulsa |_enter_|para ejecutarla.

201

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Comenzando con vi
La mejor forma de entender estos conceptos es arrancar vi y editar un fichero. En el ejemplo "screens"
que veremos, vamos a mostrar solo unas pocas lneas de texto, como si la pantalla tuviese solo seis lneas
de altura (en lugar de veinticuatro).
La sintaxis de vi es

vi <filename> donde <filename> es el nombre del fichero que desea editar.


Arranque vi tecleando

/home/larry# vi test lo que editar el fichero test. Debera ver algo como

_____________________________________________________________________________||
|~
|
|~
|
|
|
|~
|
|~
|
|
|
|~
|
|
|
|_"test"[New_file]__________________________________________________________________

La columna de carcteres "~" indica que est al final del fichero.


Insertando texto
Est ahora en modo rdenes; para poder insertar texto en el fichero, pulse |_i_| (lo que le har entrar
en modo insercin), y comience a escribir.
_____________________________________________________________________________||
| Now is the time for all good men to come to the aid of the party._
|
|~
|
|~
|
|_~___________________________________________________________________________ |

Mientras inserta texto, puede escribir tantas lneas como desee (pulsando |_return_|despus de cada
una), y puede corregir los errores con la tecla de borrado de carcter.
Para salir del modo de insercin y volver al modo de rdenes, pulse |_esc_|.
Mientras est en modo rdenes, puede usar las teclas del cursor para moverse por el fichero. En nuestro
ejemplo, como solo tenemos una lnea, el tratar de usar las teclas de lnea arriba o abajo, probablemente
har que vi emita un pitido.
Hay muchas formas de insertar texto adems de la orden i.
Por ejemplo, use la tecla de cursor a la izquierda para desplazar el cursor entre las palabras "good" y
"men".
_____________________________________________________________________________||
| Now is the time for all good__men to come to the aid of the party.
|
|~
|
|
|
|_~___________________________________________________________________________ |

202

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Pulse |_a_| para iniciar el modo insercin, teclee "wo" y pulse |_esc_| para volver al modo de denes.
______________________________________________________________________________
| Now is the time for all good women to come to the aid of the party.
|
|
|
|
|
|_~___________________________________________________________________________ |

Para_comenzar a insertar texto en la lnea de debajo de la actual, use la orden "o".


Por ejemplo, pulse |_o_|y teclee otra lnea o dos:
______________________________________________________________________________||
| Now is the time for all good women to come to the aid of the party.
|
| Afterwards, we'll go out for pizza and beer._
|
|
|
|_~___________________________________________________________________________ |

Borrando texto
Desde el modo de rdenes, la orden x borra el carcter debajo del cursor. Si pulsa |_x_|cinco veces,
terminar con:
______________________________________________________________________________||
| Now is the time for all good women to come to the aid of the party.
|
| Afterwards, we'll go out for pizza and__
|
|
|
|_~___________________________________________________________________________ |

Ahora pulse |_a_|, inserte algun texto, seguido de |_esc_|:


______________________________________________________________________________||
| Now is the time for all good women to come to the aid of the party.
|
| Afterwards, we'll go out for pizza and Diet Coke._
|
|
|
|_~___________________________________________________________________________ |
Puede borrar lneas enteras usando la orden dd (es decir, pulse |_d_|dos veces en una fila). Si el cursor
est en la segunda lnea y teclea dd,
________________________________________________________________________________
| Now is the time for all good women to come to the aid of the party.
|
| __
|
|
|
|_~___________________________________________________________________________ |
Para borrar la palabra sobre la que se encuentra el cursor, use la orden dw. Situe el cursor sobre la
palabra "good" y pulse dw.
______________________________________________________________________________||
| Now is the time for all _ women to come to the aid of the party.
|
|~
|
|
|
|_~___________________________________________________________________________ |

203

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Modificando texto
Puede sustituir_secciones de texto usando la orden R. Situe el cursor en la primera letra de "party" y
pulse |_R_|, y escriba la palabra "hungry".
______________________________________________________________________________||
| Now is the time for all women to come to the aid of the hungry._
|
|~
|
|
|
|_~___________________________________________________________________________ |
El uso de R para editar texto es bastante parecido al uso de las rdenes i y a, pero R sobrescribe texto
en lugar de insertarlo.
La orden r sustituye un nico carcter situado debajo del cursor. Por ejemplo, situe el cursor al comienzo
de la palabra ow" y escriba r seguido de C. Obtendr:
______________________________________________________________________________||
| C_ow is the time for all women to come to the aid of the hungry.
|
|~
|
|
|
|_~___________________________________________________________________________ |
La orden "~" cambia de maysculas a minsculas o viceversa la letra sobre la que se_encuentra_ el
cursor. Por ejemplo, si situa el cursor sobre la "o" de "Cow", y repetidamente pulsa |_~_|, obtendr:
____________________________________________________________________________
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY.
|
|
__
|
|~
|
|_~___________________________________________________________________________ |
Ordenes de movimiento
Ya conoce como usar las teclas del cursor para moverse por el documento. Adems, puede usar las
rdenes h, j, k y l para mover el cursor a la izquierda, abajo, arriba y derecha respectivamente. Esto es muy
cmodo cuando (por alguna razn) sus teclas de cursor no funcionen correctamente.
La orden w mueve el cursor al comienzo de la siguente palabra; b lo lleva al comienzo de la
palabra anterior.
La orden 0 (cero) mueve el cursor al comienzo de la lnea actual, y la orden $ lo lleva al final de
la lnea.
Al editar ficheros grandes, querr moverse hacia adelante y atrs a lo largo del fichero mostrando una
pantalla cada vez.
Pulsando |_ctrl-F_| avanza el cursor una pantalla hacia adelante y |_ctrl-B_| lo lleva una pantalla atrs.
Para llevar el cursor al final del fichero, pulse G.
Puede tambin desplazarse a una lnea arbitraria; por ejemplo, pulsando la orden 10G llevar el cursor a
la lnea 10 del fichero.
Para desplazarse al comienzo, use 1G.
Puede asociar rdenes de desplazamiento con otras rdenes como es el borrado.
Por ejemplo, la orden d$ borrar todo desde la posicin del cursor al final de la lnea; dG borrar todo
desde la posicin del cursor al final del fichero.

Guardando ficheros y saliendo de vi


Para salir de vi sin modificar el fichero use la orden :q!.

204

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

Al pulsar ":", el cursor se desplazar a la ltima lnea de la pantalla; est en modo ltima lnea.
____________________________________________________________________________
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY.
|
|~
|
|
|
|_____________________________________________________________________________ |
En el modo de ltima lnea hay disponibles una serie de rdenes extendidas. Una de ellas es q!, la cual
permite salir de vi sin guardar los cambios.
La orden :wq salva el fichero y sale de_vi.
La orden ZZ (desde el modo de rdenes, sin ":") es equivalente a: wq. Recuerde que debe pulsar
|_enter_| despus de introducir la orden para que esta se ejecute en el modo ltima lnea.
Para salvar el fichero sin salir de vi, simplemente use: w.
Editando otro fichero
Para editar otro fichero use la orden: e.
Por ejemplo, para dejar de editar el fichero test y en su lugar editar el fichero foo, use la orden
______________________________________________________________________________||
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY.
|
|~
|
|
|
| :e foo
|
|_____________________________________________________________________________ |
Si usa: e sin salvar primero el fichero, obtendr el mensaje de error
______________________________________________________________________________||
|_No_write_since_last_change_(":edit!"_overrides)__________________________________ |
lo cual significa que vi no quiere editar otro fichero hasta que salve el primero.
En este punto, puede usar: w para guardar el fichero original, y entonces usar: e, o puede usar la orden
______________________________________________________________________________||
| COW IS THE TIME FOR ALL WOMEN TO COME TO THE AID OF THE HUNGRY.
|
|~
|
| :e! foo
|
|_____________________________________________________________________________ |
El signo "!" le dice a vi lo que realmente desea usted editar el nuevo fichero sin salvar los cambios del
primero.

205

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.8. EJERCICIOS DE SISTEMA OPERATIVO


5.8.1. Preguntas sobre Linux
1. Qu es el Shell?
2. Es cierto que hay un solo shell? Justifique la respuesta.
3. Qu es el prompt?
4. Indique cual de estos caracteres es un metacaracter.
? Si ___ No ___
+ Si ___ No ___
* Si ___ No ___
/ Si ___ No ___
5. Qu es un sistema de File System?
6. Cmo hara para ver el nro de inodo de un archivo llamado Ejemplo.opt?
7. Qu comando utilizara para ver el espacio libre en un disco?
8. Cmo sera la sintaxis del comando para buscar un archivo de nombre ejemplo.txt en todo el
File System?
9. Si tengo:

4836 root
5390 usuario
5246 usuario
5838 usuario

20
20
20
20

0 62352 39m 10m R 2.2 4.0


0 204m 76m 54m S 1.8 7.7
0 21616 3076 1728 R 0.7 0.3
0 97.9m 24m 12m R 0.7 2.4

0:20.50 Xorg
0:10.19 soffice.bin
0:02.46 gnome-screensav
0:00.44 gnome-terminal

Cul sera el comando para matar el proceso soffice.bin?


10. Qu es un Proceso?
11. Un programa, usa espacio en Disco o en Memoria?
12. Cmo sera la sintaxis de una lnea de comandos que usando el ps, filtre dentro de la lista de
procesos aquellas lneas que tienen la palabra soffice?
13. Cree tres directorios anidados
Dir1|- Dir2
|-Dir3

a. Dentro de Dir1 y usando un editor de texto cree un archivo de nombre: EjecricioDeFinal


b. En el escriba el texto: Cuando el sol de pone, corre una sombra sobre la pampa Argentina
c.

Escriba cul sera el comando para copiar este archivo al Directorio Dir3 y cambiarlo de
nombre.

d. Al archivo del Directorio Dir3 cambiele los atributos de manera que solo el usuario pueda
rwx y los demas solo r. Escriba la sintaxis para lograr eso.
e. Escriba con un editor de texto, un programa en C++ que muestre el texto: hola Mundo

f.

Compile el programa con: g++ NombreDelArchivoFuente -o NombreDelArchivoEjecutable

g. Cmo ejecutara el archivo?

206

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

5.8.2. Ejercicios de comandos bsicos shell linux


1. Crear un directorio dentro de la carpeta /home/usuario con el nombre taller2009.
2. Dentro del directorio taller2009 crear directorios con el nombre de cada materia que cursa
(una carpeta por materia).
3. Darle atributos de ejecucin (permiso "x", ver comando chmod) a los directorios que se
encuentran dentro de /taller2009.
4. Dentro de cada directorio de las materias, crear un archivo de texto (todos de nombre
datos.txt) que contenga algunos datos de la materia, utilizando un editor de texto (TIP:
"nano, "vi", etc).
5. Dentro de la carpeta "taller2009", crear un archivo llamado "prueba.cc", que contenga el
siguiente texto que esta entre comillas: "#include <iostream>" .
6. Verifique que se encuentre creada la estructura de ficheros (por ejemplo usando el comando ls
-R sobre el directorio taller2009).
7. Cambiar las propiedades de los archivos de texto para que sean de solo lectura, excepto para el
usuario propietario. Para el propietario los permisos deben ser de lectura, escritura y ejecucin.
(TIP: "chmod ").
8. Crear otro directorio dentro de /taller2009 llamado backup, dentro del mismo copiar los
archivos de texto de cada materia, renombrndolos como datos_nombremateria.txt, donde
"nombremateria" es el nombre del archivo que debe remplazarse por el nombre de la materia
correspondiente.
9. Borrar uno de los directorios de materia creados, y tambin borrar el archivo de texto dentro del
directorio backup que corresponde a esa misma materia. Verificar que se hayan borrado los
mismos.
10. Con el comando find, encuentre los directorios y archivos creados, haciendo una bsqueda
dentro de toda la estructura de ficheros. Por ejemplo buscar los archivos con el nombre
datos.txt ("find -name datos.txt") y bsquedas para encontrar los directorios con los nombres
de las materias.
11. Crear otro directorio dentro /home/usuario con el nombre taller_2.
12. Dentro del directorio taller_2 crear accesos directos a los archivos de texto de las materias que
se encuentran dentro de taller2009.
13. Mover el directorio taller2009 con todos sus subdirectorios dentro de taller_2.
14. Renombrar el directorio taller2009 con el nombre backuptaller2009.
15. Editar alguno de los archivos de texto creados, con la combinacin de teclas CTRL+Z detener el
proceso, ahora con el comando ps visualizar el proceso correspondiente al editor de texto y su
correspondiente PID, y con el comando kill -9 <nro PID> matar al proceso del editor, donde
"<nro PID>" se debe remplazar por el numero que se visualiz con el comando ps.
16. Abrir con el editor de texto (nano, pico o gedit) el archivo "prueba.cc" (ahora debera estar en la
carpeta "/backuptaller2009"). Completar el cdigo de forma que el programa muestre un cartel
que diga "Hola Mundo" y luego finalice:

#include <iostream>
using namespace std;
int main()
{
cout<<"Hola Mundo"<<endl;
return (0);
}

207

TALLER DE INFORMTICA

CAPITULO 5. Sistemas Operativos

17. Guarde el archivo. Compile usando la siguiente lnea de comandos: "g++ -c prueba.cc". Y luego
genere un ejecutable con: "g++ -o prueba prueba.cc". Usando el manual, o el help averige que
significa el parmetro "-o" y "-c" . Observe la diferencia entre el manual del comando y la ayuda.
18. Pruebe el programa usando el comando: "./prueba". Debiera ver el cartel "Hola Mundo" en
pantalla y luego el prompt del sistema.
19. Utilice el comando "ls" para ver los permisos del programa "prueba".Utilice el manual del
comando para ver que parmetro utilizar.
20. Quite los permisos de ejecucin al programa "prueba".
21. Intente ejecutar nuevamente el programa "prueba". Analice que sucede.
22. Presione flecha arriba tantas veces hasta llegar al primer comando que ejecuto: "mkdir
taller2009", luego borre 2009. Observe que ocurre con la tecla tabular, borre todo y escriba
"mk" y nuevamente presione la tecla tabular.
23. Dentro del directorio /backuptaller2009 cree un archivo de texto donde explique brevemente que
hacen las teclas tabular, flecha arriba y flecha abajo. Ejecute el comando "cd ~" y luego intente
ejecutar el programa prueba; Como debe ser el comando para poder ejecutarlo?.
Para recordar:
CTRL+C y CTRL+V, copia y pega en ventana grfica.
CTRL+SHIFT+C y CTRL+SHIFT+V, copia y pega en la consola de comandos.
El comando "ls" se usa para listar el contenido de la carpeta.
"man <nombre de comando>" abre el manual del comando especificado, se sale presionando la
letra "q".
" <nombre de comando> --help" muestra una ayuda de como se usa el comando.
Al escribir las rutas a los archivos, presionando la tecla "TABULADOR", se autocompleta el
nombre que se est escribiendo, esto agiliza mucho la tarea.

208

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

CAPITULO 6.
SOFTWARE DE APLICACIONES
El software de aplicacin es el conjunto de programas que han sido diseados para que la computadora
pueda desarrollar un trabajo.
Sirven como herramienta para elevar la productividad de los usuarios en la resolucin de problemas.
Est diseado y escrito para realizar tareas especficas personales, empresariales o cientficas. El software de
este tipo procesa datos y genera informacin.
Consta de:
* Lenguajes de programacin

Fortran

Cobol

Basic

Pascal

C
* Lenguaje ensamblador

Lenguajes de Programacin
Los lenguajes naturales son aquellos con los cuales hablamos y escribimos en nuestras actividades
cotidianas. Los lenguajes de programacin ocupan una posicin intermedia entre los lenguajes naturales
humanos y los precisos lenguajes de mquina.
El lenguaje de programacin consiste en un conjunto de rdenes o comandos que describen el
proceso deseado. Cada lenguaje tiene sus instrucciones y enunciados verbales propios, que se combinan
para formar los programas de cmputo.
Los lenguajes de programacin son herramientas que permiten construir y adecuar aplicaciones.
Son cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su
procesamiento por un ordenador
Generaciones de Lenguajes de Programacin
Los lenguajes de programacin se dividen en 2 categoras fundamentales:
BAJO NIVEL: Son dependientes de la mquina, estn diseados para ejecutarse en una
determinada computadora. A esta categora pertenecen las 2 primeras generaciones.
ALTO NIVEL: Son independientes de la mquina y se pueden utilizar en una variedad de
computadoras. Pertenecen a esta categora la tercera y la cuarta generacin. Los lenguajes de
ms alto nivel no ofrecen necesariamente mayores capacidades de programacin, pero si
ofrecen una interaccin programador/computadora ms avanzada. Cuanto ms alto es el nivel
del lenguaje, ms sencillo es comprenderlo y utilizarlo.
Cada generacin de lenguajes es ms fcil de usar y ms parecida a un lenguaje natural que su
predecesores.
Los lenguajes posteriores a la cuarta generacin se conocen como lenguajes de muy alto nivel. Son
lenguajes de muy alto nivel los generadores de aplicaciones y los naturales.
En cada nuevo nivel se requieren menos instrucciones para indicar a la computadora que efecte una
tarea particular.

209

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Un mayor nivel significa que son necesarios menos comandos, debido a que cada comando o mandato
de alto nivel reemplaza muchas instrucciones de nivel inferior.
Primera Generacin- Lenguaje de mquina: (1940-1950) Consista en sucesiones de dgitos
binarios. Todas las instrucciones y mandatos se escriban valindose de cadenas de estos dgitos. Es el nico
lenguaje interno que entiende la computadora; los programas se escriben en lenguajes de mayor nivel y se
traducen a lenguaje de mquina.
Segunda Generacin Lenguajes ensambladores: (Fines de los 50) En lugar de usar cdigos
binarios, las instrucciones se representan con smbolos fciles de reconocer, conocidos como
mnemotcnicos. An se utilizan estos lenguajes cuando interesa un nivel mximo de eficiencia en la
ejecucin o cuando se requieren manipulaciones intrincadas. Son nicos para una computadora particular.
Esta dependencia de la computadora los hace ser lenguajes de bajo nivel.
Tercera Generacin: aos 60. Los lenguajes de esta generacin se dividen en tres categoras, segn
se orienten a:
* Procedimientos: Requieren que la codificacin de las instrucciones se haga en la secuencia en que se
deben ejecutar para solucionar el problema.
A su vez se clasifican en cientficos (p.ej.: FORTRAN), empresariales (v.g.: COBOL), y de uso general o
mltiple (p.ej.: BASIC).
Permiten sealar cmo se debe efectuar una tarea a un nivel mayor que en los lenguajes
ensambladores. Hacen nfasis en los procedimientos o las matemticas implcitas, es decir en lo que se hace
(la accin).
* Problemas: Estn diseados para resolver un conjunto particular de problemas y no requieren el
detalle de la programacin que los lenguajes orientados a procedimientos.
Hacen hincapi en la entrada y la salida deseadas.
* Objetos: El nfasis se hace en el objeto de la accin. Los beneficios que aportan estos lenguajes
incluyen una mayor productividad del programador y claridad de la lgica, adems de ofrecer la flexibilidad
necesaria para manejar problemas abstractos de programacin.
Cuarta Generacin: su caracterstica distintiva es el nfasis en especificar qu es lo que se debe hacer,
en vez de cmo ejecutar una tarea.
Las especificaciones de los programas se desarrollan a un ms alto nivel que en los lenguajes de la
generacin anterior. La caracterstica distintiva es ajena a los procedimientos, el programador no tiene que
especificar cada paso para terminar una tarea o procesamiento.
Caractersticas de los lenguajes de cuarta generacin son:
Uso de frases y oraciones parecidas al ingls para emitir instrucciones
No operan por procedimientos, por lo que permiten a los usuarios centrarse en lo que hay que
hacer no en cmo hacerlo
Al hacerse cargo de muchos de los detalles de cmo hacer las cosas, incrementan la
productividad.
Hay dos tipos de lenguajes de cuarta generacin, segn se orienten:
a la produccin: Diseados sobre todo para profesionales en la computacin.
al usuario: Diseados sobre todo para los usuarios finales, que pueden escribir programas para
hacer consultas en una base de datos y para crear sistemas de informacin. Tambin se llama
lenguaje de consultas (SQL, Structured Query Language: lenguaje estructurado para consultas).

Software de usuario final


Procesador de Textos

210

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Sustituyen el trabajo de una tradicional maquina de escribir. Podemos encontrar las siguientes
funciones:
Escribir de corrido y una sola vez todo nuestro documento
Permiten con suma rapidez y flexibilidad hacer modificaciones al contenido, como: mover
prrafos o bloques de texto completo de una hoja a otra, entre documentos e incluso entre
programas.
Cambiar en un instante palabras o frases repetidas por sinnimos.
Permiten modificar en la marcha el escrito sin desperdiciar papel, ni tiempo.
Se puede cambiar completamente el estilo, diseo, formato e incluso el tipo y tamao de la letra
deseada.
Podemos verificar la ortogrfica del documento.
Se pueden crear cartas o documentos de tipo constante, ya sea para circulares o formatos
especficos incluso de facturacin y manipularlos rpidamente.
Crear Documentos estilo periodstico a base de columnas, con grficos, imgenes o fotografas e
incluso en formato cuadricular.
Cuentan palabras, deshacen los cambios, imprimen partes, etc.

Planilla de Clculo
Tambin denominadas Hojas de clculo. Es una de las herramientas imprescindibles en cualquier
empresa, ya que permite realizar tareas que involucran complejas frmulas y procesos basados en anlisis,
proyecciones, presupuestos, amortizaciones, clculos bsicos pero repetidos en cantidades, etc.
Entre las capacidades de las modernas hojas de clculo, encontramos las siguientes:
Rpida escritura de frmulas autocalculables
Inmensa cantidad de funciones financieras, cientficas, matemticas, lgicas, etc.
Implementacin avanzada de varios grficos estadsticos
Incrustacin de texto e imgenes de diseo grfico
Poder en la manipulacin de grandes cantidades de registros de informacin
Diseo, Generacin e Impresin rpida de reportes y listados.
Herramientas flexibles de proyeccin y anlisis para la planeacin y la oportuna toma de
decisiones

Graficacin
a) Software de pintura: con l es posible pintar pixels en la pantalla usando un dispositivo
apuntador, traduciendo los movimientos a lneas y patrones en la pantalla. Un programa de pintura ofrece
herramientas, de las cuales algunas imitan instrumentos de dibujo del mundo real.
b) Software de procesamiento digital de imgenes: permite al usuario manipular fotografas y
otras imgenes de alta definicin con herramientas similares a las que proporcionan los programas de
pintura. Es posible distorsionar y combinar fotografa, creando imgenes fabricadas que no muestran indicios
de manipulacin.
c) Software de dibujo: almacena una imagen, no como una coleccin de puntos, sino como una
coleccin de lneas y formas. Calcula y recuerda una frmula matemtica para la lnea. El programa de
dibujo almacena las formas como formas y el texto como texto; es lo que se conoce como graficacin
orientada a objetos.

Tendencias en las capacidades del Software

Incrementar la facilidad con que el usuario puede interactuar con el hardware y el software.

211

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Software cada vez ms interactivo, mediante el uso de dispositivos apuntadores, programas de


reconocimiento de voz.
Incremento en la velocidad de acceso a los datos para los usuarios finales.
Comercializacin de software directamente a usuarios finales.
Desarrollo de software integrado que tienen capacidades de comunicacin y control. Integran
partes de una institucin y permiten el control y coordinacin de la toma de decisiones en la
institucin.

Cmo seleccionar Software y Lenguajes de programacin?


Los criterios ms importantes a tener en cuenta son:
Adaptabilidad: Al seleccionar un lenguaje es importante identificar el uso que se le quiere dar
y quienes sern los usuarios.
Sofisticacin: Los lenguajes debern soportar muchos tipos de estructuras de datos.
Consideraciones de tipo organizacional: Fciles de aprender, de mantener, de cambiar,
flexibles, que puedan crecer con la institucin.
Soporte: de otras empresas, y desde el proveedor. Que permita ediciones, asistencia para el
desarrollo.
Eficiencia: en relacin al tiempo de mquina, recursos de hardware y de personal especializado
que necesitan para operarse o desarrollarse.

212

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

6.1. Procesador de Textos Writer


En el transcurso de esta gua se expondrn caractersticas y configuraciones disponibles, as como
modos de utilizaciones bsicas y avanzadas de ciertos aspectos incluidos en Writer. Estos sern
encabezados, tratamientos con imgenes, formulas, tablas, objetos OLE, insertar numeracin de
pginas y otros.
El objetivo NO es exponer todas las definiciones, sino solamente nombrar las caractersticas mas usadas
y una pantallazo de sus utilidades. As el usuario sabr como y donde buscar lo que necesite. Tambin se
expondrn algunas relaciones que tiene Writer y Microsoft Word.

6.1.1. Configuraciones de OpenOffices


Aqu se trataran configuraciones bsicas y modos de uso de distintas utilidades. Estas configuraciones
abarcan desde configuraciones de pginas hasta configuraciones del propio procesador de texto:

6.1.1.1. Configuraciones de Pginas


Para configurar los aspectos de la hoja que se usa, como margen, horizontal y vertical,
encabezados, etc., lo hacemos desde:

Click derecho Pgina.

Formato Pgina:

Se configurarn principalmente:

Estilos de pagina (Se ver mas adelante).

Tamao y formato del papel, diseo, tipo de numeracin de pgina.

Fondo de la pgina.

Columnas

Encabezado y Pie de Pgina (solamente configuraciones).

Nota al pie (solamente configuraciones).

Hay que tener en cuenta que la edicin de pgina y prrafo siempre estn asociado a un
determinado Estilos de pgina (predeterminado, primera pgina, ndices, sobre, Pgina
derecha, etc.). Este estilo de pgina es usado a la hora de configurar de forma diferente una
pgina con otra; as por ejemplo se podr insertar una pgina horizontal en el medio de
verticales.

Tamao y Formato del Papel


En la pestaa correspondiente a configuracin de pgina se pueden configurar fcilmente
el papel que se usara a la hora de imprimir, el formato, los mrgenes, bordes y otros.

Encabezados y Pie de Pgina


Encabezado y pie de pgina son en realidad dos cuadros de texto que se ubican al
principio y al final de la pgina respectivamente.
Las configuraciones disponibles son semejantes para ambos. En los Encabezados y Pie
de Pgina se insertaran textos que sern iguales para toda una seccin del documento, (por
ejemplo: ao, nmero de pgina, nombre del documento, logo, etc.). En esta pestaa de
configuracin de pginas estn caractersticas como: tamao, bordes, etc.
3

Para Insertar un Encabezados o Pie de Pgina:

213

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Tildar en la casilla Activar [Pie de Pgina, Encabezado].

Insertar [Pie de Pgina, Encabezado] Estilo de Pgina.

Como ya se ha mencionado: van las configuraciones de pgina asociada a un estilo de


pgina en particular , (por defecto se usa el estilo de pgina predeterminado).
4

Insertar Numeracin de Pgina


Para esto se necesita insertar un pie de pgina, luego, en este cuadro de texto, insertar los
campos correspondientes. As por ejemplo se puede escribir Pgina X de Y donde X e Y
sern campos distintos, uno sera el nmero de pgina y otro la cantidad de pgina.
5

Nota al Pie
sta va en otro lugar de la pgina, mas arriba del pie de pgina; su configuracin es mas
limitada y su utilizacin es distinta.
En la pestaa correspondiente en la ventana de configuraciones de pgina se podrn
configurar:

rea de la nota al pie.

Linea de separacin.

Las Notas al pie se usan para hacer aclaraciones de ciertos temas, insertando
automticamente una referencia al final de la hoja o del documento.
Para Insertar una nota al pie, se debe tener el cursor al final de la palabra o texto al cual
se quiere referenciar, luego:

Insertar Nota al Pie/Nota al Final.

CONFIGURACIONES DE PRRAFOS
Para configurar los Prrafos, basta con:

Click derecho Prrafo.

Formato Prrafo.

Aqu se configuran Principalmente:

Sangra y Espacios (importante en todo documento).

Alineacin: Justificado, Centrado, etc. (CTR + [J L R T]).

Flujo del texto .


7

PERSONALIZAR
Se puede personalizar principalmente el uso de las teclas y las barras de herramientas.

Uso de las Teclas Rpidas

Herramientas Personalizar Teclado.

En esta seccin se podrn configurar las teclas rpidas, esto facilitara a la hora de editar
documentos, por ejemplo CTR + K, CTR + N, etc., son usadas para agilizar la edicin del
texto, en este caso, poniendo en negrita y/o cursiva el texto seleccionado. As el uso de teclas

214

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

rpidas configuradas en esta pestaa, facilitan o agilizan bastante el uso del procesador de
texto .
8

Barras de Herramientas
Las barras de herramientas (por defecto, estn visibles las barras: Estndar y Formato)
se pueden activar o colocar en el panel desde el men: Ver Barras de Herramientas
[...]. Las cuales son configurables desde:

Ver Barra de Herramientas Personalizar.

Click derecho Personalizar Barra de Herramienta.

Herramientas Personalizar.

En el asistente de configuracin se debe seleccionar la barra a editar, luego:

Si el elemento esta en la lista, solo hay que asegurarse que este tildado.

Si no lo esta, hay que Agregar...

OPCIONES

Herramientas Opciones.

Aqu, las configuraciones son muchas y complejas, abarca desde el tiempo que tarda en
guardar el archivo (copia de seguridad), hasta formato por defecto que se usar para guardar
el documento .
10

Bsicamente todo tipo de configuracin que se quiera realizar sobre el procesador de


texto (no sobre el documento) se realizarn aqu (Opciones) y en Personalizar.

Formateo de texto
Para este tema, en OpenOffice, la palabra clave es Carcter. Para editar el formato del
texto:

Click derecho Carcter.

Formato Carcter.

11

En esta ventana las configuraciones principales son:

Fuente: tipografa, tamao.

Efectos: subrayado, relieve, maysculas.

Fondos.

Pero es importante recalcar que en la barra de herramientas es comn tener estas


opciones adems de otras, como por ejemplo superndices o subndices.

Corrector Ortogrfico
Se usa para estar seguro de que el texto escrito este correcto. Generalmente se desea:

Cambiar idioma de un texto o una palabra:

Efectuar una correccin asistida:

215

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Para esto primero hay que configurar el corrector (por defecto se encontrar en el idioma
del sistema operativo):

Herramientas Idioma [] Idioma a usar.

En la barra de estado

El corrector ortogrfico generalmente esta activo, en tal caso habr un icono en la barra
de herramientas que permitir desactivarlo, o en caso contrario activarlo, indicando la
activacin o no del corrector ortogrfico. Si no est el icono es porque alguien ha modificado
la barra de herramientas o no est la barra de herramienta estndar.
Cabe destacar que ste corrector es de ortografa nada mas. Existen extensiones para
OpenOffice Writer, como LanguageTool, que es una herramienta de correccin gramatical.

Estilos y Formatos de Textos

GENERALIDADES
Porque es til usar Estilos y Formatos: Porque una vez configurado, con simples
combinaciones de teclas o simples click, se podr cambiar la configuracin de los textos y/o
pginas seleccionadas, cuyos cambios abarcan muchos aspectos (como estilos de prrafo,
pgina, formatos, carcter, etc.).
Existen distinto tipos de estilos ya configurados, como ser: encabezado1, encabezado2,
cuerpo de textos, predeterminados, contenido de tabla, etc., que estn listos para ser usados.
Estos estilos sern usado automticamente en ciertas acciones, como por ejemplo: cuerpo
de texto ser usado en documentos, Ilustraciones en grficas o figuras, Pie de pgina en notas
al pie, texto de tablas en tablas, etc. Entonces, si se modifican los estilos, automticamente
se estarn usando configuraciones a gusto de cada uno, en todo el documento.
Muchas caractersticas que posee OpenOffice en general, requieren que el usuario sepa
usar esos estilos, ya sean de pginas, de prrafos, de carcter, etc. Por ejemplo, si se quiere
que la cartula de un documento no este usando el pie de pgina pero si el resto del
documento, es necesario usar estilos diferentes.

COMO USAR LOS ENCABEZADOS


Mtodo clsico usando el mousse y la barra de herramientas en el cuadro de
Aplicar estilos.

Usando F11 para abrir el gestor de estilos y formatos.

Usando las teclas rpidas CTR + [1 2 3 4] para los distintos estilos de


encabezados. El texto normal (Cuerpo de texto) siempre con CTR + 0.
Cuando estemos usando numeracin de captulos (se ver mas adelante):
ubicando el cursor al principio del encabezado y presiono TAB o SHIFT + TAB
provoca el cambio de estilos.

216

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

EDITAR ESTILOS Y FORMATOS


Para editar los Estilos y Formatos se tendr que estar usando un estilo determinado,
luego, hacer click derecho sobre el prrafo Editar estilo de prrafo. Este mtodo tiene
muchas opciones reagrupadas y a veces suelen prestar a confusin.
12

Otra forma de editar es: Editar un texto cualquiera, configurar de la forma ya vista su
preferencia de prrafo, de carcter, etc., luego presionando F11 o yendo a Formato
Estilos y Formatos se selecciona el nombre del estilo que se quiere editar (ejemplo:
Encabezado 1) y luego Actualizar estilos.
Entonces: Para Editar los Estilos de Prrafo hay que Actualizar Estilos de Prrafos.

CONSEJOS
Para Encabezados

Configuraciones de Prrafo:

Espacio entre prrafo.

Que este tildada la casilla mantener prrafos juntos .


13

Para Cuerpo de Textos

Configuraciones de Prrafo:

Espacio entre prrafo.

Que NO este tildada la casilla mantener prrafos juntos .


14

Configuracin de interlineado que sea mayor que simples y


Separacin entre prrafos (facilita la lectura)

Configurar el flujo del texto en modo justificado (para informes).

NUMERACIN EN LOS ENCABEZADOS


Esto hace referencia a enumerar captulos, ttulos subttulos, figuras, etc. Como se puede
ver en este documento, en los encabezado se ha usado una numeracin. Para editarla hay que
ir a:
Herramienta Numeracin de Captulos.
Ya en la ventana, en la primer pestaa, se configura la forma de la numeracin, el nivel
usado, el texto que ira antes y despus, etc., para los distintos estilos que se requiera. En la
segunda pestaa se configura la posicin y el espaciado (en muchos casos, es til cambiar
Tabulacin por Espacio).
Tambin se podr insertar la numeracin en los captulos de la misma forma que se inserta
una numeracin en un texto cualquiera, como se explica mas adelante (seccin 7 ). Este
puede ser un mtodo mas fcil pero a la vez NO tan configurable.

Formatos de Pginas
En esta seccin se tratar de explicar sobre un tema que ya fue mencionado, se ah
insinuado que cada pagina puede estar configurada de forma diferente, esto se logra con los

217

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

estilos y formatos distintos para cada pgina. La edicin de la los distintos estilos, es similar a
la edicin de estilos para prrafos:
En complemento a las configuraciones dichas anteriormente (seccin 1.1 ). Lo
que se necesita es guardar las configuraciones hechas en un estilo. Si se esta
trabajando con un estilo, ya sea predeterminado o seleccionado manualmente, al
editarlo se ir guardando, pero si se quiere editar adems otro estilo, se tendr que
cambiar.

Para usar un determinado estilo, es conveniente usar la barra de estado (ver ).

Con F11 o Estilos y Formatos. Se abre el gestor de formatos, en la cuarta


pestaa (estilos de pginas), se podr elegir el estilo deseado. Tambin, una vez
configurada la pagina a gusto, se usa para actualizar algn estilo, en este caso de
pgina.

Uso de Plantillas
La configuracin de distintos estilos que se usarn en todo el documento puede ser
laboriosa, si a esto se le agrega encabezados y/o notas al pie, adems de una cartula
predeterminada, es efectivamente trabajoso. Es til en esos casos, y que el documento tiene
un formato nico, usar distintas plantillas, para crear dichos documentos de textos.
Una plantilla es un documento que contiene estilos de formato especficos, imgenes,
tablas, objetos y cualquier otra informacin. Una plantilla se usa como base para crear otros
documentos. Por ejemplo, puede definir estilos de prrafo y de carcter en un documento,
guardarlo como plantilla y usarlo para crear un nuevo documento con los mismos estilos.

GUARDAR UNA PLANTILLA

Crear un documento y aadir los estilos de contenido y de formato que se desee.

Archivo Plantillas Guardar.

CARGAR UNA PLANTILLA

Archivo Nuevo Plantillas y documentos.

Despus de seleccionar la plantilla deseada, se abrir un nuevo documento que ser igual
al archivo que se ha guardado. Por lo tanto cabe preguntarse que conviene guardar:

Principalmente los formatos de estilos y pginas

Cartulas que se usaran en los informes

Otras: como encabezados o pie de pgina, etc. En general es mas fcil borrar
algo que crearlo.

USAR UNA PLANTILLA COMO PREDETERMINADA


Para predeterminar una plantilla, se debe:

Tener la plantilla ya guardada

Ir al administrador de plantillas: Archivo Plantillas Administrar.

218

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Seleccionar la plantilla deseada, luego: Comandos Definir como plantilla


predeterminada.
Entonces de esta forma cada vez que se cree un documento nuevo se estar usando una
plantilla, que es la que se ha creado y puesto como predeterminada.
Esta plantilla es nada mas que para el documento, para aspectos del procesador de texto
ver las secciones 1.3 y 1.4 .

Numeracin y Vietas

Mtodo clsico:

Click derecho Numeracin y vietas.

Agregamos un icono en la barra de herramienta.

En esta ventana de configuracin, se pueden configurar varios aspectos entre ellos:

Tipo de numeracin

Esquema

Imagen

Niveles

Opciones, etc.

Otros mtodos de insertar o modificar vietas son:


Es til, en los casos que se usen muy a menudo, configurar teclas rpidas. La
forma es: Herramientas Personalizar... Teclado, usando CTR + [5 6 7 8] por
ejemplo.
Una vez que estas usando vietas, podes usar TAB o SHIFT + TAB para
cambiar de niveles. Esto es: Con el cursor al inicio del prrafo presionas TAB para
subir de nivel o SHIFT + TAB para bajar.

Insertar Imagen
Insertar Imagen a partir de archivos. Tambin es una buena forma de insertar las
imgenes arrastrndolas desde un navegador de archivos o copindolas desde portapapeles.

CONFIGURAR LAS IMGENES


Una vez insertada, es importante configurar (Doble click o Click derecho Imagen).
Entre las preferencias y caractersticas se pueden encontrar:

Opcin de redimensionamiento (importante es mantener proporciones)

Recortar

Modo en que se integrar la imagen con el texto y el resto de los objetos. En la


pestaa Ajustes predeterminaciones (Ninguno, Dinmico, Detrs, etc.)
Teniendo seleccionada la imagen, aparece una nueva barra de preferencia, esta
tiene cosas simples pero muy tiles, como ser:

Filtro: invertir, suavizar, aumentar nitidez, etc.

Modo de grfico: escalas de grises, etc.

219

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Color: ajusta el color, contraste, brillo, etc.

Transparencia.

Reflejar horizontalmente y verticalmente

Estas opciones no son muy avanzadas como un editor de imagen, pero podrn de manera
simples convertir una imagen oscura en una que pueda ser imprimible sin problemas.

Titulo de Imagen
Click derecho sobre la imagen Titulo entonces se abre un asistente.

Figura 8.1: Esta imagen es de un software

En la casilla Categoras (del asistente) se podr crear un nuevo tema, en este caso se
cre Figura.
Caractersticas del Titulo: Si se cre una nueva categora, llamada Figura, una vez
insertado el titulo de la imagen, se crear un nuevo estilo llamado Figura, el cual se podr
editar al igual que se editan los dems estilos.

Insertar Tablas
Para insertar una tabla:
Insertar Tabla. Entonces se abrir un asistente que permitir seleccionar las
columnas y filas, tambin se tendr una opcin de auto formateo (tablas
preformateada).
Las tablas son como un prrafo especial, de forma que cuando seleccionamos texto
utilizando el teclado (SHIFT + Flecha) desde encima de la tabla, la tabla entera es
seleccionada junto con la lnea por debajo de ella.
Al insertar una tabla, el contenido de sta respeta un estilo y formato predeterminado,
en este caso el se llama contenido de la tabla.
El uso es intuitivo. Haciendo click derecho sobre ella aparecer un men contextual que
tendr opciones distintas y algunas conocidas.
Entre las opciones principales se encuentran:
Celda: En
seleccionada/s:

est

se

puede

cambiar

las

caractersticas

Unir, dividir vertical, dividir horizontal, etc.

Ubicar el contenido arriba, abajo, etc.

de

la/s

celda/s

Filas y columnas: En estos submenues se configurarn aspectos que


relacionan toda la fila o toda la columna.
Tabla: este abrir una ventana que contendr opciones conocidas y usadas (por
ejemplo el uso de bordes).

220

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Objetos OLE
Son bsicamente cualquier archivo hecho en OpenOffice que pueden ser insertados en un
documento. Para insertar un objeto OLE: Insertar Objeto Objeto OLE []. En esta
ventana se observaran distintas categoras, de las que veremos:

Formulas.

Hoja de Clculo.

Dibujos.

Los Objetos OLE tendrn en el documento en el cual fueron insertados un aspecto


semejante a una imagen o grfico (la configuracin principal estar en vez de click derecho
Imagen en Click derecho Objeto) pero su contenido podr ser editado y tendr las mismas
herramientas que en CALC, DRAW o MATH. Por tal caso siempre podremos editar el Objeto
OLE en el mismo documento (editor empotrado) o abrindolo externamente (Objeto OLE
externamente).
Tambin, y respaldando lo que se ha dicho, se podr insertar un ttulo en un Objeto OLE,
al igual que en las Imgenes, esto ser til para el caso de tablas de clculos, diagramas y
dibujos.

INSERTAR FORMULA
Para insertar la formula (con un nmero y que ste pueda ser usado para referencia) como
a continuacin:
(1)
Usando auto-texto, hay que escribir nm y presionar F3. En ste mtodo lo que se esta
haciendo es uso de un auto-texto, ste a su vez inserta una tabla de dos columnas por una fila
(con una distribucin predeterminada) en la cual contiene un objeto (formula) y otro un texto
(ver ) que se ira actualizando para cada frmula.
Otra forma de insertar una formulas es:
Insertar Objeto Formula. Pero este mtodo no tendr todas las caractersticas que
posee el anterior.

Editar formulas
Para esto se puede hacer con Doble click, en este caso se usar el editor de formula
empotrado. Tambin se puede usar el editor externo (click derecho Activar objeto OLE
externamente). El uso del editor es tanto grfico (no tan intuitivo) como por comandos (muy
til y el ms usado) .
15

INSERTAR HOJAS DE CLCULO


Una tabla hecha en CALC remplaza en cualquier aspecto a la vista anteriormente (9 ).
Para insertar una tabla hecha en calc o crear una nueva tabla se usan bsicamente dos
mtodos:

Hacer la tabla en la hoja de clculo calc y luego copiarla desde all.

Insertar Objeto Objeto OLE Hoja de clculo.

221

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Cualquiera de estos mtodos, insertarn un objeto OLE, que es tratado como todos en
OpenOffice.

Editar las Hojas


Para editar las hojas, el proceso es tal cual el de 10.1.1 .
Las caractersticas que posee CALC son muchas y ser necesario otra gua para cubrir ese
aspecto.

INSERTAR DIBUJOS
El proceso de insertar un dibujo es repetido al de Hoja de calculo. No remplaza Insertar
una Imagen ya que es otro tema.
Lo importante es saber que la edicin del dibujo se har desde la edicin externa (activar
Objeto OLE externamente) que sera Dibujo (DRAW) o desde su correspondiente editor
empotrado. Pero la forma en que se integrar este en el documento es semejante a la de una
imagen .
16

Uso de Teclas
Se tratarn uso de las teclas direccionales, combinaciones de teclas que agilizan la edicin
de los documentos.

MOVIMIENTO Y SELECCIONES
Estas teclas o combinaciones de ellas, son tiles para los procesadores de textos (Writer),
tanto como para editores de textos (mousepad, leafpad, kwriter, kate, etc.) o IDEs de
programacin (anjuta, geany, glade, gambas, etc.).
Up, down, left y rigth: Permite movimientos hacia arriba, abajo,
izquierda y derecha (un carcter).
Page Up y page down: Permite movimientos por paginas hacia
arriba y abajo respectivamente.
Home o Inicio y End o Fin: Movimiento al Principio y al final del
rengln.
Efecto de la tecla SHIFT: Se usa para seleccionar el texto desde donde estaba
el cursor anteriormente a donde esta despus del movimiento.

Efecto de la tecla CTR: Usada como multiplicador de efecto, es decir:


CTR + [Up, down, left y rigth]: Los movimientos hacia arriba y
abajo se realizan por prrafos; de izquierda y derecha por palabras.
CTR + [Home y End]: Movimiento al Principio y al final del
documento.

Si se combinan los efectos de CTR y SHIFT, funcionaria como seleccionador y a


la vez multiplicador de efectos. A modo de ejemplo:
CTR + Home y despus CTR + SHIFT + End: Seleccionara todo el documento.

222

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

COMBINACIONES DE TECLAS
Estas configuraciones estn por defecto configurada segn el idioma que se usa en el
sistema, a veces por motivos desconocidos las combinaciones de teclas son en ingles aunque
el sistema operativo este en espaol, algunos ejemplos son:
Ingls

Espaol

Que hace?

CTR + A

CTR + E

Selecciona todo el texto

CTR + B

CTR + N

Pone en Negrita

CTR + I

CTR + K

Pone en cursiva

CTR + S

CTR + G

Guarda el documento

CTR + SHIFT + P

CTR + SHIFT + P

Superndices

CTR + SHIFT + B

CTR + SHIFT + B

Subndices

CTR + F

CTR + F

Buscar/Remplazar

Adems es posible modificarlas, como se ha tratado en la seccin 1.3.1 .

CREAR NDICES
Un aspecto a tener en cuenta es que cuando queramos crear un ndice, Los niveles de
configurados en Numeracin de Captulos sern los niveles del ndice.
Para crear un ndice basta con:

Usar los estilos y formatos

Configurar los niveles (en caso de que se haya usado encabezado [1 2 3 ] no


es necesario).

Insertar ndices y seguir el asistente.

Editar el contenido del ndice


Podemos despus de insertar un ndice, editarlo, para esto en el momento de insertar,
deberamos haber desmarcado la opcin Protegido contra modificaciones manuales.

Editar el estilo del ndice


Despus de insertar el ndice podemos editar los estilos de los distintos niveles, para ello
la forma mas fcil es haciendo click derecho sobre la linea que tiene el estilo que se quiere
modificar, luego editar estilo de prrafo (ver 4.3 ).

Actualizar
Herramientas Actualizar [Campos, Todos los ndices...]
Si se realiza una edicin manual del ndice, sta es sobre-escrita al actualizar el ndice o al
actualizar todo.

223

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

SOBRE LA NUMERACIN DE LAS FIGURAS Y LAS GRFICAS


Si se desea que los objetos tengan una numeracin que siga al captulo (por ejemplo
Figura 3.1.1)se tendr que modificar la forma de insertar el ttulo de la figura:
Click derecho Ttulo Opciones. Y aqu hay que configurar el nivel (nivel uno: sigue
al titulo, nivel dos: sigue al subtitulo...).
Para configurar la numeracin de las formulas (por ejemplo 3.1.1), hay que poner el cursor
en frente del nmero y:
Click derecho Campos Opciones. Y aqu se configura el nivel.

USO DE REFERENCIAS
Insertar Referencia.
Esta es til para documentos largos. Por ejemplo: se inserta una nueva seccin en medio
del documento, por lo tanto cambiara la numeracin y la referencia, entonces, se debe
cambiar manualmente la referencia (si es que esta no se esta usando) y muchas veces recin
despus de imprimir el trabajo nos damos cuenta que se esta haciendo mal la referencia.

INSERTAR SALTO DE PGINA


Como es obvio: Insertar salto de pgina. Es muy simples, pero hay aclaraciones que
son validas en ciertos casos:
Si se quiere insertar una cartula o ndices se puede insertar la pgina con un
estilo distinto (generalmente primera pgina o ndices).
Insertar la pgina pero que la numeracin de pagina empiece en un valor
determinado.

Insertar pgina de forma Horizontal (es un estilo de pgina).

BARRA DE ESTADO
La barra de estado puede estar de modo visible o no (men ver barra de estado). En
ella se encuentran:

Nmero de pgina: Ver la cantidad de pginas y en que pgina se est situado.

Estilo de la pgina: Ver el estilo usado y con click derecho permite cambiar el
estilo.
Idioma: Ver el idioma usado y con click derecho permite cambiar el Idioma ya
sea para una seleccin, una palabra o el texto completo.

Modo de insercin (tecla insert), sobrescribe el carcter que sucede al cursor.

Nivel de numeracin o vieta.

Escala o Ampliacin: permite ajustar la escala del documento.

GUARDAR COMO PDF


En OpenOffice es fcil exportar cualquier archivo como pdf, para ello:

224

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Icono en la barra de herramientas estndar.

Archivo exportar.

Archivo Imprimir imprimir en archivo (esta opcin exporta todo el


contenido como imagen).
1Sobre la pgina que se quiera editar.
2Puede ser para numerar las pginas con letras, con nmeros romanos, etc.
3No solamente textos, pueden ser grficos, formulas, etc.
4No todos los encabezados o pie de pgina son los mismos en el documento. Se podrn tener por ejemplo pginas
con encabezados y paginas sin.
5Para esto: Insertar Campos [Fecha, Hora Nmero de Pgina, Total de Pgina, etc.]
6Sobre la pgina que queremos editar, (la edicin de Prrafo siempre esta asociada a un determinado Estilo de Pgina,
al igual que la edicin de Pgina).
7Se ver en la seccin 10 consejos que hacen uso de esta caracterstica.
8Se puede usar las combinaciones de teclas disponibles para una accin determinada. Por ejemplo CTR + SHIFT +
N para insertar Notas.
9Sobre la barra que se quiera editar.
10Herramientas Opciones Cargar/Guardar General. Aqu se puede configurar para que automticamente
guarde en un formato compatible con Word .doc.
11Despus de seleccionar el texto a formatear.
12 Por ejemplo en sus opciones estn las configuraciones de carcter, de pgina y de prrafo juntas.
13De esta manera el Titulo o subttulo siempre tendr un texto debajo (no quedar solo y el texto en la pgina
siguiente).
14Esta opcin trabaja en conjunto con la del encabezado, si esta no se respeta, no funciona la otra.
15Es til porque conociendo palabras claves y usando las llaves y comandos se puede escribir mas rpido que
seleccionando con el mousse los distintos signos y/o smbolos.
16Se vuelve a repetir para que quede en claro, ya que es una de las confusiones principales a la hora de insertar un
dibujo hecho en DRAW.

225

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

6.2. Hoja de Clculo Calc


Planilla de Clculo
En una planilla de clculo se pueden ingresar valores, rtulos, frmulas matemticas, estadsticas,
financieras, clculos de ingeniera, etc.
Se pueden aplicar las frmulas sobre los datos de entrada nos devolver los resultados.
La principal ventaja de una planilla de clculo es que, una vez establecidas las frmulas, al cambiar
los datos de entrada podremos ver inmediatamente las consecuencias del cambio en los resultados.
De esta forma podremos analizar inversiones, esquemas de tiempo, organizaciones de produccin y
en base a esto tomar las decisiones correspondientes.
Partes de una planilla de Clculo:
Hoja: Est formada por filas y columnas.
Celda: Interseccin de una fila con una columna.
Celda Activa: Donde est posicionado el cursor.
Rango: conjuntos de Celdas.
Libro: conjunto de hojas
Funciones/Formulas: expresiones que vinculan Celdas y otros elementos
Una archivo de planilla de Clculo esta formado por varias hojas. Cada hoja tiene columnas y filas.
La interseccin de una fila y una columna es una Celda.
Cada Celda puede contener: Texto, Valores Numricos, Funciones , Frmulas.
Cada Fila de una hoja suele tener como nombre un nmero.. (1,2,3....) y cada columna de esa hoja
una letra ( A,B,C...) as que cada celda al ser la interseccin de una fila con una columna recibe el
nombre de ambas, por ejemplo para referirnos a la celda que resulta de la interseccin de la fila 2
con la columna B lo haremos con B2.

Como una hoja de Clculo puede contener varias hojas..estas tendrn nombres.. de esta manera se
puede indentificar a cada celda de cada hoja. Estos nombres se pueden personalizar, los nombres de
las hojas de clculo se pueden ver en la parte inferior de cada hoja.

Una formula es una expresin que escribimos en una celda , por ejemplo en la Celda B3 ,
escribimos
B2+B1, esto quiere decir que el contenido o lo que vemos en la celda B ser la suma de el
contenido de B2 mas el contenido de B1 , ya veremos mas al respecto mas adelante.

226

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Una funcin es una frmula que utiliza un lenguaje propio de la planilla de clculo, que permite
hacer operaciones mas compleja. (promedios, mximos, mnimos, etc). Mas adelante veremos mas
en detalle el uso de funciones.

La cantidad de Filas y Columnas para cada hoja dependen de la aplicacin, por ejemplo:
Open Office

Excel

cantidad de filas
cantidad de
columnas
Partes de la Interfase de la Planilla de Clculo:
Veremos a continuacin las partes de la interfase de una planilla de cculo del Open Office.

Podemo
s ver
tambin
las
barras
Barra de
de
herramient
desplaz
amiento
horizont
al y
vertical
de la
Ventana
. Sobre
Ho
la parte
inferior
izquierd
a
podemo
s ver:

Estas flechas nos permiten avanzar a la siguiente , ultima o anterior y primer hoja de clculo.
A continuacin describiremos el uso de cada una de las partes vistas:
Barra de Frmula:

227

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Es la Barra situada en la parte superior de la ventana o area de trabajo, que se utiliza para introducir
o modificar los valores o las frmulas de las celdas o los grficos. Muestra el valor constante o la
frmula utilizada en la celda activa.
Se puede mostrar u ocultar la barra de frmulas, en Open Office Ver->Barra de Herramientas>Formula.
Cuadro de Nombre:
Es el nombre que tiene la celda. Este nombre se puede personalizar, por ejemplo se podra llamar
una celda: temp_amb, para que en ella escribamos el valor de la temperatura ambiente. Esto sirve
por que luego en una formula o funcin se podra usar el nombre personalizado lo que mejorara la
compresin de la formula.
Celda Activa:
Celda donde esta el cursor. Lo que escribamos se ubicara en esta celda.
Barra de Herramientas:
Esta barra sirve para agilizar el acceso a comando usados con mayor frecuencia. Se puede
personalizar el contenido de la misma.
Barra de Estado:
Se puede visualizar distintas opciones. Cantidad de hojas ( ej: 2/13) , Escala de Visualizacin,
Promedio , Suma , Cantidad de un rango celdas Seleccionados.
Men:
Debajo de la barra de ttulos de la Ventana , encontramos la Barra de Men, similar al de cualquier
otra aplicacin, pulsando con el puntero del Mouse sobre cualquiera de sus opciones se descolgara
hacia abajo un men de tipo persiana con una serie de comandos y funciones relacionadas con dicha
opcin. Estando el men desplegado con las teclas Flecha abajo/arriba nos movemos entre las
opciones, con las teclas Flecha derecha/izquierda nos movemos entre los menes, con la tecla
ENTER se elige una opcin y con la tecla ESC se sale del men.
Tambin podemos acceder al men presionando ALT + Primer letra del men deseado.

Referencias relativas y absolutas


En una hoja se usan habitualmente formulas para realizar operaciones, suele se de mucha utilidad
transportar copiar esta formula a otras celda pero se quiere que los valores de la frmula se vayan
modificando , veamos un ejemplo:

Podemos ver que en la celda D7 contiene la suma


de B7+C7 , y en la otra imagen la Celda D8 contiene la suma de B8+C8. En las planillas de Clculo
esto se logra haciendo un click & drag sobre
el vrtice inferior derecho de la celda que tiene la frmula.
Veamos como sera:

228

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Podemos ver que en la celda E1 esta la Frmula D1*C1


Solo para resaltar vemos que el cursor en la esquina inferior de la
celda cambia la forma , en realidad en de color negro pero para
resaltar en el dibujo lo hemos dejado de color rojo. Si
presionamos
el botn izquierdo del mouse y arrastramos.
Veremos que se completando la formula, pero se va rellenando de
manera que la celda E2 = D2*C2 ,

la celda E3 =D3*C3

Entonces se puede ver que las referencias a las celdas se ajustaban al copiar las frmulas: este tipo
de referencias se llaman referencias relativas, y son las ms corrientes. Sin embargo, en ocasiones
nos interesa usar referencias absolutas, es decir, referencias que no se ajustan al copiar una frmula
de una celda a otra: para ello, ponemos el carcter $ delante de la referencia a la columna, a la fila, o
a ambas, segn nos interese mantener fija la referencia a la columna, a la fila, o tanto a la columna
como a la fila. Por ejemplo:
Referencia relativa
B2
Referencia absoluta a la columna
$B2
Referencia absoluta a la fila
B$2
Referencia absoluta (a la columna y la fila) $B$2

Funciones y Frmulas
En realidad hacemos una diferencia respecto de formula y funcin , una formula es una expresin
que escribimos en una celda , por ejemplo en la Celda B3 , escribimos B2+B1, esto quiere decir que
el contenido o lo que vemos en la celda B ser la suma de el contenido de B2 mas el contenido de
B1 , y consideramos funcin una expresin que es propia de la planilla de calculo , como ser la
funcin suma. Veamos un ejemplo de esto:
Frmula

Funcin

En general todas las planillas de clculo poseen muchas funciones que estn agrupadas por
"categoras" , es decir las lgicas, trigonomtricas, matemticas, estadsticas, etc.

229

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

Para cada una de estas suele existir una pequea ayuda sobre su utilizacin , suele ser algo as como
la imagen que se muestra a continuacin:

Esto permite entender la Sintaxis de la frmula, la cual hay que respetar para poder usarla.
A modo de ejemplo vamos a comentar sobre algunas de las planillas de clculo que existen hoy en
da como ser el Excel de Microsoft y la que usaremos en este curso de Calc Open Office.
No intentaremos comparar o calificar a cada uno de ellos , no viene al caso , simplemente
mencionaremos caractersticas de Open Office Calc y algunas parecidas o distintas del Excel ya que
este esta muy difundido.
Este programa de hoja de clculo ; Calc viene incluido en la suite completa de Open Office desde
el nacimiento de esta y al igual que los otros programas de la suite como ser :
Write - Procesador de Texto
Impress - Presentaciones
Base - Base de Datos
Las extensiones de estas
aplicaiones de la Suite
Ofimtica de
OpenOffice.org son:

Esta suite de programas est disponible para un nmero de plataformas ms amplio y lo mas
importante tiene una licencia libre.
Veamos una comparativa de las caractersticas del Software propietario contra el Software libre:

230

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

En particular ahora nos referiremos a Calc que nos presenta una interfaz similar a la vista en
anteriores de la planilla de Microsoft Excel , decimos esto por que la ltima versin del Excel (
2007) se modific bastante , las diferentes funciones del programa son accesibles desde la barra de
mens despegables de la parte superior de la pantalla , como cualquier sistema de ventanas.
Algunas de las caractersticas de Calc frente a Excel son, por ejemplo, la gran cantidad de formatos
que el programa es capaz de abrir (incluyendo el formato .xls de Excel y los propios formatos de
Calc, entre otros), esto no es as con el Excel que no permite guardar en un formato por ejemplo
como el del Calc (ods).
Adems, podemos realizar tambin todo tipo de clculos a travs de su editor de frmulas, que nos
permitir tratar incluso con nmeros complejos (imaginarios) o con funciones estadsticas
financieras. Posee adems un editor de grficas, que al igual que en Excel nos permitir generar
grficas a partir de los datos introducidos previamente y representarlos del modo que queramos.
Al igual que pasaba con Writer (Procesador de Texto del Open Office) , Calc puede salvar nuestro
trabajo directamente en formato PDF, esto no es as en su competidor , ajustando las hojas de
clculo al formato que le indiquemos.

A modo de ejemplo vamos a comentar las Equivalencias de los Trminos usados en cada una de las
suites Ofimtica ( OpenOffice.org , Microsoft)

231

TALLER DE INFORMTICA

CAPITULO 6. Aplicaciones

232

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

CAPITULO 7
CONCEPTOS DE REDES E INTERNET
FALTARIA UNA INTRODUCCION

A partir de ac hay que organizar ttulos y estilos como


corresponda. Solo est el contenido, que tambin se debe
revisar o completar segn lo planificado
En este capitulo faltan los ejercicios
7.1. DEFINICIONES
7.1.1. Telecomunicaciones
Las telecomunicaciones pueden definirse como comunicacin de informacin por medios electrnicos,
normalmente a cierta distancia.
Anteriormente, las telecomunicaciones significaban transmisin de voz mediante lneas telefnicas. En la
actualidad, muchas de las transmisiones de telecomunicaciones son de informacin digital, usando las
computadoras para la transmisin de datos.
Un sistema de telecomunicaciones es un conjunto de software y hardware compatibles ordenados
para comunicar informacin de un lugar a otro.
Estos sistemas pueden transmitir textos, grfico, imgenes, voz o video.

Componentes de un sistema de telecomunicaciones

Computadoras: para procesar la informacin.


Dispositivos de E/S: para enviar o recibir datos.
Canales de comunicacin: son los enlaces mediante los que se transmiten los datos entre
los dispositivos de emisin y recepcin en una red.
Procesadores de comunicacin: como mdems que proporcionan las funciones de
soporte para la transmisin y recepcin de los datos.
Software de comunicaciones: controla las actividades de E/S y maneja otras funciones
de la red de comunicaciones.

Funciones de los sistemas de telecomunicaciones

Transmitir informacin
Establecer la interfase entre emisor y el receptor
Enviar mensajes a travs de los caminos ms eficaces

233

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Realizar el procesamiento preliminar de la informacin para asegurar que el mensaje


correcto llegue al receptor adecuado
Editar los datos, verificar errores, reordenar el formato
Convertir las velocidades de una a otra, ejemplo de la lnea a la de la computadora
Controlar el flujo de informacin

7.1.2. Protocolos
Una red tpica de telecomunicaciones contiene diferentes componentes de hardware y software que
deben trabajar en conjunto para transmitir informacin; estos componentes deben adherirse a un conjunto
comn de reglas que permiten que se comuniquen entre ellos.
Protocolo es el conjunto de reglas y procedimientos que gobiernan la transmisin entre dos puntos de
una red.
Funciones principales:

Identificar cada dispositivo de la ruta de comunicaciones para asegurar la atencin del otro
dispositivo
Verificar la correcta recepcin del mensaje transmitido
Verificar que el mensaje requiere retransmisin porque no puede ser correctamente
interpretado
Realizar la recuperacin cuando tenga errores.

7.1.3. Tipos de Seales


La informacin viaja en un sistema de telecomunicaciones en forma de seales
electromagnticas.
Hay dos tipos de seales:

Analgica: se representa por una onda continua que pasa por un medio de comunicacin.
Para comunicaciones de voz.
Digital: es una forma de onda, mas bien discreta que continua, que transmite datos
codificados en dos estados discretos (1 bit y 0 bit) que se representan por dos pulsos
elctricos de encendido y apagado. Las usan las computadoras.

Las seales digitales deben ser traducidas a analgicas antes de ser transmitidas en un sistema
analgico.
El mdem es el dispositivo utilizado para traducir las seales digitales de la computadora a las
seales analgicas de la lnea telefnica y viceversa.

7.1.4. Canales de comunicacin


Los canales de comunicacin son los medios mediante los cuales los datos se transmiten de
un dispositivo de red a otros.
Un canal puede utilizar diferentes medios de transmisin de telecomunicaciones: par
trenzado, cable coaxial, fibra ptica, microondas terrestres, satlite.

234

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

a) Par trenzado
Es un medio de transmisin que consiste en pares de alambre de cobre torcidos. Se emplea para la
transmisin analgica de conversaciones telefnicas pero puede ser usado para transmisin de datos.
Ventajas / Desventajas: bajo costo, relativamente lento, tiene interferencia. Velocidad hasta los 10
megabits por seg.

b) Cable coaxial
Es un medio de transmisin que consiste en un alambre de cobre con un gran espesor de aislamiento.
Puede transmitir rpidamente grandes volmenes de datos.
Ventajas / Desventajas: es ms rpido, menos interferencia, velocidad de hasta 200 Megabits por
seg. Es grueso, difcil de instalar, no soporta conversaciones analgicas de telfonos, se debe mover al
mover las computadoras.

c) Fibra ptica
Consiste en haces de fibra de vidrio transparente, delgados que se unen en cables. Los datos se
transmiten en pulsos de luz que se llevan a travs del cable por un dispositivo lser.
Ventajas / Desventajas: velocidad de 500 kilobits por seg. hasta millones de bits por seg. Es ms
rpido, ms ligero, mas durable. Es apropiado para los sistemas donde se transmiten grandes volmenes de
informacin. Es ms cara, ms difcil de trabajar e instalar.

d) Transmisin inalmbrica
Enva seales a travs del aire sin ninguna conexin fsica. Puede ser de microondas terrestres, satlites,
telefona celular.
* Sistemas de microondas terrestres
Transmiten seales de radio de alta frecuencia a travs de la atmsfera. No requiere de cableado, pero
necesita estaciones entre 40 y 50 Km de distancia. Se utiliza para comunicaciones con alto volumen de
datos, larga distancia y de punto a punto.
* Satlites
Transmisin de datos usando satlites orbitales para servir como estaciones de enlace para la
transmisin de seales de microondas a muy largas distancias.

7.1.5. Caractersticas de los Canales de Comunicacin


Ayudan a determinar la eficiencia de y capacidades de un sistema de transmisin de datos.
Entre las caractersticas tenemos:
a) Velocidad de transmisin
Es la cantidad total de informacin que puede ser transmitida a travs de cualquier canal de
comunicacin. Se mide en BPS: bits por seg. Algunas veces esto se conoce como tasa en bauds. Baud
representa un cambio de seal de positivo a negativo o viceversa.
La tasa depende de la frecuencia: el nmero de ciclos por seg. que pueden ser enviados a travs de
ese medio. Se mide en hertz.
La amplitud de banda es otra medida de la capacidad de un canal de comunicaciones medida por la
diferencia entre la ms alta y ms baja frecuencia que puede ser transmitida por un canal.
b) Modos de transmisin
Son convenciones para determinar cuando comienza y cuando termina un carcter.
* Transmisin asncrona: es la transmisin a baja velocidad de datos, de a un carcter por vez. Cada
carcter limitado por el bit de control, un bit de arranque, uno o dos bits de alto y un bit de paridad.

235

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

* Transmisin sncrona: es la transmisin simultnea de alta velocidad de grandes bloques de datos.


Transmite simultneamente grupos de caracteres, con el principio y fin de bloque de caracteres.
c) Direccin de transmisin
Es la direccin del flujo de informacin a travs de la red.
* Direccin simplex: los datos pueden viajar en una sola direccin todo el tiempo.
* Direccin half-duplex: los datos pueden fluir en los dos sentidos, pero solo en una direccin a la
vez.
* Direccin full-duplex: los datos pueden enviarse en las dos direcciones simultneamente.

7.1.6. Funciones del software de telecomunicaciones


Es software especial
telecomunicaciones.

para

controlar

sustentar

las

actividades

de

una

red

de

Las funciones son:

Control de la red: direcciona los mensajes, encabeza las terminales de la red, determina
las prioridades de transmisin, mantiene el registro de actividades y verifica errores.
Control de acceso: establece las conexiones entre las terminales y las computadoras,
establece la velocidad, el modo y la direccin de transmisin.
Control de transmisin: permite enviar y recibir datos, programas, comandos y mensajes.
Control de errores: detecta y corrige los errores, retransmite los datos corregidos.
Seguridad y Control: realiza el seguimiento del uso, los registros, los procedimientos de
autorizacin para evitar el acceso no autorizado de la red.

7.2. REDES DE COMUNICACIONES


7.2.1. Clasificacin
Las redes se pueden clasificar de acuerdo a:

Su forma o topologa:

Su mbito geogrfico:

Estrella

Bus

Anillo

Redes de rea local


Redes de rea amplia

7.2.2. Topologas de las redes


Las tres topologas de redes ms comunes son:

236

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

II.X.2.1. Estrella
Se trata de un nodo central del cul salen los cableados para cada estacin. Las estaciones se
comunican unas con otras a travs del nodo central. Es sencilla de controlar: el software no es
complicado y el flujo de trfico es simple.
Conectar un conjunto de computadoras en estrella es uno de los sistemas mas antiguos,
equivale a tener una computadora central (el Server), encargada de controlar la informacin de
toda la red. Dicha informacin abarca desde los mensajes entre usuarios, datos almacenados en
un archivo en particular, manipulacin de archivos, etc. Para poder instalar este tipo de red, cada
una de las computadoras utilizadas como estaciones de trabajo necesitan de una tarjeta de
conexin para lograr la interfase con la computadora central.

II.X.2.2. Bus
Permite conectar a todas las computadoras de la red en una sola lnea compartiendo el mismo
canal de datos (bus), de ah su nombre.
A fin de poder identificar hacia cual de las computadoras de toda la red se est dirigiendo, se
aade un sufijo al paquete de informacin, este contiene la direccin de la computadora que debe
recibir la informacin en particular. Cada una de las computadoras revisa el mensaje y comparar
la direccin de la terminal de recepcin, en caso de no ser igual a la propia, se rechaza y en caso
de ser igual la direccin, se acepta el mensaje.

237

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

II.X.2.3. Anillo
Recibe su nombre del aspecto circular del flujo de datos.
En muchos casos, el flujo de datos va en una sola direccin. Es decir, una estacin recibe la
seal y la enva a la siguiente estacin del anillo. La topologa en anillo es muy atractiva debido a
que los cuellos de botella son raros.
Adems, la lgica necesaria en una red de este tipo es relativamente simple. Consiste en unir
una serie de computadoras en un circuito cerrado formando un anillo por donde circula la
informacin en una sola direccin, factor que permite tener un control de recepcin de mensajes.

238

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

7.2.3. mbito Geogrfico


7.2.3.1. Redes de rea local - LAN
Las redes de rea local abarcan una distancia limitada, en general un edificio.

La mayora de las LAN conectan dispositivos localizados dentro de un radio de los 670 m
Requieren de sus propios canales de comunicacin.
En general transmiten a razn de 256 Kilobits a 100 Megabits por seg.
Permiten compartir hardware y software.

El servidor de archivos es una computadora en una red que almacena diversos programas
de la red. Determina el acceso u disponibilidad en la red. Contiene el SO de la red.
Sistema Operativo de la red: software que administra el servidor de archivos en una LAN y
direcciona y administra las comunicaciones en la red.
La tecnologa LAN consiste en:

Cableado (par trenzado, coaxial, fibra ptica) o tecnologa inalmbrica que enlaza los
dispositivos individuales de cmputos.
Tarjetas de interfase de redes (adaptadores de la computadora al cable). Especifican la
tasa de transmisin de datos, el tamao de unidades de mensaje, la informacin
direccionada asociada a cada mensaje y la topologa de red.
Software para controlar las actividades de la LAN.

Existen cuatro tecnologas principales de LAN para conectar fsicamente los dispositivos:

Ethernet
Appletalk
Token Ring
ARCnet

Estas tecnologas utilizan una tecnologa de canal de banda base o banda amplia.

Banda base (baseband): es una tecnologa de canales LAN que proporciona una ruta
nica para la transmisin de texto, grficas, voz o video al mismo tiempo.
Banda amplia (broadband): es una tecnologa de canales LAN que proporciona diversas
rutas para la transmisin de texto, grficas, voz o video de manera que distintos tipos de
datos puedan ser transmitidos simultneamente.

Sistema operativo
El SO puede residir en cada una de las computadoras o en un servidor nico de archivos
designado para todas las aplicaciones de la red.
Ejemplo: son el Netware de Novell, PCLan de IBM.

7.2.3.2. Red de rea amplia - WAN


Es una red de gran cobertura en la cual pueden transmitirse datos a larga distancia.
Interconecta facilidades de comunicacin entre diferentes localidades de un pas.
Son generalmente una serie de dispositivos de conmutacin interconectados. Se desarrollan o
bien utilizando tecnologa de conmutacin de circuitos o conmutacin de paquetes.

239

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Tipos de redes WAN


a) Conmutadas por Circuitos:
Para establecer la comunicacin se debe efectuar una llamada y cuando se establece la
conexin, los usuarios disponen de un enlace directo a travs de los distintos segmentos de la red.
Se establece un camino a travs de los nodos de la red dedicado a la interconexin de dos
estaciones. En cada enlace, se dedica un canal lgico a cada conexin. Los datos se transmiten tan
rpido como se pueda.
b) Conmutadas por Mensaje:
El conmutador suele ser una computadora que se encarga de aceptar trfico de los
computadoras y terminales conectados a l. La computadora examina la direccin que aparece en
la cabecera del mensaje hacia el que debe recibirlo. Esta tecnologa permite grabar la informacin
para atenderla despus. El usuario puede borrar, almacenar, redirigir o contestar el mensaje de
forma automtica.
c) Conmutadas por Paquetes:
Los datos de los usuarios se descomponen en trozos ms pequeos. Estos fragmentos o
paquetes, estn insertados dentro de informaciones del protocolo y recorren la red como
entidades independientes. No es necesario reservar canal lgico. En cada nodo, el paquete se
recibe totalmente, se almacena y seguidamente se transmite al siguiente nodo.
d) Redes Orientadas a Conexin:
En estas redes existe el concepto de multiplexin de canales y puertos conocido como circuito
o canal virtual, debido a que el usuario aparenta disponer de un recurso dedicado, cuando en
realidad lo comparte con otros pues lo que ocurre es que atienden a rfagas de trfico de distintos
usuarios.
e) Redes no orientadas a conexin:
Pasan directamente del estado libre al modo de transferencia de datos. Estas redes no ofrecen
confirmaciones, control de flujo ni recuperacin de errores aplicables a toda la red, aunque estas
funciones si existen para cada enlace particular. Un ejemplo de este tipo de red es INTERNET.

7.2.4. Implementacin de una red


Factores a tener en cuenta al momento de decidir qu tecnologa de telecomunicaciones debe
adoptarse:

Distancia entre mquinas.


Margen de servicios que se necesitan
Seguridad
Acceso mltiple (la cantidad de mquinas)
Utilizacin. Frecuencia y volumen de las telecomunicaciones.
Costo
Instalacin
Conectividad

240

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

7.3. Conectividad
Nueva arquitectura de la informacin
Es el ordenamiento de los recursos de software, hardware, telecomunicaciones y datos para
dar ms poder de cmputo sobre el escritorio y crear una red que enlace muchas redes
pequeas.
Es la forma particular que toma la tecnologa de informacin para alcanzar las metas
seleccionadas.
Existen diferentes maneras de entregar poder de cmputo al escritorio.

a) Modelo cliente / servidor


En este modelo el procesamiento de la computadora se divide entre los clientes en una red y
los servidores. Donde cada funcin se asigna a la mquina ms capacitada.
La parte del cliente en una aplicacin, corre en el sistema de cliente y la parte de la aplicacin
del servidor corre en el servidor de archivos.
El usuario interacta con la parte del cliente en la aplicacin:

interfase de usuario
proceso de captura de datos
consulta a bases de datos
obtencin de informes

El servidor realiza funciones no visibles para el usuario

administracin de los perifricos


control de acceso a las bases de datos compartidas.

La divisin de las tareas depende de:

requerimientos de las aplicaciones


requerimientos del procesamiento
cantidad de usuarios
recursos disponibles

Tareas del cliente:

obtencin de las entradas del usuario


solicitudes al servidor de programas y datos
clculos en datos locales
muestra de resultados.

Tareas del servidor:

capturar y/o procesar los datos

Requerimientos:
Los programas deben ser escritos como dos componentes separados de software que corren
en distintas mquinas pero aparecen operando una sola aplicacin.
Caractersticas:
Es difcil escribir software que divida el procesamiento entre clientes y servidores.

Se puede saturar el servidor


Es difcil administrar una red.

241

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

b) Modelo de terminal X
Es una terminal de escritorio controlada centralmente que se usa en una red y que puede
acceder a las operaciones de diversas computadoras remotas de manera simultnea. No son
computadoras con capacidades individuales de procesamiento.
Caractersticas:

Es una solucin ms barata


Requiere de un sistema operativo como UNIX para poder funcionar
Baja el rendimiento cuando se incrementa el nmero de terminales.

7.3.1. Definicin de Conectividad


La meta ltima de la nueva arquitectura de la informacin son las redes a nivel de toda la
empresa, donde toda la informacin digitalizada puede circular a lo largo de una trama continua
de redes electrnicas, que enlazan diferentes tipos de mquinas, personas, sensores, bases de
datos, departamentos, etc.
La meta es difcil porque deben poder trabajar juntos diferentes tipos de hardware, software y
sistemas de comunicaciones.
La conectividad es la capacidad de las computadoras para comunicarse
entre s y compartir informacin de una manera significativa sin la
intervencin del hombre.

7.3.1.1. Aspectos de la Conectividad


Lo que sigue es un listado de trminos utilizados para explicar diferentes aspectos de la
conectividad.

Portabilidad de las aplicaciones (transportabilidad): es la capacidad de operar el


mismo elemento de software en diferentes tipos de hardware.
Migracin: es la capacidad de mover el software de una generacin de hardware a otra
generacin ms poderosa.
Procesamiento cooperativo: es la divisin de tareas entre macrocomputadoras,
minicomputadoras, microcomputadoras o estaciones de trabajo para resolver un problema
nico.
Portabilidad de la informacin: es la capacidad de compartir archivos de computadora
entre distintas plataformas de hardware y aplicaciones de software.
Interoperabilidad: es la capacidad de que un elemento nico de software opere en dos
clases distintas de hardware, y muestre a los usuarios una interfase idntica y realice las
mismas tareas.
Sistemas abiertos: Sistemas de software que pueden operar en distintas plataformas de
hardware porque se construyen sobre sistemas operativos, interfases de usuario, normas de
aplicacin y protocolos de redes pblicas no propietarias.

La conectividad implica sistemas operativos comunes, normas comunes


de telecomunicaciones (y an normas comunes para interfases de usuario),
que la pantalla se vea semejante y poder atravesar las diferentes
aplicaciones de software.

242

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

7.3.2. Normas para la Conectividad


Alcanzar la conectividad implica establecer normas para las redes, sistemas operativos e
interfases de usuario.

Quin establece las normas?


El proceso de establecimiento de normas es en gran medida poltica e involucra a muchos
poderosos grupos de inters.
El NIST (National Institute for Standars and Technology) del gobierno federal de los Estados
Unidos, las asociaciones de ingeniera como la IEEE (Institute of Electrical and Electronic
Engineers) y la ANSI (American National Standars Institute) han estabecido las normas para la
definicin del lenguaje de software, desempeo del hardware y protocolos de comunicacin.
Con la globalizacin de los negocios, las normas internacionales son crticas.
La ISO (Internacional Organization for Standarisation) y la CCITT (International Telephone
and Telegraph Consultative Commitee) han ayudado a legitimar uno de los ms poderosos
modelos conectivos.
El OSI (Open System Inteconnect Reference Model)

7.3.2.1. Modelos de conectividad para redes


Existen diferentes modelos para alcanzar la conectividad en las redes de telecomunicaciones.

Modelo de referencia: es un marco genrico para pensar sobre un problema. Es una


particin lgica de alguna actividad en pasos o partes.

Protocolo: es un enunciado que establece cmo una tarea especfica debe realizarse.

Los modelos de referencia y los protocolos se transforman en normas o estndares cuando


son aprobados por grupos importantes.

7.3.2.1.1. El modelo de referencia OSI


Es un modelo de referencia internacional para enlazar diferentes tipos de computadoras y de
redes. Fue diseado para permitir redes globales con grandes volmenes de procesamiento de
operaciones.
Permite que una computadora conectada en una red se comunique con otra en la misma red o
en otra diferente, independientemente de quien sea el fabricante. Cada computadora que participa
en una red OSI se considera como un dispositivo inteligente no una terminal.
El modelo OSI divide el proceso de telecomunicaciones en siete niveles.

243

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Datos y paquetes de datos:


La informacin que viaja a travs de una red se conoce como paquete, datos o paquete de
datos.
Un paquete de datos es una unidad de informacin, lgicamente agrupada, que se desplaza
entre los sistemas de computacin. Incluye la informacin origen junto con otros elementos
necesarios para hacer que la comunicacin sea factible y confiable en relacin con los dispositivos
destino.
La direccin origen de un paquete especifica la identidad de la computadora que enva el
paquete.
La direccin destino especifica la identidad de la computadora que finalmente recibe el
paquete.

Protocolos
Para que los paquetes de datos puedan viajar desde el origen hasta su destino a travs de una
red, es importante que todos los dispositivos de la red hablen el mismo lenguaje o protocolo.
Un protocolo es un conjunto de reglas que hacen que la comunicacin en una red sea ms
eficiente.
Una definicin tcnica de un protocolo de comunicaciones de datos es: un conjunto de
normas, o un acuerdo, que determina el formato y la transmisin de datos.
La capa n de una computadora se comunica con la capa n de otra computadora.
Las normas y convenciones que se utilizan en esta comunicacin se denominan colectivamente
protocolo de la capa n.

El modelo de referencia OSI


Al principio de su desarrollo, las LAN y WAN eran en cierto modo catico. A principios de la
dcada de los 80 se produjeron tremendos aumentos en la cantidad y el tamao de las redes.
A mediados de los 80, las empresas debieron enfrentar problemas cada vez ms serios debido
a su expansin catica. Resultaba cada vez ms difcil que las redes que usaban diferentes
especificaciones pudieran comunicarse entre s.
Se dieron cuenta que necesitaban salir de los sistemas de networking propietarios.
Los sistemas propietarios se desarrollan, pertenecen y son controlados por organizaciones
privadas. Significa que una empresa o un pequeo grupo de empresas controla el uso de la
tecnologa.
Abierto: significa que el uso libre de la tecnologa est disponible para todos.
Para enfrentar el problema de incompatibilidad de las redes y su imposibilidad de comunicarse
entre s, la Organizacin Internacional para la Normalizacin (ISO) estudi esquemas de
red a fin de encontrar un conjunto de reglas.
Como resultado de esta investigacin, la ISO desarroll un modelo de red que ayudara a los
fabricantes a crear redes que fueran compatibles y que pudieran operar con otras redes.
El modelo de referencia OSI (Nota: No debe confundirse con ISO), lanzado en 1984, fue el
esquema descriptivo que crearon.

244

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Este modelo proporcion a los fabricantes un conjunto de estndares que aseguraron


una mayor compatibilidad e interoperabilidad entre los distintos tipos de tecnologa de
red utilizados por las empresas a nivel mundial.
El modelo de referencia OSI es el modelo principal para las comunicaciones por red.
El modelo de referencia OSI permite que los usuarios vean las funciones de red que se
producen en cada capa.
El modelo de referencia OSI es un marco que se puede utilizar para comprender cmo viaja la
informacin a travs de una red.
Se puede usar el modelo de referencia OSI para visualizar cmo la informacin o los paquetes
de datos viajan desde los programas de aplicacin (por ej., hojas de clculo, documentos,
etc.), a travs de un entorno de red (por ej., cables, etc.), hasta otro programa de aplicacin
ubicado en otro computador de la red, an cuando el remitente y el receptor tengan distintos tipos
de red.
En el modelo de referencia OSI, hay siete capas numeradas, cada una de las cuales ilustra una
funcin de red particular.
La divisin de la red en siete capas presenta las siguientes ventajas:

Divide la comunicacin de red en partes ms pequeas y sencillas.


Normaliza los componentes de red para permitir el desarrollo y el soporte de los productos
de diferentes fabricantes.
Permite a los distintos tipos de hardware y software de red comunicarse entre s.
Impide que los cambios en una capa puedan afectar las dems capas, de manera que se
puedan desarrollar con ms rapidez.
Divide la comunicacin de red en partes ms pequeas para simplificar el aprendizaje.

Las capas del modelo OSI

El problema de trasladar informacin entre computadoras se divide en siete problemas ms


pequeos y de tratamiento ms simple en el modelo de referencia OSI.
Cada uno de los siete problemas ms pequeos est representado por su propia capa en el
modelo.
Las siete capas del modelo de referencia OSI son:
Capa 7:
La capa de aplicacin
Capa 6:
La capa de presentacin
Capa 5:
La capa de sesin
Capa 4:
La capa de transporte
Capa 3:
La capa de red
Capa 2:
La capa de enlace de datos
Capa 1:
La capa fsica
Si dos computadoras diferentes usan normas OSI, ambas tendran software y hardware
correspondiente a cada uno de los niveles del modelo OSI.

APLICACIN
PRESENTACIN
SESION

245

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

TRANSPORTE
RED
ENLACE DE DATOS
FISICO

Funciones de cada capa


Cada capa individual del modelo OSI tiene un conjunto de funciones que debe realizar para
que los paquetes de datos puedan viajar en la red desde el origen hasta el destino.

Capa 7: La capa de aplicacin


La capa de aplicacin es la ms cercana al usuario; suministra servicios de red a las
aplicaciones del usuario.
Difiere de las dems capas debido a que no proporciona servicios a ninguna otra capa OSI,
sino solamente a aplicaciones que se encuentran fuera del modelo OSI.
Ejemplos: son los programas de hojas de clculo, de procesamiento de texto. Establece la
disponibilidad de los potenciales socios de comunicacin, sincroniza y establece acuerdos sobre los
procedimientos de recuperacin de errores y control de la integridad de los datos.

Capa 6: La capa de presentacin


Traduce el mensaje al formato que se usa en la red en forma comprensible para los
programas de emisin y recepcin en la capa 7.
Este nivel permite negociar, seleccionar y mantener la sintaxis de la informacin que est
siendo transferida entre los procesos de aplicacin.

Capa 5: La capa de sesin


En la capa de sesin se establece y controla el dilogo entre las dos aplicaciones que se
comunican.
Ayuda a seleccionar el turno para enviar y recibir informacin, recuperacin de la
sincronizacin y una terminacin ordenada de la comunicacin.
Es el moderador del dilogo que tiene lugar en la red, prohibiendo y permitiendo interrupciones
cuando sea necesario.

Capa 4: La capa de transporte


La capa de transporte controla la calidad de la transmisin y se asegura que las redes se usen
adecuadamente.
Este nivel asegura la integridad de todo el mensaje desde su origen hasta su destino. Puede
establecer prioridades para el control del flujo de datos.
La capa de transporte intenta suministrar un servicio de transporte de datos que asla las capas
superiores de los detalles de implementacin del transporte.
Al proporcionar un servicio de comunicaciones, la capa de transporte establece, mantiene y
termina adecuadamente los circuitos virtuales.

246

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Capa 3: La capa de red


Esta capa determina la ruta adecuada para los datos a travs de la red. Proporciona funciones
de direccionamiento e intercambio que seleccionan los caminos por la red y por los circuitos,
intercambio de paquetes.

Capa 2: La capa de enlace de datos


En la capa de enlace se empacan los datos para su transmisin, se desempacan al recibirlos
y se efecta la deteccin de errores durante la transmisin.
Su funcin principal es la correccin de errores.
La capa de enlace de datos se ocupa del direccionamiento fsico (comparado con el lgico) , la
topologa de red, el acceso a la red, la notificacin de errores, entrega ordenada de tramas y
control de flujo.

Capa 1: La capa fsica


Establece la conexin fsica entre los equipos de cmputo y la red.
Por ejemplo el tamao y forma del conector, el numero de pines en el conector, etc.
La capa fsica define las especificaciones elctricas, mecnicas, de procedimiento y funcionales
para activar, mantener y desactivar el enlace fsico entre sistemas finales.
Las caractersticas tales como niveles de voltaje, temporizacin de cambios de voltaje,
velocidad de datos fsicos, distancias de transmisin mximas, conectores fsicos y otros atributos
similares se definen a travs de las especificaciones de la capa fsica.

Nombres de los datos en cada capa


Para que los paquetes de datos puedan viajar desde el origen hasta su destino, cada capa del
modelo OSI en el origen debe comunicarse con su capa igual en el lugar destino.
Esta forma de comunicacin se conoce como comunicaciones de par-a-par.
Durante este proceso, cada protocolo de capa intercambia informacin, que se conoce como
unidades de datos de protocolo (PDU), entre capas iguales. Cada capa de comunicacin, en la
computadora origen, se comunica con un PDU especfico de capa y con su capa igual en la
computadora destino.

7.3.2.1.2. El modelo de referencia TCP/IP


Es el Protocolo de Control de Transmisin/Protocolo Internet (TCP/IP). Es el estndar
abierto de Internet. El modelo de referencia TCP/IP y la pila de protocolo TCP/IP hacen que sea
posible la comunicacin entre dos computadoras, desde cualquier parte del mundo, a casi la
velocidad de la luz.

Las capas del modelo de referencia TCP / IP


El Departamento de Defensa de EE.UU. (DoD) cre el modelo TCP/IP porque necesitaba una
red que pudiera sobrevivir ante cualquier circunstancia. Se necesita que fluya la informacin o los
datos (organizados en forma de paquetes), independientemente de la condicin de cualquier nodo

247

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

o red en particular. El DoD desea que sus paquetes lleguen a destino siempre, bajo cualquier
condicin, desde un punto determinado a cualquier otro punto determinado.
El modelo TCP/IP tiene cuatro capas:

La
La
La
La

capa
capa
capa
capa

de
de
de
de

aplicacin
transporte
Internet
red.

Es importante observar que algunas de las capas del modelo TCP/IP poseen el mismo nombre
que las capas del modelo OSI. No confunda las capas de los dos modelos, porque la capa de
aplicacin tiene diferentes funciones en cada modelo.

Capa de aplicacin
Los diseadores de TCP/IP sintieron que los protocolos de nivel superior deberan incluir los
detalles de las capas de sesin y presentacin.
Simplemente crearon una capa de aplicacin que maneja protocolos de alto nivel, aspectos de
representacin, codificacin y control de dilogo.
El modelo TCP/IP combina todos los aspectos relacionados con las aplicaciones en una sola
capa y da por sentado que estos datos estn correctamente empaquetados para la siguiente capa.

Capa de transporte
La capa de transporte se refiere a los aspectos de calidad del servicio con respecto a la
confiabilidad, el control de flujo y la correccin de errores.
El protocolo para el control de la transmisin (TCP), ofrece maneras flexibles y de alta calidad
para crear comunicaciones de red confiables, sin problemas de flujo y con un nivel de error bajo.
TCP es un protocolo orientado a la conexin. Mantiene un dilogo entre el origen y el
destino mientras empaqueta la informacin de la capa de aplicacin en unidades denominadas
segmentos. Orientado a la conexin significa que los segmentos de la Capa 4 viajan de un lado
a otro entre dos hosts para comprobar que la conexin exista lgicamente para un determinado
perodo. Esto se conoce como conmutacin de paquetes.

Capa de Internet
El propsito de la capa de Internet es enviar paquetes origen desde cualquier red y que estos
paquetes lleguen a su destino independientemente de la ruta y de las redes que se utilizaron para
llegar hasta all.
El protocolo especfico que rige esta capa se denomina Protocolo Internet (IP).
En esta capa se produce la determinacin de la mejor ruta y la conmutacin de paquetes. Esto
se puede comparar con el sistema postal. Cuando enva una carta por correo, usted no sabe cmo
llega a destino (existen varias rutas posibles); lo que le interesa es que la carta llegue.

Capa de red
Es la capa que se ocupa de todos los aspectos que requiere un paquete IP para realizar
realmente un enlace fsico y luego realizar otro enlace fsico. Esta capa incluye los detalles de
tecnologa de LAN y WAN y todos los detalles de las capas fsica y de enlace de datos del modelo
OSI.

248

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

Grfico de protocolo TCP/IP


Algunos de los protocolos comunes especificados por el modelo de referencia TCP/IP en la
capa de aplicacin incluyen las siguientes:

FTP : File Transfer Protocol (Protocolo de transporte de archivos)


HTTP: Hypertext Transfer protocol (Protocolo de transferencia de hipertexto)
SMTP: Simple Mail transport protocol (Protocolo de transporte de correo simple)
DNS: Domain Name Service (Servicio de nombre de dominio)
TFTP: Trival File transport protocol(Protocolo de transporte de archivo trivial)

La capa de transporte involucra dos protocolos:

el protocolo de control de transmisin (TCP)


el protocolo de datagrama (UDP).

En el modelo TCP/IP existe solamente un protocolo de red:

El protocolo Internet, o IP. IP sirve como protocolo universal que permite que cualquier
computadora en cualquier parte del mundo pueda comunicarse en cualquier momento.

Comparacin modelos: OSI - TCP/IP


Similitudes

Ambos se dividen en capas


Ambos tienen capas de aplicacin, aunque incluyen servicios muy distintos
Ambos tienen capas de transporte y de red similares
Se supone que la tecnologa es de conmutacin de paquetes (no de conmutacin de
circuitos
Los profesionales de networking deben conocer ambos

Diferencias

TCP/IP combina las funciones de la capa de presentacin y de sesin en la capa de


aplicacin.
TCP/IP combina la capas de enlace de datos y la capa fsica del modelo OSI en una sola
capa.
TCP/IP parece ser ms simple porque tiene menos capas
Los protocolos TCP/IP son los estndares en torno a los cuales se desarroll Internet.
En comparacin, no se crean redes a partir de protocolos especficos relacionados con OSI,
aunque todo el mundo utiliza el modelo OSI como gua.

249

TALLER DE INFORMTICA

CAPITULO 7. Conceptos de Redes e Internet

250

TALLER DE INFORMTICA

BIBLIOGRAFIA

BIBLIOGRAFIA
LIBROS RELACIONADOS CON ALGORITMOS E INTRODUCCIN A LA PROGRAMACIN

INTRODUCCIN A LA PROGRAMACIN. ALGORITMOS Y SU IMPLEMENTACIN EN


VB, C#, JAVA Y C++ de RAMIREZ, F. Ed. ALFAOMEGA, Mxico, 2007.
FUNDAMENTOS DE PROGRAMACION de JOYANES AGUILAR, L., Ed. McGRAW-HILL.,
Madrid, 2003.
ALGORITMOS + ESTRUCTURAS DE DATOS = PROGRAMAS de WIRTH, N. Ed. DEL
CASTILLO
FUNDAMENTOS DE PROGRAMACION. PIENSA EN C de CAIRO BATTISTUTTI O., Ed.
PEARSON ADDISON-WESLEY, Mxico, 2006

PGINAS CON MATERIAL INTERESANTE


INTRODUCCIN A LA PROGRAMACIN

RELACIONADO

CON

ALGORITMOS

Tutorial de diseo estructurado de algoritmos de


Departamento de Sistemas y
Computacin Instituto Tecnolgico de La Paz, Mxico
http://sistemas.itlp.edu.mx/tutoriales/algoritmos/index.htm
Curso de Diseo de Algoritmos de Carlos Javier Pes Rivas
http://www.carlospes.com/curso_de_algoritmos/
Gua de Programacin. Material de Eduteka para leer desde Internet o descargar.
http://es.calameo.com/read/000170621716489806b76

http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf

PGINAS CON MATERIAL INTERESANTE RELACIONADO CON SISTEMA OPERATIVO LINUX:


Gua de referencia de comandos Unix/Linux en castellano:
http://www.scribd.com/doc/563515/Guia-de-referencia-de-comandos-UnixLinux-en-castellano
http://www.julioneves.com
http://dns.bdat.net/shell/
Curso sobre Gnome: http://lliurex.net/home/files/documentacion/es/html509/index.html

PGINAS CON INFORMACIN SOBRE SOFTWARE PARA LA ELABORACIN DE DIAGRAMAS


DE FLUJO

DFD 1.0 http://www.softonic.com/ie/16035/DFD


Scratch http://scratch.mit.edu/
SmartDraw http://www.smartdraw.com
Inspiration http://www.inspiration.com
WinEsquema http://www.softonic.com/ie/27771/WinEsquema
Dia Win32 Installer http://www.softonic.com/ie/33781/dia
Paraben's Flow Charter http://www.paraben.com/html/flow.html
Novagraph Chartist http://www.tucows.com/preview/289535.html
Flow Charting 5 http://www.patton-patton.com
OrgPlus http://www.tucows.com/preview/281861.html
Antechinus Draw Magic http://www.tucows.com/preview/254904.html

251

TALLER DE INFORMTICA

BIBLIOGRAFIA

PGINAS CON INFORMACIN SOBRE LENGUAJE C

Cursos de C++ http://www.conclase.net/c/curso/index.php


Cursos de C++ http://c.conclase.net/index.php
Free C++ (and C), Programming Tools: http://www.freebyte.com/programming/cpp/

PGINAS CON INFORMACIN SOBRE ENTORNO ANJUTA

Pgina del proyecto Anjuta: http://anjuta.org/


Proyecto en freshmeat: http://freshmeat.net/projects/anjuta/
Tutorial de glade y Anjuta (en ingls) http://writelinux.com/glade/index.php

252

TALLER DE INFORMTICA

ANEXOS

ANEXOS

ANEXO 1.
ESTANDARES PARA DIAGRAMAS DE FLUJO PSEUDOCDIGO

SIGNIFICADO

DIAGRAMA DE FLUJO

Xa+b

Proceso

Decisin

PSEUDOCDIGO

NO

SI

Si <condicin>
<acciones>
sino
<acciones>

Conectores

Inicio / Fin

Inicio / Fin

Entrada de Datos

Leer ...

Salida de Datos

Escribir ...

Direccin del flujo

Comentarios

// Comentarios.....

- 253 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 2. OPERADORES
2.1. OPERADORES MATEMTICOS
OPERADOR

SIGNIFICADO

OPERANDOS

RESULTADO

Exponenciacin

Entero Real

Entero Real

Suma

Entero Real

Entero Real

Resta

Entero Real

Entero Real

Multiplicacin

Entero Real

Entero Real

Divisin

Real

Real

div

Divisin enteros

Entero

Entero

mod

Mdulo - Resto

Entero

Entero

2.2. OPERADORES DE RELACIN COMPARACIN


<expresin1> OPERADOR <expresin2>

OPERADORES

SIGNIFICADO

==

Igual

>

Mayor

<

Menor

>=

Mayor o igual que

<=

Menor o igual que

<> !=

Distinto

2.3. OPERADORES LGICOS TABLAS DE VERDAD


NO - NOT
A
NO A
V
F
F
V

A
V
V
F
F

Y - AND
B
V
F
V
F

AyB
V
F
F
F

- 254 -

A
V
V
F
F

O - OR
B
V
F
V
F

AB
V
V
V
F

TALLER DE INFORMTICA

ANEXOS

2.4. OPERADORES ORDEN DE PRECEDENCIA


Normalmente, las expresiones con operadores se evalan de izquierda a derecha, aunque no todos,
ciertos operadores que se evalan y se asocian de derecha a izquierda.
Adems, no todos los operadores tienen la misma prioridad, algunos se evalan antes que otros, de
hecho, existe un orden muy concreto en los operadores en la evaluacin de expresiones.
Esta propiedad de los operadores se conoce como precedencia o prioridad.
Veremos ahora las prioridades de todos los operadores incluidos los que an conocemos.
Considera esta tabla como una referencia, no es necesario aprenderla de memoria, en caso de duda
siempre se puede consultar, incluso puede que cambie ligeramente segn el compilador, y en ltimo caso
veremos sistemas para eludir la precedencia.

ORDEN (SE EVALA...)

OPERADORES

1ero. (prioridad ms alta)

no not

2do.

/ , * , div , mod , y and

3ero.

+ , - , o or

4to. (prioridad ms baja)

< , > , = , >= , <= , <>

La precedencia es el orden en el cual sern realizadas las evaluaciones; por ejemplo: la multiplicacin se
realiza antes que la suma.
Las reglas de precedencia, en forma completa, de los operadores se muestran en la siguiente tabla:

ORDEN (SE EVALA...)


Prioridad ms alta (1era operacin ejecutada)

OPERADORES
O OR
Y AND
NO NOT
< , > , = , >= , <= , <>
+,MOD
DIV
*,/

Prioridad ms baja (ltima operacin ejecutada)

- 255 -

TALLER DE INFORMTICA

ANEXOS

2.5. ASOCIATIVIDAD DE OPERADORES


Operadores

Asociatividad

() [] -> :: .

Izquierda a derecha

Operadores unitarios: ! ~ + - ++ -- & (direccin de) *


(puntero a) sizeof new delete

Derecha a izquierda

.* ->*

Izquierda a derecha

* (multiplicacin) / %

Izquierda a derecha

+ - (operadores binarios)

Izquierda a derecha

<< >>

Izquierda a derecha

< <= > >=

Izquierda a derecha

== !=

Izquierda a derecha

& (bitwise AND)

Izquierda a derecha

^ (bitwise XOR)

Izquierda a derecha

| (bitwise OR)

Izquierda a derecha

&&

Izquierda a derecha

||

Izquierda a derecha

?:

Derecha a izquierda

= *= /= %= += -= &= ^= |= <<= >>=

Derecha a izquierda

Izquierda a derecha

- 256 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 3.- TIPOS DE DATOS EN C++


TIPO

TAMAO
(EN BITS)

RANGO DE VALORES

APLICACIN

unsigned char

0 a 255

Nmeros pequeos y el conjunto de


caracteres de la PC

char

-128 a 127

Nmeros muy pequeos y caracteres


ASCII

enum

16

-32.768 a 32.767

unsigned int

16

0 a 65.535

short int

16

-32.768 a 32.767

Contadores, nmeros pequeos,


control de bucles.

int

16

-32.768 a 32.767

Contadores, nmeros pequeos,


control de bucles.

unsigned long

32

0 a 4.294.967.295

Distancias astronmicas

long

32

- 2.147.483.648 a 2.147.483.647

float

32

3.4 x 10-38 a 3.4 x 1038

Cientfica

double

64

1.7 x 10-308 a 1.7 x 10308

Cientfica

long double

80

3.4 x 10-4932 a 3.4 x 104932

Financiera

near pointer

16

No se aplica

Manipulacin de direcciones de
memoria

far pointer

32

No se aplica

Manipulacin de direcciones fuera del


segmento actual

Conjunto ordenado de valores.


Nmeros grandes, bucles.

Nmeros grandes (poblaciones)

3.1. Conversin de tipos de datos


Quizs te hayas preguntado qu pasa cuando escribimos expresiones numricas en las que todos los
operandos no son del mismo tipo.
Por ejemplo:

char n;
int a, b, c, d;
float r, s, t;
...
a = 10;
b = 100;
r = 1000;
c = a + b;
s = r + a;
d = r + b;

- 257 -

TALLER DE INFORMTICA

ANEXOS

d = n + a + r;
t = r + a - s + c;
...
En estos casos, cuando los operandos de cada operacin binaria asociados a un operador son de distinto
tipo, se convierten a un tipo comn.
Existen reglas que rigen estas conversiones, y aunque pueden cambiar ligeramente de un compilador a
otro, en general sern ms o menos as:
1. Cualquier tipo entero pequeo como char o short es convertido a int o unsigned int. En este
punto cualquier pareja de operandos ser int (con o sin signo), long, long long, double, float o
long double.
2. Si algn operando es de tipo long double, el otro se convertir a long double.
3. Si algn operando es de tipo double, el otro se convertir a double.
4. Si algn operando es de tipo float, el otro se convertir a float.
5. Si algn operando es de tipo unsigned long long, el otro se convertir a unsigned long long.
6. Si algn operando es de tipo long long, el otro se convertir a long long.
7. Si algn operando es de tipo unsigned long, el otro se convertir a unsigned long.
8. Si algn operando es de tipo long, el otro se convertir a long.
9. Si algn operando es de tipo unsigned int, el otro se convertir a unsigned int.
10. En este caso ambos operandos son int.
En el ejemplo:

c = a + b; caso 8, ambas son int.


s = r + a; caso 4, "a" se convierte a float.
d = r + b; caso 4, "b" se convierte a float.
d = n + a + r; caso 1, "n" se convierte a int, caso 4 el resultado (n+a) se convierte a float.
t = r + a - s + c; caso 4, "a" se convierte a float, caso 4 (r+a) y "s" son float, caso 4, "c" se
convierte a float.
Tambin se aplica conversin de tipos en las asignaciones, cuando la variable receptora es de distinto
tipo que el resultado de la expresin de la derecha.
Cuando esta conversin no implica prdida de precisin, se aplican las mismas reglas que para los
operandos, estas conversiones se conocen tambin como promocin de tipos.
Cuando hay prdida de precisin, las conversiones se conocen como democin de tipos.
El compilador normalmente emite un aviso o "warning", cuando se hace una democin implcita, es decir
cuando hay una democin automtica.
En el caso de los ejemplos 3 y 4, es eso precisamente lo que ocurre, ya que estamos asignando
expresiones de tipo float a variables de tipo int.

3.2. Conversin explcita de tipo:


Para eludir estos avisos del compilador se usa el "casting", o conversin explcita.
En general, el uso de "casting" es obligatorio cuando se hacen asignaciones, o cuando se pasan
argumentos a funciones con prdida de precisin.
En el caso de los argumentos pasados a funciones es tambin muy recomendable aunque no haya
prdida de precisin. Eliminar los avisos del compilador demostrar que sabemos lo que hacemos con
nuestras variables, an cuando estemos haciendo conversiones de tipo extraas.
En C++ hay varios tipos diferentes de "casting", pero de momento veremos slo el que existe tambin
en C.

- 258 -

TALLER DE INFORMTICA

ANEXOS

Sintaxis de "casting":

(<nombre de tipo>)<expresin>

<nombre de tipo>(<expresin>)
Esta ltima es conocida como notacin funcional.
En el ejemplo anterior, las lneas 3 y 4 quedaran:

d = (int)(r + b);
d = (int)(n + a + r);
:
d = int(r + b);
d = int(n + a + r);
Hacer un "casting" indica que sabemos que el resultado de estas operaciones no es un int, que la
variable receptora s lo es, y que lo que hacemos lo hacemos a propsito.
Veremos ms adelante, cuando hablemos de punteros, ms situaciones donde tambin es obligatorio el
uso de "casting".

- 259 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 4.- SISTEMAS NUMRICOS


Que es un sistema Numrico?
Un sistema de numeracin es un conjuntode smbolos y reglas de generacin de nmeros que permiten
construir TODOS los nmeros vlidos en el sistema.
Por ejemplo tenemos en el sistema Decimal definidos los nmeros desde el 0 al 9, ste es el conjunto de
smbolos y pero podemos formar otros nmeros usando estos nmeros o el 12 anteponiendo dos de ellos
esto sera una regla.
Sera algo parecido al sistema de numeracin romana, por elemplo X (en decimal el 10) sera un smbolo
y una regla nos permitira hacer el XXI (en decimal el 21).
A lo largo de la historia se crearon varios sistemas Numricos, nombraremos algunos de ellos:
- Decimal
- Romano
- Binario
- Octal
- Hexadecimal
Cada uno de estos sistemas Numricos tiene su conjunto de smbolos y reglas de generacin que
permiten construir todos los nmeros vlidos en el sistema, en algunos casos son mas fciles unos que
otros.
Los sistemas Numricos se suelen clasificar en dos grandes grupos, posicionales y no posicionales.
En los sistemas modernos de numeracin bsicamente se usa el sistema posicional o ponderado
(dependiendo de la ubicacin u orden tiene un peso, para el caso del 12, el 1 tiene un peso de 10), en estos
sistemas de numeracin ponderados o posicionales el valor de un dgito depende tanto del smbolo utilizado,
como de la posicin que se smbolo ocupa en el nmero (unidad, decena, centena). Esto tiene como efecto
facilitar operaciones como suma, resta, etc.
Cmo encontrar las equivalencias entre algunos sistema de numeracin?
Nos concentraremos en los sistemas: Hexadecimal, Binario. Utilizaremos como punto de comparacin o
conversin el Sistema ms usado el Decimal.
Sistema Hexadecimal:
El sistema de numeracin hexadecimal, de base 16, utiliza 16 smbolos.
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.
Es comn abreviar hexadecimal como hex aunque hex significa base seis. Como dijimos dado que el
sistema usual de numeracin es de base decimal y, por ello, slo se dispone de diez dgitos, se adopt la
convencin de usar las seis primeras letras del alfabeto latino para suplir los dgitos que nos faltan: A = 10,
B = 11, C = 12, D = 13, E = 14 y F = 15.
Si intentamos hacer una conversin al sistema decimal quedara:
00
1 1 6 6 11 B
2 2 7 7 12 C
3 3 8 8 13 D
4 4 9 9 14 E
5 5 10 A 15 F
Con esto tenemos algunos nmeros del espacio de nmeros Hexadecimal pero como encontramos las
equivalencias para convertir cualquier nmero Hexadecimal a Decimal.

- 260 -

TALLER DE INFORMTICA

ANEXOS

Por ejemplo:
1A el 1 indica que supero una vez a la base que es 16, y la letra A que son 10 unidades. Entonces 1A
sera equivalente a 16+10 total 26
3F el 3 indica que supero tres veces a la base 3*16, y la letra F que son 15 unidades. Entonces 3F
sera equivalente a 3*16+15 total 63.

En forma genrica se puede expresar:


VXYZHexadecimal = V*163 + X*162 + Y*161 + Z*160
V, X, Y, Z seran el equivalente decimal de cualquier smbolo Hexadecimal.
El Resultado de esto dara un nmero en formato Decimal.

Ejemplo:
1A3F = 1*163+ A*162 + 3*161 + F*160 = 1*163+ 10 *162 + 3*161 +15*160 = 6719

Observacin:
-Ver que exponente de la base (16) est relacionado con la posicin del smbolo. Se empieza a contar la
posicin desde la derecha y la primera es la posicin cero.
Para el caso de:
- A se encuentra en la posicin 2, 0(F), 1(3), 2(A), por lo que A (10) quedar multiplicado por 16
elevado al Cuadrado.
- F se encuentra en la posicin cero, por lo que F (15) quedar multiplicado por 16 elevado a la cero.
- 3 se encuentra en la posicin 1, por lo que 3 (3) quedar multiplicado por 16 elevado a la uno.
Sistema Binario:
El sistema binario, es usado en matemticas e informtica, es un sistema de numeracin en el que los
nmeros se representan utilizando solamente las cifras cero y uno (0 y 1).
Es el que se utiliza en los ordenadores, pues trabajan internamente con dos niveles de voltaje o tensin,
por lo que su sistema de numeracin natural es el sistema binario (encendido 1, apagado 0). Cada posicin
puede tener = o 1 y se denominaremos Bit.
Para este tipo de Sistema numrico los smbolos son 0 y/ 1 y se forman los nmeros combinando ceros
y unos.
Veamos que si tengo 2 smbolos y tengo que representar el equivalente a 7 (en decimal) voy a necesitar
3 bits, ya que 2 (base) elevado a la cantidad de bits (3) me d 8, que sera la cantidad de combinaciones
posibles logradas con 3 bits en un sistema binario.
Veamos como queda:
000 0 100 4
001 1 101 5
010 2 110 6
011 3 111 7
Vemos entonces que el sistema de nmeros se logra poniendo Bits o Ceros y unos.
De lo expuesto para el sistema binario y pensando en lo que hicimos para el sistema Hexadecimal
podemos hacer un expresin similar con la base que tenemos, que para nuestro caso es 2.
101 = 1 * 22 + 0 * 21 + 1 * 20 = 1*4+0+1= 5 (decimal)

En forma genrica se puede expresar:


VXYZBinario = V*23 + X*22 + Y*21 + Z*20
V, X, Y, Z seran el equivalente binario de cualquier smbolo binario (0 o 1). El Resultado de esto dara un
nmero en formato Decimal.

- 261 -

TALLER DE INFORMTICA

ANEXOS

Ejemplo:
1011 = 1*23+ 0*22 + 1*21 + 1*20 = 1*8+ 0 + 1*2 +1*1 =11 (once en sistema decimal)

Observacin:
- Ver que exponente de la base (2) est relacionado con la posicin del smbolo. Para el caso de 1011 se
encuentra en la posicin tres, por lo que este 1 quedar multiplicado por 2 elevado a la tres.-

- 262 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 5.- CDIGOS ASCII


ASCII: Acrnimo ingls de American Standard Code for Information Interchange . Son cdigos estandar
para que los equipos intercambien informacin, es decir la N en Europa es la N en Latinoamerica pero como
a los equipos les es ms facil manejar Nmeros que caracteres, internamente, estos caracteres son
representados por nmeros.
El cdigo ASCII utiliza 7 bits para representar los caracteres.
Esta es la Tabla:

Como podemos ver, existen relaciones importantes que se puelen usar.


Por ejemplo:
0 1 2.... 9 => 48 49 50, , 59 siempre hablando de decimales.
Lo mismo podemos plantear para a, b, c, e..... y para A, B, C.....etc.
Cmo se puede utilizar?
Si el carcter ingresado tiene un valor decimal mayor o igual que 65 y menor o igual que 90 es
una letra Mayscula.
Si el carcter ingresado tiene un valor decimal mayor o igual que 97 y menor o igual que 122 es
una letra Minscula.
Si el carcter ingresado tiene un valor decimal mayor o igual que 48 y menor o igual que 57 es
un Nmero.

- 263 -

TALLER DE INFORMTICA

ANEXOS

Smbolos y nombre ASCII usados corrientemente


Nombres Comunes

Nombres Raros

Signo de Explamacin
exclamation mark
bang
pling
excl
not
shriek

"

Comilla doble
quotation marks
quote
double quote

factorial
exclam
smash
cuss
boing
yell
wow
hey
wham
eureka
spark-spot
soldier
control
literal mark
double-glitch
dieresis
dirk
rabbit-ears
double prime
grid
crosshatch
octothorpe
flash
square
pig-pen
tictactoe
scratchmark
thud
thump
splat
currency symbol
buck
cash
string
escape
ding
cache
big money
double-oh-seven

Numeral
hash
pound sign
number
sign
pound
sharp
crunch
hex
mesh
Signo pesos
dollar sign
dollar

&

'

Porciento
percent sign
mod
grapes
ampersand
amp
amper
and
and sign
apostrofe
apostrophe
single quote
quote

- 264 -

address
reference
andpersand
bitand
background
pretzel
prime
glitch
tick
irk
pop

TALLER DE INFORMTICA

()

[]

{}

<
>

ANEXOS

opening / closing
parentesis
left / right paren
left / right parenthesis
left / right
open / close
open / close paren
paren / thesis
Corchetes
opening / closing bracket
left / right bracket
left / right square bracket
bracket / unbracket
Llaves
opening / closing brace
open / close brace
left / right brace
left / right squiggly
left / right squiggly
bracket/brace
left / right curly bracket/brace
Menor , Mayor
less / greater than
bra / ket
left / right angle
left / right angle bracket
left / right broket
asterisco
star
splat

+
,
-

.
/

mas
plus
add
coma
comma
menos, guin medio
dash
hyphen
minus
punto
period
dot
point
decimal point
barra
slash

- 265 -

spark
closing single quotation
mark
acute accent
so/already
lparen/rparen
opening/closing parenthesis
opening/closing round bracket
left/right round bracket
wax/wane
parenthisey/unparenthisey
left/right ear
square / unsquare
u turn / u turn back

brace / unbrace
curly / uncurly
leftit / rytit
left / right squirrelly
embrace / bracelet

from / into (or towards)


read from / write to
suck / blow
comes-from / gozinta
in / out
crunch / zap
tic / tac
angle / right angle
wildcard
gear
dingle
mult
spider
aster
times
twinkle
glob
Nathan Hale
cross
intersection
cedilla
tail
worm
option
dak
bithorpe
radix point
full stop
spot
diagonal
solidus

TALLER DE INFORMTICA

ANEXOS
stroke
slant
forward slash

:
;
=

backslash
hack
whack
escape
reverse
slash
slosh
backslant
backwhack
colon
Punto y coma
semicolon
semi
igual
equals
gets
takes
signo de pregunta
question mark
query
ques

arroba
at sign
at
strudel

acento circunflexo
circumflex
caret
hat
control
uparrow
Guin bajo
underline
underscore
underbar
under
Acento grave
grave accent
backquote
left quote
left single quote
open quote
grave

- 266 -

over
slak
virgule
slat
bash
reverse slant
reversed virgule
backslat

dots
two-spot
weenie
hybrid
pit-thwong
quadrathorpe
half-mesh
quiz
whatmark
what
wildchar
huh
hook
buttonhook
hunchback
each
vortex
whorl
whirlpool
cyclone
snail
ape
cat
rose
cabbage
commercial at
xor sign
chevron
shark (or shark-fin)
to the
fang
pointer
score
backarrow
skid
flatworm
backprime
backspark
unapostrophe
birk
blugle
back tick
back glitch

TALLER DE INFORMTICA

ANEXOS

barra
bar
or
or-bar
v-bar
pipe
vertical bar
tilde
squiggle
twiddle
not

- 267 -

push
opening single quote
quasiquote
vertical line
gozinta
thru
pipesinta
spike
approx
wiggle
swung dash
enyay
sqiggle (sic)

TALLER DE INFORMTICA

ANEXOS

ANEXO 6.- PALABRAS RESERVADAS EN C


C ++

asm

auto

auto

break

bool

case

break

char

case

const

catch

continue

char

default

class

do

const

double

10

const_cast

else

11

continue

enum

12

default

extern

13

delete

float

14

do

for

15

double

goto

16

dynamic_cast

if

17

else

int

18

enum

long

19

explicit

register

20

extern

return

21

false

short

22

float

signed

23

for

sizeof

24

friend

static

25

goto

struct

26

if

switch

27

inline

typedef

28

int

union

29

long

unsigned

- 268 -

TALLER DE INFORMTICA

ANEXOS

30

mutable

void

31

namespace

volatile

32

new

while

33

operator

34

private

35

protected

36

public

37

register

38

reinterpret_cast

39

return

40

short

41

signed

42

sizeof

43

static

44

static_cast

45

struct

46

switch

47

template

48

this

49

throw

50

true

51

try

52

typedef

53

typeid

54

typename

55

union

56

unsigned

57

using

58

virtual

59

void

60

volatile

61

while

- 269 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 7.- ESTILOS DE NOTACIN


En la medida en que el lenguaje C y C++ se empieza a conocer y el cdigo fuente empieza a ser mas
complejo conviene tratar de ser lo mas claro posible en el cdigo, de manera de que sea facil la
interpretacion del cdigo fuente.
Recordemos que hoy, tal vez entendamos bien qu hace el cdigo, pero que sucedera si lo miramos
dentro de 5 aos?
Para lograr una convencin en la escritura de cdigo fuente presentamos algunas sugerencias:

7.1. Comentarios
Se deben escribir comentarios!!
Recodermos que con // o /* .... */ se pueden introducir comentarios en el cdigo.

7.2. Nombres de variables


Los nombres de las variables se tienen que seleccionar de acuerdo al uso o al contenido que
almacenaran.
Por ejemplo, llamaramos tempambiente o temp_ambiente a una variable que represente la temperatuta
ambiente y no solamente t.
En este punto se puede incluir la Notacin tipo Camello que sera:
TempAmbiente que tambin es muy usada.

5.3. Notacin tipo Hngara


Para utilizar una notacin comn, hemos seleccionado la notacin tipo Hngara, ya que esta facilita la
interpretacin en cuanto al tipo de variable y uso.
La notacin Hngara esta conformada por dos partes, adems del nombre de la variable:

<Prefijo> <Tipo Base>_<Nombre de la Variable>


<Tipo Base> sera el tipo de la variable
Los tipos de variables ms comunes son:
Notacin

Tipo de variable

Ejemplo

varibles del tipo short

variables del tipo int

int b; => int ib;

variables del tipo long

long dni => long l_dni;

variables del tipo char

char opcion => char c_opcion;

sz

variables del tipo string ( array de


caracteres terminados en /0)

char texto[20] => char sz_texto[20];

variables del tipo double

variables del tipo float

float f_promedio;

variables del tipo enum

enum habiles {lunes=1 , martes, miercoles,


jueves, viernes}; =>enum e_dias{lunes=1 ,
martes, miercoles, jueves, viernes}

variables del tipo bool

bool bandera => bool b_bandera;

- 270 -

TALLER DE INFORMTICA

ANEXOS

<Prefijo> va antes del tipo base e indican el uso.


Los prefijos ms comunes son:
Notacin

Uso

Ejemplo

a_

array

int x[10] , notas [3][3]=> int ai_x[10] ,


ai_notas[3][3]

c_

contador

int j => int ci_j;

e_

elemento de un array

int x0 => int ei_x0 ;//primer elemento del


array;

g_

variable global.

bool cargado /*fuera de main()*/ => bool


gb_cargado;

m_

variable miembro o propiedad ( usado en


estructuras o clases)

p_

puntero

int *k => int * pi_k; /* puntero a entero */

- 271 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 8. SUMARIO DE RDENES BSICAS LINUX


Esta seccin introduce algunos de las rdenes bsicas ms tiles de un sistema UNIX, incluidas las ya
cubiertas en las secciones anteriores.
Ntese que las opciones usualmente comienzan con "-" y en la mayora de los casos se pueden aadir
mltiples opciones de una letra con un nico "-". Por ejemplo, en lugar de usar ls -l -F es posible usar ls -lF.
En lugar de listar todas las opciones disponibles para cada uno de los comandos solo hablaremos de
aquellas ms tiles o importantes. De hecho, la mayora de las rdenes tienen un gran nmero de opciones
(muchas de las cuales nunca usar). Puede usar man para ver las pginas de manual de cada orden, la cual
mostrar la lista completa de opciones disponibles.
Ntese tambin, que la mayora de las rdenes toman una lista de ficheros o directorios como
argumentos, denotados como "<fichero1> . .<.ficheroN>". Por ejemplo, la orden cp toma como argumentos
la lista de ficheros a copiar, seguidos del fichero o directorio destino. Cuando se copia ms de un fichero, el
destino debe de ser un directorio.
cd

padre.)

Cambia el directorio de trabajo actual.


Sintaxis: cd <directorio>
<directorio> es el directorio al que cambiamos. ("." se refiere al directorio actual,".." al directorio
Ejemplo: cd ../foo pone ../foo como directorio actual.

ls

Muestra informacin sobre los ficheros o directorios indicados.


Sintaxis: ls <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros o directorios a listar.
Opciones: Hay ms opciones de las que podra suponer. Las ms usadas comnmente
son: -F (usada para mostrar informacin sobre el tipo de fichero), y -l (da un listado "largo" incluyendo
tamao, propietario, permisos..etc. Trataremos esto en detalle ms adelante.)
Ejemplo: ls -lF /home/larry mostrar el contenido del directorio /home/larry.

cp

Copia fichero(s) en otro fichero o directorio.


Sintaxis: cp <fichero1> <fichero2> . . .<ficheroN> <destino>
Donde <fichero1> a <ficheroN> son los ficheros a copiar, y <destino> es el fichero odirectorio

destino.
Ejemplo: cp ../frog joe copia el fichero ../frog al fichero o directorio joe.

mv
Mueve fichero(s) a otro fichero o directorio. Es equivalente a una copia seguida del borrado del
original. Puede ser usado para renombrar ficheros, como el comando MS-DOS RENAME.
Sintaxis: mv <fichero1> <fichero2> . . .<ficheroN> <destino>
Donde <fichero1> a <ficheroN> son los ficheros a "mover" y <destination> es el fichero o
directorio destino.
Ejemplo: mv ../frog joe mueve el fichero ../frog al fichero o directorio joe.

rm
Borra ficheros. Ntese que cuando los ficheros son borrados en UNIX, son irrecuperables (a
diferencia de MS-DOS, donde usualmente se puede recuperar un fichero borrado).
Sintaxis: rm <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los nombres de los ficheros a borrar.
Opciones: -i pedir confirmacin antes de borrar un fichero.
Ejemplo: rm -i /home/larry/joe /home/larry/frog borra los ficheros joe y frog en /home/larry.

- 272 -

TALLER DE INFORMTICA

mkdir

ANEXOS

Crea directorios nuevos.


Sintaxis: mkdir <dir1> <dir2> . . .<dirN>
Donde <dir1> a <dirN> son los directorios a crear.
Ejemplo: mkdir /home/larry/test crea el directorio test colgando de /home/larry.

rmdir
Esta orden borra directorios vacios. Al susar rmdir, el directorio de trabajo actual no debe de
estar dentro del directorio a borrar.
Sintaxis: rmdir <dir1> <dir2> . . .<dirN>
Donde <dir1> a <dirN> son los directorios a borrar.
Ejemplo: rmdir /home/larry/papers borra el directorio /home/larry/papers si est vacio.

man
Muestra la pgina de manual del comando o recurso (cualquier utilidad del sistema que no
es un comando, como funciones de librera) dado.
Sintaxis: man <command> Donde <command> es el nombre del comando o recurso sobre
el que queremos obtener la ayuda.
Ejemplo: man ls muestra ayuda sobre la orden ls.

more

Muesta el contenido de los ficheros indicados, una pantalla cada vez.


Sintaxis: more <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: more papers/history-final muestra por el terminal el contenido del fichero
papers/history-final.

cat
Oficialmente usado para concatenar ficheros, cat tambin es usado para mostrar el
contenido completo de un fichero de una vez.
Sintaxis: cat <fichero1> <fichero2> . . .<ficheroN>
Donde <fichero1> a <ficheroN> son los ficheros a mostrar.
Ejemplo: cat letters/from-mdw muestra por el terminal el contenido del fichero letters/frommdw.

echo

Simplemente enva al terminal los argumentos pasados.


Sintaxis: echo <arg1> <arg2> . . .<argN>
Donde <arg1> a <argN> son los argumentos a mostrar.
Ejemplo: echo ``Hola mundo'' muestra la cadena "Hola mundo".

grep

Muestra todas las lneas de un fichero dado que coinciden con un cierto patrn.
Sintaxis: grep <patrn> <fichero1> <fichero2> . . .<ficheroN>
Donde <patrn> es una expresin regular y <fichero1> a <ficheroN> son los ficheros
donde buscar. Ejemplo: grep loomer /etc/hosts mostrar todas las lneas en el fichero /etc/hosts que
contienen la cadena "loomer".

- 273 -

TALLER DE INFORMTICA

ANEXOS

ANEXO 9. ENTORNO ANJUTA


Este apndice explica como utilizar el Anjunta para realizar tareas sencillas como compilar, depurar, etc.,
para obtener un manual detallado (en ingls) se puede descargar la pgina desde el link:
http://anjuta.org/documentations/subpage/documents/C/anjuta-manual/anjuta-manual.html

9.1. Introduccin
Anjuta es un Entorno Integrado de desarrollo (IDE) para C y C++ que proporciona gran cantidad
facilidades para la programacin. Posee una interfaz grfica para acceder a mltiples herramientas
programacin disponibles para sistemas Linux que se ejecutan en lnea de ordenes.
Anjuta intenta ser amigable al usuario. Est escrito para GTK+/GNOME y pretende combinar
flexibilidad y la potencia de las herramientas en lnea de ordenes con la interfaz grfica fcil-de-usar
GNOME.
Este apndicel se refiere a la versin 1.2.2 de la aplicacin.
La primera vez que se inicia Anjuta, se muestra al usuario un mensaje de bienvenida.
Al iniciar la aplicacin se mostrar la ventana principal en la que se distingue diversas zonas:

de
de
la
de

Ventana principal de Anjuta

- 274 -

TALLER DE INFORMTICA

ANEXOS

9.2. Barra de men


Prcticamente todas las opciones de Anjuta estn disponibles desde alguna opcin de este men. Estas
opciones estn agrupadas en diversos submens:
Archivo: incluye las opciones tpicas de gestin de archivos (Nuevo, Abrir, Guardar, Guardar
Como, Cerrar), as como opciones de gestin de proyectos (Proyecto Nuevo, Abrir proyecto,
Cerrar proyecto, Guardar proyecto, Importar proyecto). Un proyecto permite organizar los
diversos archivos de una aplicacin en una sola entidad, para una mejor gestin de la misma. En
este men tambin estn las opciones de impresin (Imprimir, Vista previa de impresin).
Editar: con las opciones de Cortar, Copiar, Pegar y Borrar, as como las de Deshacer y Rehacer.
Tambin incluye varios submens para facilitar la edicin de texto al programar. Desde opciones
de bsqueda y reemplazo (opcin Buscar), opciones de conversin de caracteres (opcin
Transformar), opciones de seleccin de texto (opcin Seleccionar), mltiples opciones de
insercin de texto orientadas a la programacin en lenguaje C (opcin Insertar texto), opciones
de comentar bloques de cdigo fuente (opcin Comentar cdigo), as como opciones para ir
rpidamente a diversos sitios del documento (opcin Ir a).
Sugerencia: La opcin Editar -> Buscar -> Buscar en archivos permite realizar bsquedas de un
texto en mltiples archivos, mediante una caja de dilogo con mltiples y potentes opciones.
Ver: permite mostrar y ocultar las diversas barras de herramientas y ventanas de la aplicacin,
as como algunas caractersticas del editor (nmeros de lnea, mrgenes, etc.)
Proyecto: opciones para gestionar los proyectos, tales como aadir y quitar archivos del
proyecto, o editar la configuracin del proyecto. Desde aqu tambin se invoca al editor GUI para
crear la interfaz grfica de la aplicacin(opcin Editar GUI de la aplicacin, necesita tener Glade
instalado).
Formato: opciones de formateo del texto, permitiendo el resaltado sintctico, as como desplegar
y replegar trozos de cdigo.
Construir: opciones de compilacin y de construccin del cdigo de la aplicacin.
Marcador: permite insertar marcadores en el cdigo y desplazarse por ellos.
Depurador: opciones de depuracin del cdigo. Permite insertar puntos de ruptura y una
ejecucin controlada, as como evaluar e inspeccionar variables.
CVS: opciones para trabajar sobre un repositorio CVS (Sistema de Control de Versiones), lo que
permite controlar los cambios que se realicen sobre el cdigo.
Opciones: opciones para establecer las preferencias de un montn de caractersticas de la
aplicacin, desde opciones del compilador y enlazador hasta las opciones del editor y las
preferencias generales de la aplicacin.
Ayuda: permite acceder a la ayuda en lnea (Manual de Anjuta), a un tutorial (Cursillo de
Anjuta), a la pgina web del proyecto, as como a fuentes relacionadas, tales como pginas del
API de Gnome, pginas de Man y pginas de Info.

9.3. Barra de herramientas


En ellas se incluyen las opciones ms habituales. Por defecto Anjuta muestra dos barras, la Barra
Principal y la Barra de Navegacin.
Estas barras pueden desplazarse de su ubicacin y colocarse en otra posicin o ser incluso flotantes.
Para ello, hacer clic en el extremo izquierdo de la barra y arrastrar con el ratn a la ubicacin deseada.
Las barras disponibles son:
Barra principal: funciones de archivos y de edicin de textos.
Barra de Navegacin: navegacin por los marcadores y etiquetas de funcin.
Barra extendida: funciones del proyecto y de compilacin, construccin y ejecucin.
Barra de depuracin: controles para el Depurador de cdigo.
Barra de formato: funciones para dar formato al texto y al cdigo.

- 275 -

TALLER DE INFORMTICA

ANEXOS

9.4. Ventana principal


Es la zona de trabajo y en ella se pueden observar diversos paneles, que pueden ocultarse y mostrarse
(men Ver -> Ventana de mensajes y Ver -> Ventana del proyecto), as como cambiar su tamao, haciendo
clic sobre los bordes de separacin y arrastrando con el ratn.
Estos paneles son:
Ventana de edicin: Esta ventana es la ubicada en la zona derecha y en ella estn los
documentos abiertos con los que se trabaja. Puede haber muchos documentos abiertos, pero
nicamente hay uno activo en un momento dado. Todos los rdenes y acciones se aplicarn
sobre dicho documento. Se puede cambiar de documento haciendo clic en la pestaa de la
pgina. Tambin se puede seleccionar un documento haciendo clic derecho sobre cualquier
pestaa y seleccionando el documento de la lista que aparece.
Ventana de proyecto: Esta ventana es la ubicada en la zona izquierda. Muestra un rbol con los
archivos de cdigo fuente que contiene el proyecto. Posee en la parte inferior varias pestaas
para ver diversas vistas del proyecto (Proyecto: muestra el cdigo fuente, Archivos: Muestra
todos los archivos de la carpeta, y Smbolos)
Ventana de mensajes: Ubicada en la zona inferior de la ventana. Muestra todos los mensajes
tanto de la salida estndar (stdout) como de la salida estndar de error (stderr) cuando se
ejecuta una orden externa. La Ventana de mensajes est habitualmente oculta y se muestra
cuando se ejecuta una orden externa.
Los colores con que se muestran los mensajes son relevantes. Los de color negro son mensajes
normales informativos. Los de color azul son mensajes importantes como avisos (Warnings) y mensajes de
error. Los mensajes de color rojo indican que estn enlazados, es decir, haciendo doble-clic sobre un
mensaje de color rojo llevar el cursor al archivo y la lnea que se especifica en el mensaje.
Adems, la ventana de mensajes tiene mltiples pestaas donde se va mostrando informacin segn las
acciones que se estn llevando a cabo, incluyendo las salidas estndar y ventanas de depuracin.

9.4.1. Hacer las ventanas flotantes


Haciendo clic en la esquina superior izquierda de las ventanas, stas se vuelven flotantes. Para ponerlas
otra vez en su sitio, hacer clic derecho sobre la ventana y seleccionar la opcin Empotrado.

9.4.2. Ventana de Inicio de Anjuta


Al iniciar Anjuta se ver una imagen como la siguiente:

- 276 -

TALLER DE INFORMTICA

ANEXOS

Deberemos elegir para la mayora de los caso la Opcin Archivo Nuevo, luego aparecer la siguiente
partalla:

Le damos un nombre al Archivo, recordemos que es aconsejable que el mismo refleje la tarea del
cdigo. Como tipo de Archivo, debemos indicar que es C++ Source File.

9.5. Teclas Rpidas


Abrir Archivo Nuevo

Ctrl + N

Abrir

Ctrl + O

Copiar

Ctrl + C

Pegar

Ctrl + V

Cortar

Ctrl + X

Compilar

F9

Construir ejecutable

F11

Deshacer

Ctrl + Z

Buscar

Ctrl + F

9.6. Compilar y construir una aplicacin


9.6.1. Compilar el programa fuente
Para compilar el archivo actual (si es un archivo fuente en C o C++), seleccionar la opcin de men

Construir -> Compilar o hacer clic en el botn Compilar de la barra extendida.

Otra opcin es pulsar la tecla de funcin F9.


A continuacin, aparecer la ventana de mensajes que mostrar todos los mensajes que produzca el
proceso de compilacin, incluidos los errores.
Haciendo doble clic sobre las lneas de color rojo, se sita el cursor en la lnea que ha generado el error.
Pueden establecerse las opciones de compilacin seleccionando la opcin de men Opciones ->
Opciones de compilador y enlazador. Al compilar un archivo, Anjuta lo guardar antes en disco y luego lo
compilar.

- 277 -

TALLER DE INFORMTICA

ANEXOS

El proceso de compilacin genera un archivo de cdigo objeto (*.o) que ser luego enlazado para
construir el ejecutable.

9.6.2. Construir el archivo ejecutable


Para construir un ejecutable, seleccionar la opcin de men Construir -> Construir o hacer clic en el
botn Construir de la barra extendida.
Otra opcin es pulsar la tecla de funcin F11.
Esto mostrar la ventana de mensajes con todos los mensajes que produzca la construccin del
ejecutable.
El proceso de construccin enlazar el archivo objeto con las bibliotecas indicadas y generar el
ejecutable.
Las bibliotecas a enlazar se pueden indicar en Opciones -> Opciones de compilador y enlazador, pestaa
Bibliotecas.

9.6.3. Dependencias de construccin


El proceso de construccin, puede detectar si el archivo objeto no est actualizado o an no ha sido
generado; en ese caso intentar compilar el archivo antes de enlazarlo. Esto implica que puede construirse
directamente un archivo sin necesidad de compilarlo.
Sin embargo, cuando se est trabajando en un proyecto con mltiples archivos que se enlazan, la
compilacin y la construccin son conceptos claramente distintos.

9.7. Ejecutar un programa


Una vez que se ha construido con xito el ejecutable, para probarlo seleccionar la opcin de men

Construir -> Ejecutar o hacer clic en el botn Ejecutar de la barra extendida.


Tambin se puede pulsar la tecla de funcin F3.

9.7.1. Dependencias
Al contrario que en la fase de construccin, la ejecucin no comprueba las dependencias, es decir, no
comprueba si el ejecutable est en la ltima versin, as que es tarea del usuario, realizar la comprobacin.
Para pasar argumentos al programa, seleccionar la opcin Construir -> Configurar los parmetros del
programa. Se mostrar una caja de dilogo donde poder introducir los parmetros. Para ejecutar,
seleccionar el botn Ejecutar.
Tambin puede especificarse si el programa debe ejecutarse en un terminal o no.

Cuadro de dilogo: Establecer los parmetros del programa

9.8. Preferencias
Anjuta permite la personalizacin de muchas de sus caractersticas para que el usuario trabaje ms
cmodamente.
Para mostrar la ventana de preferencias, seleccionar la opcin de men Opciones -> Preferencias.

- 278 -

TALLER DE INFORMTICA

ANEXOS

Para volver a las preferencias que trae Anjuta por defecto, seleccionar la opcin de men Opciones ->

Preferencias predeterminadas.

Ventana: Establecer las preferencias


La ventana de preferencias que se muestra posee diversas secciones:
Editor: En esta seccin se pueden establecer algunos valores como el tiempo de autoguardado,
el tipo de autocompletado, el plegado de cdigo, la posicin y orden de las solapas del editor,
etc.
Print: Opciones de impresin de los documentos.
CVS: Opciones para la utilizacin del Sistema de Control de Versiones (CVS).
Build: Opciones de construccin. Segn haya un proyecto abierto o no, las preferencias que se
establezcan sern a nivel de proyecto o sern globales.
Messages: Se pueden cambiar algunas caractersticas de la Ventana de mensajes, como el color
de los mismos, el estilo de los indicadores.
Indentation: Opciones de sangra y autoformato como el tamao de la tabulacin y de la
sangra, el estilo del formato.
General: Opciones como el directorio en que se guardarn los directorios de proyectos, el
tamao del histrico, informacin del usuario y otras opciones generales.
Encodings: En qu codificacin de caracteres se almacenan los documentos del proyecto. Puede
utilizarse la codificacin original, la codificacin definida en el sistema o utilizar siempre UTF-8.
Terminal: Permite indicar un perfil para el terminal de la solapa Terminal en la Ventana de
mensajes.

- 279 -

You might also like