Sie sind auf Seite 1von 44

Mag.

Jube Portalatino Zevallos

TIPOS DE DATOS
C++ / C int float double char bool void unsigned int long long double C# / JAVA int, float double char bool void long short V. BASIC NET integer double string boolean byte long single currency object

PASCAL integer real char string boolean double byte word single

FORTRAN 90 integer, real character logical integer(1) integer(2) real(8) character(n) complex

En MATLAB no existen tipos de datos

COMENTARIOS
C++ / C# / JAVA // Este es un comentario /*Este es un comentario*/ MATLAB % Este es un comentario V. BASIC NET ' Este es un comentario

FORTRAN 90 ! Este es un ! comentario

FORTRAN 77 C Este es un C comentario

PASCAL {Este es un comentario}

CONSTANTES
Ejemplos

Mag. Jube Portalatino Zevallos

En C++ / C# / JAVA const integer IGV=19; const float pi=3.1416; const char nom=carlos; En PASCAL const IGV=19; const pi=3.1416; const nom=carlos;

En C #define IGV 19 #define pi 3.1416 #define nom carlos

En VISUAL BASIC NET const IGV=19 const pi=3.1416 const nom=carlos

En FORTRAN 90 integer IGV=19 Real pi=3.1416 character nom=carlos

En VISUAL BASIC tambin se define una constante con la redaccin: Private const pi As double = 23.1416 En FORTRAN 90 tambin una constante se puede declarar as: real, parameter pi=3.1416 pero no se usa. En MATLAB no es necesario. OBSERVACIN. En C++ / C# / JAVA hay diferencia entre letras maysculas y minsculas, sin embargo en VISUAL BASIC, FORTRAN, PASCAL no existe.

VARIABLES
Ejemplos En C++ / C / C# / JAVA int x, y, z; float a, b, c; char prim, seg; En PASCAL var x,y,z: integer; var a, b, c: real; var prim, seg: char; var cadena: string; En VISUAL BASIC NET Dim x As integer Dim a, b, c As double Dim x As integer, z As double En FORTRAN 90 integer x, y, z real ::a, b, c char prim, seg

En MATLAB no existe definicin de variables

OPERADORES
OPERADORES ARITMTICOS C++ / C / C# / JAVA + * V. BASIC NET + *

Adicin Sustraccin Multiplicacin

Mag. Jube Portalatino Zevallos

Divisin Mdulo Potenciacin

/ % pow(x,3) Math.Pow(x,3) MATLAB + * / rem x^3

/ MOD x^3, Math.Pow(x,3) FORTRAN 90 + * / MOD x**3 PASCAL + * / MOD

Adicin Sustraccin Multiplicacin Divisin Mdulo Potenciacin

OPERADORES RELACIONALES C++ / C / C# / JAVA igual que == diferente que != mayor que > menor que < mayor o igual que >= menor o igual que <= Asignacin = PASCAL = <> > < >= <= := MATLAB == ~= > < >= <= =

V. BASIC NET = <> > < >= <= = FORTRAN 90 == /= > < >= <= =

MATLAB == ~= > < >= <= = FORTRAN 77 .EQ. .NE. .GT. .LT. .GE. .LE. =

igual que diferente que mayor que menor que mayor o igual que menor o igual que Asignacin

OPERADORES LGICOS C++ / C / C# / JAVA negacin (no) ! conjuncin (y) && disyuncin (o) || PASCAL NOT AND OR

V. BASIC NET NOT AND OR

MATLAB ~ & |

negacin (no) conjuncin (y) disyuncin (o)

FORTRAN 90 .NOT. .AND. .OR.

Mag. Jube Portalatino Zevallos

ENTRADA DE DATOS POR TECLADO y SALIDA DE DATOS EN PANTALLA EN C++


Para poder ingresar valores por teclado que sean almacenados en variables se utiliza el objeto cin, definido en el archivo de cabecera iostream. h, el cual debe ser incluido en el programa. Para poder imprimir en pantalla se utiliza el objeto cout, definido en el archivo de cabecera iostream.h, el cual debe ser incluido en el programa. Pero en C++ NET, la librera es iostream, sin punto h, a nivel de consola win32. Pero en otras plantillas de C++ NET, como: Aplicacin para Windows, Aplicacin para consola, ya no se usa ni cin ni out. Ejemplo cout<<Ingrese los valores k y a: \n; cin>>k>>a; cout<<El resultado es: <<endl; cout<<x; EN C Para poder ingresar valores por teclado que sean almacenados en variables se utiliza el objeto scanf, definido en el archivo de cabecera stdio. h, el cual debe ser incluido en el programa. Para poder imprimir en pantalla, se utiliza el objeto printf, definido en el archivo de cabecera stdio.h, el cual debe ser incluido en el programa. Ejemplo float radio, area; printf(Ingrese el valor del radio: ); scanf(%f, &radio); /*lee un nmero real y lo asigna a la variable radio*/ printf(Area=%8.3f, area); /* Imprime en pantalla el valor de la variable area*/ Otro ejemplo int n; char a; printf(Ingrese los valores n y a:); scanf(%d %c, &n, &a); /*Lee dos datos, un entero y un carcter y los asigna a las variables n y a */. TABLA %c %d %f %e

escribe un nico carcter escribe un entero escribe un nmero real escribe un numero real en coma flotante

Mag. Jube Portalatino Zevallos

%s %p %ld

escribe una cadena escribe un puntero escribe un entero long

EN C#, VISUAL BASIC NET, C++ NET a nivel de CONSOLA Consola.Write("Ingrese los valores de n y a: "); o Consola.WriteLine("Ingrese los valores de n y a: "); int n = Convert.ToInt32(Console.ReadLine()); double a = Convert.ToDouble(Console.ReadLine()); En PASCAL Ejemplo 1 Var x: integer; y, z: real; read(x); read(y, z);

puede ser readln(x)

Ejemplo 2 var area, radio: real; write(Dar el radio: ); readln(radio); writeln; writeln(El area es: , area:8:2); En MATLAB Ejemplo R=input(Ingrese el valor del radio: ); A=pi*R^2; disp(El area del circulo es: ); A NOTAS 1. Si uno quiere salida en la pantalla con FORMATO, usar fprintf. Revisar la ayuda de MATLAB. 2. Existen otros comandos para escritura y lectura, pero trabajan con archivos externos, tales como fprintf, fscanf, gets. En FORTRAN 90 Ejemplo integer n real s write(*,*) ' Ingrese el valor de n: '

