Beruflich Dokumente
Kultur Dokumente
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
COMENTARIOS
C++ / C# / JAVA // Este es un comentario /*Este es un comentario*/ MATLAB % Este es un comentario V. BASIC NET ' Este es un comentario
CONSTANTES
Ejemplos
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 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
OPERADORES
OPERADORES ARITMTICOS C++ / C / C# / JAVA + * V. BASIC NET + *
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
MATLAB ~ & |
escribe un nico carcter escribe un entero escribe un nmero real escribe un numero real en coma flotante
%s %p %ld
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);
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: '
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
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
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
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
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
1: 2:
11
k:
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 }
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.
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
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)
14
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.
15
seno coseno seno hiperblico coseno hiperblico arco seno arco coseno arco tangente
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)
16
comn comn
max min
gcd lcm
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.
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)
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
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;
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
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)
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
24
0
m
1 2 3
1 2 3 4
1 2 3 4
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
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;
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; }
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() {
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];
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
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
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
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
//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
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; }
33
Ejemplo void main( ) { int *p, *q; p=new int; q= new int; *p=8; *q=*p; } 380 p 120 *p
120 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
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
35
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
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.
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 >>.
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())
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
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];
40
oidos ojos
nariz mano
boca piern
s
ver () oler ()
a
oler () comer ()
hablar ()
escuchar ()
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
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( )
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.
43
44