Puede ser escrito tambin as: integer n real s print*,' Ingrese el valor de n: '

Mag. Jube Portalatino Zevallos

read(*,*) n write(*,*) ' La suma es: ' write(*,*) s

read*, n print*, ' La suma es: ' print*, s

ESTRUCTURA DE UN PROGRAMA
En C++ / C Inclusin de archivos de cabecera Definicin de constantes Definicin de funciones void main() { Declaracin de variables Instrucciones de la funcin principal } En PASCAL Program nombre_del_programa Uses crt; (printer, graph, dos, etc.) const var seccin de subprogramas (procedimientos y funciones) begin Instrucciones del programa principal; end En FORTRAN 90 program nombre_del_programa (Es opcional) seccin de especificaciones seccin de ejecucin seccin de subprogramas end En MATLAB function y=nombre_de_la_funcion(variables) instrucciones function nombre_de_la_funcion instrucciones Nombre del archivo.m instrucciones

Mag. Jube Portalatino Zevallos

En C++ NET, C#, VISUAL BASIC NET, JAVA, la estructura de un programa es en clases.

INSTRUCCIONES DE CONTROL
INSTRUCCIONES DE CONTROL SECUENCIAL Ejemplo en C++ //Programa que permite calcular la longitud de una circunferencia //y el rea de un crculo. #include<iostream.h> const float PI=3.1416; void main() { int radio; float longitud, area; cout<<Ingrese valor del radio: ; cin>>radio; longitud=2*PI*radio; area=PI*radio*radio; cout<<La longitud es: <<longitud<<endl; cout<<El area es: <<area<<endl; } Ejemplo en C /*Programa que permite calcular la longitud de una circunferencia y el rea de un crculo.*/ #include<stdio.h> #define PI 3.1416 void main() { int radio; float longitud, area; printf(Ingrese valor del radio: ) scanf(%f, &radio); longitud=2*PI*radio; area=PI*radio*radio; printf(La longitud y rea son: ); printf(%8.5f %10.6f, longitud, area ); } Ejemplo en PASCAL {Programa que permite ingresar el radio y la altura de un cilindro e imprime su volumen y rea lateral} program secuencial

Mag. Jube Portalatino Zevallos

uses crt; const pi=3.1416; var r, h: integer; vol, alat: real; begin clrscr; {limpia la pantalla} write(Ingrese la altura del cilindro: ); readln(h); write(Ingrese el radio de la base del cilindro: ); readln(r); alat=2*pi*sqr(r)+2*pi*r*h; vol=pi*sqr(r)*h; writeln(El area lateral del cilindro es , alat:8:2); writeln; writeln(El volumen del cilindro es , vol:10:5); end. Ejemplo en FORTRAN 90 ! Programa que permite ingresar el radio y la altura de un cilindro e imprime su volumen y rea lateral program secuencial !opcional pi=3.1416 integer r,h real vol, alat print*, Ingrese la altura del cilindro: read*, h write(*,*)Ingrese el radio de la base del cilindro: read(*,*) r alat=2*pi*r**2+2*pi*r*h vol=pi*r**2*h print*, El area lateral del cilindro es write(*,10) alat 10 format(2x, f8.2) write(*,20) vol 20 format(1x, Volumen del cilindro=f10.5) end Ejemplo en MATLAB % Programa que permite ingresar el radio y la altura de un cilindro e imprime su volumen y rea lateral. Primera forma: radio=input('Ingrese el valor del radio: ') longitud=2*pi*radio area=pi*radio^2

Mag. Jube Portalatino Zevallos

disp('La longitud y area son: ') longitud area Segunda forma: function [longitud, area]=funcion(r,h) longitud=2*pi*radio area=pi*radio^2 INSTRUCCIN DE CONTROL CONDICIONAL SIMPLE C++ / C / C# / JAVA if(condicion) { instruccin 1; instruccin 2; instruccin n; } NOTA: Si consta de una nica instruccin puede ir sin llaves. MATLAB if condicion instruccin 1; instruccin 2; instruccin n; end PASCAL if condicion then begin instruccin 1; instruccin 2; instruccin n; end; FORTRAN 90 if (condicion) instruccin 1 instruccin 2 instruccin n end if VISUAL BASIC NET If condicion Then instruccin 1 instruccin 2 instruccin n End If

INSTRUCCIN DE CONTROL CONDICIONAL DOBLE C++ / C / C# / JAVA if(condicion) { instruccin 1; instruccin 2; instruccin n; } else { VISUAL BASIC NET If condicion Then instruccin 1 instruccin 2 instruccin n Else instruccin 1 instruccin 2

Mag. Jube Portalatino Zevallos

10

instruccin 1; instruccin 2; instruccin n; } MATLAB if condicion instruccin 1; instruccin 2; instruccin n; else instruccin 1; instruccin 2; instruccin n; end

instruccin k End If

PASCAL if condicion then begin instruccin 1; instruccin 2; instruccin n; end else begin instruccin 1; instruccin 2; instruccin k; end;

FORTRAN 90 if(condicion) instruccin 1 instruccin 2 instruccin n else instruccin 1 instruccin 2 instruccin n end if

SENTENCIA DE CONTROL CONDICIONAL MLTIPLE C++ / C / C# / JAVA switch(selector) { case constante 1: bloque 1; break; case constante 2: bloque 2; break; case constante k: bloque k; break; default: bloque k+1; } MATLAB switch selector case constante 1 bloque 1 case constante 2 VISUAL BASIC NET Select selector Case constante1 bloque1 Case constante2 bloque2 Case constantek bloquek Case Else bloquek+1 end Select

PASCAL case selector of constante bloque1; constante

1: 2:

FORTRAN 90 select case selector case constante1 bloque1 case constante2

Mag. Jube Portalatino Zevallos

11

bloque 2 case constante k bloque k otherwise bloque k+1 end

bloque2; constante bloquek; else bloquek+1; end;

k:

bloque2 case constantek bloquek case default bloquek+1 end select

Ejemplo en VISUAL BASIC NET Select Performance Case 1 ' Performance is 1. Return Salary * 0.1 Case 2, 3 ' Performance is 2 or 3. Return Salary * 0.09 Case 5 To 7 ' Performance is 5, 6, or 7. Return Salary * 0.07 Case 4, 8 To 10 ' Performance is 4, 8, 9, or 10. Return Salary * 0.05 Case Is < 15 ' Performance is 11, 12, 13, or 14. Return 100 Case Else ' Performance is < 1 or > 14. Return 0 End Select EN VISUAL BASIC NET If condicin Then instrucciones ElseIf condicin de elseif Then instrucciones Else instrucciones End If EN C++ / C# / JAVA if (condicin ) { instrucciones } else if (condicin) { instrucciones }

Mag. Jube Portalatino Zevallos

12

else if (condicin) { instrucciones } Else { instrucciones } SENTENCIA DE CONTROL REPETITIVA: PARA C++ / C / C# / JAVA VISUAL BASIC NET for ( exp1 ; condicin ; exp2 ) For contador = inicial To final Step paso { instruccin 1; instruccin 1; instruccin 2; instruccin n; instruccin k; } Next NOTA: Si el paso es 1, se omite esto. MATLAB for contador = inicial : paso : final instruccin 1; instruccin 2; instruccin n; end NOTA: si el paso es 1, esto. PASCAL for contador : = inicial to final do begin instruccin 1; instruccin 2; instruccin n; end; NOTA: en vez de to puede ir downto se omite

FORTRAN 90 do contador = inicial, final, paso instruccin 1 instruccin 2 instruccin n end do NOTA: si el paso es 1 se omite esto.

Mag. Jube Portalatino Zevallos

13

SENTENCIA DE CONTROL REPETITIVA: MIENTRAS C++ / C / C# / JAVA while ( condicin ) { instruccin 1; instruccin n; } VISUAL BASIC NET While condicion instruccin 1; instruccin 2; instruccin n; End While FORTRAN 90 do while ( condicion ) instruccin 1 instruccin 2 instruccin n end do

MATLAB while condicion instruccin 1; instruccin 2; instruccin n; end

PASCAL while condicion do begin instruccin 1; instruccin 2; instruccin n; end;

SENTENCIA DE CONTROL REPETITIVA: HACER-MIENTRAS En C++ / C do { instruccin 1; instruccin n; } while(condicin); En PASCAL repeat instruccin 1; instruccin 2; instruccin n; until condicin

NOTA. En PASCAL la condicin tiene que ser verdadera para que salga del bucle, en C++ / C es al contrario. En FORTRAN 90 y en MATLAB no existe este tipo de bucle. En VISUAL BASIC NET Do While condicin enunciados Loop (Se ejecuta, hasta que la condicin sea falsa) Do Until condicin enunciados Loop (Se ejecuta, hasta que la condicin sea verdadera)

Mag. Jube Portalatino Zevallos

14

Do enunciados Loop While condicin Do enunciados Loop Until condicin

(Se ejecuta, hasta que la condicin sea falsa)

(Se ejecuta, hasta que la condicin sea verdadera)

FUNCIONES INTERNAS
FUNCIONES ARITMTICAS C++ / C Valor absoluto de x abs(x), fabs(x) Raz cuadrada de x sqrt(x) ex exp(x) logaritmo natural log(x) log10x log10(x) potencia ab pow(a,b) Entero del nmero x ceil, floor MATLAB abs(x) sqrt(x) exp(x) log(x) log10(x) a^b ceil(x),floor(x), fix(x), round(x)

C++ NET / C# / JAVA / V. BASIC NET Valor absoluto de x Math.Abs(x) Raz cuadrada de x Math.Sqrt(x) ex Math.Exp(x) logaritmo natural Math.Log(x) log10x Math.Log10(x) potencia ab Math.Pow(a,b) Entero del nmero x Math.Ceiling, Math.Floor, Math.Round Nota. En JAVA los nombres de las funciones son en minscula. PASCAL abs(x) sqrt(x) exp(x) ln(x) FORTRAN 90 abs(x) sqrt(x) exp(x) log(x) log10(x) a**b ceiling(x), floor(x)

Valor absoluto de x Raz cuadrada de x ex logaritmo natural log10x potencia ab Entero del nmero x

FUNCIONES TRIGONOMTRICAS Estas funciones utilizan radianes, no grados. Si se quiere usar grados, habra que usar la frmula de transformacin.

Mag. Jube Portalatino Zevallos

15

seno coseno seno hiperblico coseno hiperblico arco seno arco coseno arco tangente

C++ / C sin(x) cos(x) sinh(x) cosh(x) asin(x) acos(x) atan(x)

MATLAB sin(x) cos(x) sinh(x) cosh(x) asin(x) acos(x) atan(x)

seno coseno tangente seno hiperblico coseno hiperblico tangente hiperblico arco seno arco coseno arco tangente

C++ NET / C# / JAVA / V. BASIC NET Math.Sin(x) Math.Cos(x) Math.Tan(x) Math.Sinh(x) Math.Cosh(x) Math.Tanh(x) Math.Asin(x) Math.Acos(x) Math.Atan(x)

Nota. En JAVA los nombres de las funciones son en minscula. PASCAL sin(x) cos(x) FORTRAN 90 sin(x) cos(x) sinh(x) cosh(x) asin(x) acos(x) atan(x)

seno coseno seno hiperblico coseno hiperblico arco seno arco coseno arco tangente

arctan(x)

OTRAS FUNCIONES MATEMTICAS C++ NET / C# / V. BASIC funcin signo Math.Sign Calcula el mayor entre Math.Max dos nmeros Calcula el menor entre Math.Min dos nmeros Calcula el cociente entre Math.DivRem dos nmeros y su resto OTRAS FUNCIONES MATEMTICAS EN: PASCAL FORTRAN 90 funcin signo

MATLAB sign(x)

Mag. Jube Portalatino Zevallos

16

mximo divisor mnimo mltiplo

comn comn

max min

gcd lcm

FUNCIONES DEFINIDAS POR EL USUARIO


En C++ / C / C# / JAVA / V. BASIC NET Existen dos tipos de funciones: Funciones que no devuelven un valor. Funciones que devuelven valor. FUNCIONES QUE NO DEVUELVEN UN VALOR En C++ / C / C# / JAVA void nombre_de_la_funcin(TipoDato parmetro) { Declaracin de variables locales Instrucciones de la funcin } En C++, con referencia void nombre_de_la_funcin (TipoDato& parmetro) { Declaracin de variables locales Instrucciones de la funcin } En C#, con referencia void nombre_de_la_funcin (ref TipoDato parmetro) { Declaracin de variables locales Instrucciones de la funcin } FUNCIONES QUE SI DEVUELVEN UN VALOR En C++ / C / C# / JAVA TipoDato nombre_de_la_funcin (TipoDato parmetro) { Declaracin de variables locales Instrucciones de la funcin }

Mag. Jube Portalatino Zevallos

17

En C++, con referencia TipoDato nombre_de_la_funcin (TipoDato& parmetro) { Declaracin de variables locales Instrucciones de la funcin } En VISUAL BASIC NET FUNCIONES QUE NO DEVUELVEN UN VALOR Public Function nombre_de_la_funcin( ByVal o ByRef parmetro As TipoDato) Declaracin de variables locales Instrucciones de la funcin End Function FUNCIONES QUE DEVUELVEN UN VALOR Public Function nombre_de_la_funcin(ByVal parmetro As TipoDato) As TipoDato Declaracin de variables locales Instrucciones de la funcin End Function En PASCAL Existen PROCEDIMIENTOS y FUNCIONES definidos por el usuario. Un PROCEDIMIENTO es un subprograma que realiza determinada tarea, tiene un nombre y es capaz de recibir datos y devolver resultados a travs de variables especiales que toman el nombre de parmetros. Una FUNCIN es un procedimiento que adems es capaz de devolver un resultado a travs de su propio nombre. DECLARACIN DE UN PROCEDIMIENTO: procedure nombre_procedimiento(lista de parmetros) declaraciones begin{inicio del procedimiento} instrucciones; end;{fin del procedimiento} DECLARACIN DE UNA FUNCIN: function nombre_funcion(lista de parmetros): tipo de dato; declaraciones begin{inicio de la funcin} instrucciones; end;{fin de la funcin} OBSERVACIONES: - Los parmetros son variables con su respectivo tipo de dato.

Mag. Jube Portalatino Zevallos

18

El parmetro que solamente recibe datos no lleva var, en cambio el parmetro que devuelve o recibe y devuelve a la vez si lleva var. Si no se utiliza parmetros, se ignora los parntisis. En funciones se acostumbra que todos los parmetros reciban valores. Una funcin devuelve un valor con su nombre.

Ejemplo de la cabecera de un procedimiento: procedure calculadora( a,b: integer; var resultado: real); Aqu las variables a y b reciben valores para el procedimiento y resultado devuelve un valor. Ejemplo de una funcin: function media(a,b: real): real; begin media:= (a+b)/2.0; end; En FORTRAN 90 SUBRUTINAS subroutine nombre(parmetros) instrucciones end FUNCIONES [tipo de dato] function nombre(parmetros) instrucciones end Ejemplos program ejemplo implicit none real x, y real, external:: radio print*, Entrada x, y: read*, x, y print*, distancia= , radio(x, y) pause end !====================== real function radio(a, b)

Mag. Jube Portalatino Zevallos

19

implicit none real a, b radio=sqrt(a**2+b**2) end function !====================== program ejemplo implicit none real x, y real radio print*, Entrada x, y: read*, x, y call distancia(x, y, radio) print*, distancia= , radio pause end !====================== subroutine distancia(a, b, r) implicit none real a, b, r r=sqrt(a**2+b**2) end subroutine

RECURSIVIDAD
Una funcin es recursiva cuando se llama a si misma. En toda funcin recursiva existen 2 partes: a) El caso base que se resuelve sin recursividad. b) La llamada recursiva. Ejemplo en C++: int factorial(int n) { if(n==0 || n==1) return 1; else return n * factorial(n-1); } CASO BASE

CASO RECURSIVIDAD

Mag. Jube Portalatino Zevallos

20

ARREGLOS UNIDIMENSIONALES
Un arreglo unidimensional es un conjunto de elementos que tienen las siguientes caractersticas: Se almacenan en posiciones consecutivas de memoria. Todos los elementos son del mismo tipo. Todos los elementos tienen el mismo nombre y se diferencian entre s por un nmero que indica su posicin. Ejemplos edad m
0

12
0

25
1

37
2

21
3

47
4

letra

q
1

a
2

t
3

c
4

e
5

talla

1.35
0

1.65
1

1.50
2

1.46
3

1.70
4

1.80
5

1.47
6

1.32
7

Nota. En C++ / C / C# / JAVA / V.BASIC NET, la enumeracin de un arreglo empieza a partir de 0. En PASCAL, FORTRAN y MATLAB empiezan a partir de 1. DECLARACIN DE ARREGLOS UNIDIMENSIONALES Declaracin en C++ / C# / JAVA TipoDato nombre_del_arreglo [ numero de elementos ]; Ejemplos int edad[5]; char letra[6]; float talla[8]; Declaracin en V. BASIC NET Dim nombre_del_arreglo ( numero de elementos menos uno) As TipoDato Ejemplos Dim edad (4) As Integer Dim letra (5) As Char Dim talla (7) As Float Declaracin en PASCAL: var nombre: array[1..n] of tipo;

Mag. Jube Portalatino Zevallos

21

Ejemplo: var vector: array[1..1000] of real; Declaracin en FORTRAN 90 Ejemplos real vector(1000) real, dimension(10000):: vector real, allocatable:: a(:), b(:) real, dimension(:), allocatable:: a, b NOTA: En vez de real puede ser cualquier otro tipo de dato. ACCESO A LOS ELEMENTOS DE UN ARREGLO UNIDIMENSIONAL Para hacer referencia a un elemento de un arreglo unidimensional es necesario indicar el nombre del arreglo y la posicin de dicho elemento. En C++ / C / C# / JAVA int edad[5]; edad[0] edad[1] edad[2] edad[3] edad[4]

edad

12
0

25
1

37
2

21
3

47
4

En VISUAL BASIC NET Dim edad (4) As Integer edad(0) edad(1) edad(2) edad(3) edad(4)

edad

12
0

25
1

37
2

21
3

47
4

En FORTRAN 90 y MATLAB char, edad (5)

Mag. Jube Portalatino Zevallos

22

edad(1)

edad(2)

edad(3)

edad(4)

edad(5)

edad

12
1

25
2

37
3

21
4

47
5

En PASCAL var edad: array[1 .. 5] of char ; edad[1] edad[2] edad[3] edad[4] edad[5]

edad

12
1

25
2

37
3

21
4

47
5

ARREGLOS BIDIMENSIONALES
Un arreglo bidimensional permite almacenar elementos del mismo tipo los cuales estn organizados en forma de matriz en filas y columnas. DECLARACIN DE UN ARREGLO BIDIMENSIONAL En C++ / C / JAVA tipo_dato nombre_del_arreglo[# filas][# columnas]; Ejemplos: int m[4][5]; float A[10][8]; En C# tipo_dato nombre_del_arreglo[# filas , # columnas]; Ejemplos int m[4 , 5]; float A[10 , 8]; En VISUAL BASIC NET Dim nombre_del_arreglo (# filas - 1 , # columnas - 1) as tipo_dato Ejemplos Dim int m(3 , 4) As integer (Crea una matriz de 4 filas por 5 columnas) Dim float A(9 , 7) As double (Crea una matriz de 10 filas por 8 columnas)

Mag. Jube Portalatino Zevallos

23

En PASCAL: var nombre: array[1..n, 1..m] of tipo; Ejemplos: var m: array[1..4, 1...5] of integer; var A: array[1..10, 1..8] of real; En FORTRAN 90 Ejemplos integer m(4, 5) real, dimension(4, 5):: A integer, allocatable:: a(:, :), b(:,:) real, dimension(:,:), allocatable:: a, b ACCESO A LOS ELEMENTOS DE UN ARREGLO BIDIMENSIONAL Para acceder a un elemento en particular del arreglo bidimensional es necesario especificar el nmero de la fila y el nmero de la columna donde est ubicado. Nota. En C++/ C / C# / JAVA / V. BASIC NET, la enumeracin de las filas y columnas empiezan a partir de 0. En PASCAL, FORTRAN y MATLAB empiezan a partir de 1. En C++ / C / JAVA nombre_del_arreglo[# de fila][# de columna] int m[4][5];
0 0 1 2 3 1 2 3 4

m[0][0] m[1][0] m[2][0] m[3][0]

m[0][1] m[1][1] m[2][1] m[3][1]

m[0][2] m[1][2] m[2][2] m[3][2]

m[0][3] m[1][3] m[2][3] m[3][3]

m[0][4] m[1][4] m[2][4] m[3][4]

En C# nombre_del_arreglo[# de fila , # de columna] int m[4 , 5];


0 0 m 1 2 3 1 2 3 4

m[0,0] m[1,0] m[2,0] m[3,0]

m[0,1] m[1,1] m[2,1] m[3,1]

m[0,2] m[1,2] m[2,2] m[3,2]

m[0,3] m[1,3] m[2,3] m[3,3]

m[0,4] m[1,4] m[2,4] m[3,4]

En VISUAL BASIC NET nombre_del_arreglo (# de fila , # de columna) Dim m(3 , 4) As Integer

Mag. Jube Portalatino Zevallos 0 1 2 3 4

24

0
m

1 2 3

m(0,0) m(1,0) m(2,0) m(3,0)

m(0,1) m(1,1) m(2,1) m(3,1)

m(0,2) m(1,2) m(2,2) m(3,2)

m(0,3) m(1,3) m(2,3) m(3,3)

m(0,4) m(1,4) m(2,4) m(3,4)

En PASCAL nombre_del_arreglo[# de fila, # de columna]


1 m 2 3 4 5

1 2 3 4

m[1,1] m[2,1] m[3,1] m[4,1]

m[1,2] m[2,2] m[3,1] m[4,1]

m[1,3] m[2,3] m[3,3] m[4,3]

m[1,4] m[2,4] m[3,4] m[4,4]

m[1,5] m[2,5] m[3,5] m[4,5]

En FORTRAN 90 y MATLAB nombre_del_arreglo(# de fila, # de columna)


1 m 2 3 4 5

1 2 3 4

m(1,1) m(2,1) m(3,1) m(4,1)

m(1,2) m(2,2) m(3,1) m(4,1)

m(1,3) m(2,3) m(3,3) m(4,3)

m(1,4) m(2,4) m(3,4) m(4,4)

m(1,5) m(2,5) m(3,5) m(4,5)

NOTA: Existe una variedad amplia para acceder a los elementos de un arreglo, por ejemplo acceder a una o varias filas/columnas, acceder a una submatriz, etc. Revisar manual de MATLAB. Algunas de estas bondades tambin existen en FORTRAN 90. NOTA: Esto se puede generalizar para un nmero mayor de dimensiones.

EJEMPLOS en C++ /C
1. Ejemplo de arreglo bidimensional. Ingreso de nombres por teclado #include <iostream.h> #include <string.h> void main() { char nom[5][20]; cout<<"Teclee 5 nombres, uno por linea:\n"; for(int i=0;i<5;i++) cin.getline(nom[i],20); //cin>>no[i];{escribe un nombre por linea} for(int j=0;j<5;j++) //getline escribe nombres, apellidos y espacios

Mag. Jube Portalatino Zevallos

25

cout<<nom[j]<<endl; //en blanco por linea. } 2. Ejemplo de un arreglo bidimensional con funciones. /*Escribir un programa que permita ingresar las tempera_ turas registradas durante el mes de octubre, calcular la temperatura promedio e imprimir los numeros de aquellos dias que registraron temperaturas menores a la temperatu_ ra promedio*/ #include <iostream.h> #include <stdlib.h> const int N=31; void ingresotemp(float t[N]) { int d; for(d=0; d<N; d++) { cout<<"Ingrese temperatura registrada el dia "<<d+1<<": "; cin>>t[d]; } } float promtemp(float t[N]) { int d; float st; st=0; for(d=0; d<N; d++) st=st+t[d]; return st/N; } void diasmentemp(float t[N],float tp) { int d; cout<<"Dias cuya temperatura fue menor a"<<tp<<endl; for(d=0; d<N; d++) if(t[d]<tp) cout<<d+1<<"-"<<t[d]<<"C"<<endl; } void main() { float tempoct[N],tempprom;

Mag. Jube Portalatino Zevallos

26

ingresotemp(tempoct); tempprom=promtemp(tempoct); diasmentemp(tempoct,tempprom); } 3. Ejemplo de arreglo con funciones /* Escribir un programa que permita ingresar las notas de mil alumnos, que imprima la mayor nota obtenida, los nmeros de los alumnos que lo obtuvieron; as como una estadstica de la cantidad de alumnos que obtuvieron cada una de las notas desde 0 hasta 20 */ # include <iostream.h> # include <stdlib.h> const int N=10; //Debe ser N=1000 void ingresonotas(int n[N]) { int i; for (i=0; i<N; i++) do { cout<<"Ingrese nota del alumno"<<i+1<<":"; cin>>n[i]; } while (n[i]<0 || n[i]>20); } int notamaxima(int n[N]) { int nmax,i; nmax=n[0]; for(i=1; i<N; i++) if(n[i]>nmax) nmax=n[i]; return nmax; } void genios(int n[N],int nn) { int i; cout<<"Alumnos que obtuvieron la maxima nota"<<nn<<endl; for(i=0; i<N; i++) if(n[i]=nn) cout<<i+1<<endl; }

Mag. Jube Portalatino Zevallos

27

void estadistica(int n[N]) { int cuenta[21],x,i,j,k; for(i=0; i<21; i++){ cuenta[i]=0; for(j=0; j<N; j++) { x=n[j]; cuenta[x]++; } } cout<<"Estadistica"<<endl; for(k=0; k<21; k++) cout<<"Nota"<<k<<"-"<<cuenta[k]<<" alumnos"<<endl; } void main() { int notas[N],mejor; ingresonotas(notas); mejor=notamaxima(notas); genios(notas,mejor); estadistica(notas); } 4. Ejemplo de arreglo /*Escribir una funcin que reciba como parametro una matriz cuadrada de orden N de valores enteros que devuelva TRUE si dicha matriz es una matriz triangular superior y FALSE en caso contrario*/ #include <iostream.h> #include<stdlib.h> const N=4; bool testrisup(int m[N][N]) { int f,c; for(f=1; f<N; f++) for(c=0; c<f; c++) if(m[f][c]!=0) return false; return true; } void main() {

Mag. Jube Portalatino Zevallos

28

int mat[N][N]={{5,17,32,11},{0,21,40,8},{0,0,70,15},{0,0,0,10}}; bool t; t=testrisup(mat); if(t) cout<<"La matriz es triangular superior"<<endl; else cout<<"La matriz no es triangular superior"<<endl; } 5. Ejemplo en C de los comandos de entrada y salida /*programa que permite ingresar el radio y la altura de un cilindro e imprime su volumen y rea lateral hecho en C*/ #include <stdio.h> #include <math.h> #define PI 3.1416 void main() { int r,h; float vol,alat; printf("Ingrese la altura del cilindro: "); scanf("%d",&h); printf("Ingrese el radio de la base del cilindro: "); scanf("%d",&r); alat=2*PI*pow(r,2)+2*PI*r*h; vol=PI*r*r*h; printf("El area lateral del cilindro es "); printf("%8.4f\n",alat); printf("volumen del cilindro=%8.6e\n",vol); }

CADENAS
Una cadena es un arreglo de caracteres. En C++ / C / C# / JAVA termina con un carcter nulo (\0). Ejemplo: La cadena: Algoritmos, en memoria es: A
0

l
1

g
2

o
3

r
4

i
5

t
6

m
7

o
8

s
9

\0
10

DECLARACIN DE CADENAS EN C++ / C / C# / JAVA char nombre_de_la_cadena[# de caracteres]; Ejemplos char nombre[10]; char direccin[40];

Mag. Jube Portalatino Zevallos

29

Es posible inicializa una cadena al momento de su declaracin. Por ejemplo: char pas[15]=Per; char saludo[20]=Buenos das; Si no se especfica ningn nmero entre [ ] se toma como tamao de la cadena, la cantidad de caracteres del valor inicial ms 1 (para \0). Ejemplo char profesin[ ]=Ingeniero; El tamao de la cadena profesin ser 10. INGRESO DE CADENAS POR TECLADO EN C++ / C Si la cadena consta de una sola palabra (sin espacio) puede utilizarse cin: cin>> variable_tipo_cadena; En caso contrario, debe utilizarse la funcin gets de la librera stdio.h. Su sintaxis es la siguiente: gets(variable_tip_cadena); Ejemplo: char artefacto[20]; char direccion[50]; cin>>artefacto;

PUNTEROS O APUNTADORES
Un puntero (o apuntador) es un tipo de dato. Una variable de tipo puntero es una variable cuyo contenido es la direccin de otra variable. Un puntero (o apuntador) es la direccin en memoria de una variable. Un puntero a datos de tipo T es una variable p cuyo valor es la direccin de una variable *p de tipo T (se suele decir que p apunta a la variable *p). MEMORIA

Mag. Jube Portalatino Zevallos

30

direccin de p

200

800

800
direccin de x

23

*p

valor de x

p es una variable de tipo puntero. x es una variable tipo int apuntado por p. *p tiene el mismo valor que x (*p x=23), esto es 23. DECLARACIN DE VARIABLES TIPO PUNTERO EN C++ / C tipo_de_dato_apuntado *variable_tipo_puntero; Ejemplos int *p; //p es una variable de tipo puntero que apunta a una variable tipo int. float *q //q es una variable de tipo puntero que apunta a una variable tipo float. char *r //r es una variable de tipo puntero que apunta a una variable tipo char. Para hacer referencia a la variable apuntada se usa la notacin: *variable_tipo_puntero Ejemplo 200

800

800

23 *p

*p es otro nombre para la variable x, esto es *px=23.

Mag. Jube Portalatino Zevallos

31

El puntero, p, puede considerarse como un par de variables: p que almacena una direccin (valor entero) y *p que es la variable de tipo T cuya direccin es dada por p. T puede ser: int, float, char, etc. VARIABLES ESTTICAS Son aquellas que se declaran expresamente en los programas y a las que el sistema operativo asigna una posicin de memoria antes de la ejecucin del mismo. VARIABLES DINMICAS Son variables que se crean y se destruyen durante la ejecucin del programa. No son declaradas explcitamente en los programas. OPERADOR & Devuelve la direccin de memoria de una variable. Su sintaxis es: &nombre_de_variable Ejemplo void main( ) { int x; float y; int *p; float *q; p=&x; q=&y; } x, y, p, q son variables estticas. *p, *q son variables dinmicas. REPRESENTACIN GRFICA EN LA MEMORIA 40 80 q 80 q=&y Si y = 35 cout<<q imprime en pantalla 80 cout<<&q imprime en pantalla 40 cout<<*q imprime en pantalla 35 y *q

se crea

Mag. Jube Portalatino Zevallos

32

CREACIN DE VARIABLES DINMICAS Para crear variables dinmicas se usa el objeto new cuya sintaxis es la siguiente: variable de tipo puntero Ejemplo int *p; float *q; p=new int; q=new float; ella.

= new

tipo de dato de la variable creada

//Crea una variable dinmica de tipo int y hace que p apunte a ella. //Crea una variable dinmica de tipo float y hace que q apunte a

REPRESENTACIN GRAFICA EN MEMORIA DE : p=new int


320

int *p:

p
320 200

p=new int:

200

*p OBSERVACIN No se puede asignar un valor constante a una variable tipo puntero ni ingresar un valor por teclado para ella. Si se puede imprimir su valor. int *p; p=800; cin>>p; cout<<p; Ejemplo void main( ) { int *p, *q; p=new int; *p=8; q=p; }

ERROR ERROR CORRECTO.

Mag. Jube Portalatino Zevallos

33

80 250 q 250 *q q=p 900 p 250 p=new int 8 *p

Ejemplo void main( ) { int *p, *q; p=new int; q= new int; *p=8; *q=*p; } 380 p 120 *p

120 8

p=new int 719 q 850 *q 850 8

OBSERVACIN No se puede asignar una variable tipo puntero a otra que no sea de su mismo tipo. Ejemplo int *p, *q; float *r; p=new int; *p=7; q=p; CORRECTO r=p; ERROR

Mag. Jube Portalatino Zevallos

34

ELIMINACIN DE VARIABLES DINMICAS Se utiliza el objeto delete, de acuerdo a la siguiente sintaxis: delete variable_tipo_puntero; La variable dinmica que se elimina es la apuntada por la variable tipo puntero. Como consecuencia de ejecutar esta instruccin, se libera el espacio ocupado por la variable dinmica para poder ser utilizado nuevamente. La variable tipo puntero que la apuntaba mantiene como contenido la direccin la direccin de la variable dinmica, aunque ya no tenga significado su apuntamiento. Ejemplo: void main( ) { int *p; p=new int; *p=17; cout<<p; delete p; cout<<p; int *p p=new int 600 100 p 600 p *p

*p=17 600 600 *p 1 7

Mag. Jube Portalatino Zevallos 100 600

35

p 600 * p CONSTANTE: NULL 17

delete p anula lo que esta marcado

Es una constante predefinida en C++ cuyo valor es cero (0) y sirve para inicializar una variable tipo puntero que no apunta a ninguna variable. variable_tipo_puntero=NULL; Ejemplo void main( ) { int *p; p=new int; *p=17; imprime cout<<p; 600 delete p; cout<<p; imprime p=NULL; 600 cout<<p; } imprime
0

100 600 0

delete p lo desaparece

600 p=NULL * p 600

ARCHIVOS DE TEXTO
Un archivo de texto es un conjunto de caracteres que se agrupan bajo un mismo nombre y se graban en un medio de almacenamiento (disco duro, diskette, etc.). Despus del ltimo carcter grabado existe otro carcter que se utiliza para marcar el fin de archivo. OPERACIONES CON ARCHIVOS Escritura: Consiste en colocar datos al archivo. Lectura: Consiste en sacar datos del archivo.

Mag. Jube Portalatino Zevallos

36

Para manipular archivos en C++ es necesario crear objetos de las clases ifstream o ofstream, las cuales estn definidas en el archivo fstream.h y que debe ser includo en los programas. La clase ifstream define todas las funciones necesarias para realizar lectura de archivos. La clase ofstream define todas las funciones necesarias para realizar escritura de archivos. Para crear objetos de estas clases se sigue la siguiente sintaxis: ifstream nombre del archivo para leer; ofstream nombre del archivo para escribir; Ejemplo ifstream lectura; ofsctream escritura; APERTURA DE UN ARCHIVO EN C++ Para abrir un archivo se utiliza la funcin open(). Si se abre un archivo para escritura, se crea un archivo nuevo y vaco. Si es para lectura, el archivo ya debe existir. Ejemplo de lectura: lectura . open(carta.txt); lectura . open(carta.dat); Ejemplo para escritura: escritura . open(trabajo.txt); escritura . open(trabajo.dat);

CIERRE DE UN ARCHIVO EN C++ Cuando no se va a utilizar un archivo este debe cerrarse utilizando la funcin close() Ejemplo lectura . close(); escritura . close(); ESCRITURA EN ARCHIVOS DE TEXTO EN C++ Se utiliza el operador de flujo de salida <<. Ejemplo for ( i=0 ; i < n ; i ++ ) { escritura<<x[i]<<endl ; } LECTURA EN ARCHIVOS DE TEXTO EN C++ Se utiliza el operador de flujo de salida >>.

Mag. Jube Portalatino Zevallos

37

Ejemplo for ( i=0 ; i < n ; i ++ ) { lectura >> a[i]; } En FORTRAN 90 Ejemplo open(10, file=prueba.dat) instrucciones close(10) NOTA: Para ms opciones revisar el manual de fortran90. OPERACIONES CON ARCHIVOS EN C# Para lectura y escritura de archivos, en la cabecera del programa se escribe: using System . IO ; LECTURA DE ARCHIVO Ejemplo StreamReader lectura=File . OpenText ("datos.txt") ; for (i=0 ; i<n ; i++) { x[i]=Convert . ToDouble(lectura . ReadLine()); } ESCRITURA EN ARCHIVO Ejemplo StreamWriter escritura=File . CreateText ("solucion.txt") ; for (i=0 ; i<n ; i++) { escritura . WriteLine("{0}" , x[i]) ; } escritura . Close() ; OPERACIONES CON ARCHIVOS EN V. BASIC NET Para lectura y escritura de archivos, en la cabecera del programa se escribe: Imports System . IO LECTURA DE ARCHIVO Ejemplo Dim lectura As StreamReader =File . OpenText ("datos.txt") ; For i = 0 To n x[i]=Convert . ToDouble(lectura . ReadLine())

Mag. Jube Portalatino Zevallos

38

Next ESCRITURA EN ARCHIVO Ejemplo Dim escritura As StreamWriter =File . CreateText ("solucion.txt") ; For i = 0 To n escritura . WriteLine("{0}" , x[i]) Next escritura . Close()

ESTRUCTURAS EN C++
Una estructura (registro) es un tipo de dato definido por el usuario en base a otros tipos de datos con el objeto de reunir informacin de un mismo elemento o entidad. Ejemplo Juan 19 1.73 M nombre edad talla sexo cadena int float char Cada componente de la estructura se denomina campo. DECLARACIN DE UNA ESTRUCTURA

struct nombre
{ tipo1 campo1; tipo2 campo2; tipoN campoN; }; Ejemplo

struct persona
{ char nombre[10]; int edad; float talla; char sexo; }; Como una estructura es un tipo de dato, se pueden crear variables de dicho tipo. Ejemplo

Mag. Jube Portalatino Zevallos

39

persona p1, p2, p3; ACCESO A LOS CAMPOS DE UNA ESTRUCTURA EN C++ Para acceder a los campos de una variable tipo estructura debe seguirse la siguiente sintaxis: variable_tipo_estructura . campo Ejemplo persona p1, p2; strcpy(p1.nombre, Juan); p1.edad=19; p1.talla=1.73; p1.sexo=M; gets(p2.nombre); cin>>p2.edad; cin>>p2.talla; cin>>p2.seco; cout<<p1.nombre; cout<<p1.edad; cout<<p1.talla; cout<<p1.sexo; OBSERVACIN Son incorrectas las siguientes instrucciones: cout<<p1; cin>>p1; Es posible realizar asignaciones entre variables del mismo tipo de estructura. variable1_tipo_estructura = variable2_tipo_estructura; Ejemplo persona p1, p2; strcpy(p1.nombre, Juan); p1.edad=19; p1.talla=1.73; p1.sexo=M; p2=p1; La instruccin p2=p1 es equivalente a haber escrito: strcpy(p2.nombre, p1.nombre); p2.edad=p1.edad; p2.talla= p1.talla; p2.sexo=p1.sexo; ARREGLO DE ESTRUCTURAS EN C++ tipo_estructura nombre_de_arreglo[# elementos];

Mag. Jube Portalatino Zevallos

40

Ejemplo: persona alumnos[5];

PROGRAMACIN ORIENTADA A OBJETOS


Es una tcnica o estilo de programacin basada en elementos bsicos llamados objetos. OBJETO Es una entidad que se caracteriza por determinados atributos llamados datos miembro y por ciertas funciones denominados funciones miembro o mtodos que permiten su manipulacin. OBJETO

Datos Miembro (Atributos) Funciones Miembro (Mtodos)

OBJETO: persona Datos Miembro (Atributos)

oidos ojos

nariz mano

boca piern

s
ver () oler ()

a
oler () comer ()

Funciones Miembro (Mtodos)

hablar ()

escuchar ()

persona Juan, Luis; Juan.patear(); Luis.escribir();

Mag. Jube Portalatino Zevallos

41

CLASE Una clase es la definicin formal de los atributos y mtodos de un conjunto de objetos que se realiza en un programa. class nombre_de_la_clase {

private: / public:
tipo1 atributo1; tipo2 atributo2; tipoN atributoN;

private: / public:
tipo1 funcion_miembro1(argumentos); tipo2 funcion_miembro2(argumentos); tipoK funcion_miembroK(argumentos); }; Los datos y funciones miembro pueden ser definidos como private o public. Private: slo pueden ser accesados desde funciones miembro. Public: pueden ser accesados directamente, sin utilizar funciones miembro. clase xyz
public privat e private

private public public

f1( ) f4( ) f2( ) f3( )

a puede ser accedida por f1( ), f2( ), f3( ), f4( ) b puede ser accedida por f1( ), f2( ), f3( ) c puede ser accedida por f1( ), f2( ), f3( ) f1( ) puede ser llamada por f1( ), f2( ), f3( )

Mag. Jube Portalatino Zevallos

42

f2( ) puede ser llamada por f1( ), f2( ), f3( ) y f4( ) f3( ) puede ser llamada por f1( ), f2( ), f3( ) y f4( ) OBSERVACINES Si todas las funciones son privadas solo se puede usar la clase desde fuera. Debe haber por lo menos una funcin (o mtodo) public. Los atributos deben ser private para protegerlos de algn cambio efectuado por una funcin externa a la clase. Ejemplo: xyz m; m.a; m.b; m.c; m.f1(); m.f2(); m.f3(); ANALOGA ENTRE PROGRAMACIN ESTRUCTURADA PROGRAMACIN ORIENTADA A OBJETOS Programacin estructurada Programacin orientada a objetos tipo de dato clase variable objeto Y

Usualmente se debe declarar los atributos (datos miembro) tipo private y las mtodos (funciones miembro) tipo public. Para acceder desde fuera del objeto a sus datos y funciones miembro se escribe: nombre_del_objeto.atributo nombre_del_objeto.mtodo CONSTRUCTORES Un constructor es una funcin miembro que permite inicializar los datos miembro (atributos) de un objeto. Tiene las siguientes caractersticas: Su nombre es igual al de la clase. No devuelve valores. Puede haber ms de un constructor. Se invoca al momento de declarar al objeto. DESTRUCTOR Un destructor es una funcin que permite liberar el rea de memoria ocupada por un objeto cuando este ya no va ser usado. Sus caractersticas son: Su nombre es igual al de la clase, pero precedido por el smbolo ~. No devuelve valores. Slo puede haber un destructor.

Mag. Jube Portalatino Zevallos

43

Se invoca al momento de salir o abandonar el mbito donde fue creado el objeto.

Mag. Jube Portalatino Zevallos

44

Das könnte Ihnen auch gefallen