programaci n cient fica n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Programación Científica PowerPoint Presentation
Download Presentation
Programación Científica

Loading in 2 Seconds...

play fullscreen
1 / 19

Programación Científica - PowerPoint PPT Presentation


  • 94 Views
  • Uploaded on

Programación Científica. Dr. Romeo S ánchez Nigenda . E-mail: romeo.sanchez @ gmail.com http: //yalma.fime.uanl.mx/~ romeo / Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón Horas de Tutoría: 10am-11am Martes y Jueves Website: http://yalma.fime.uanl.mx /~ romeo/Prog/

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Programación Científica' - alyn


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
programaci n cient fica

Programación Científica

Dr. Romeo SánchezNigenda.

E-mail: romeo.sanchez@gmail.com

http://yalma.fime.uanl.mx/~romeo/

Oficina: 1er. Piso del CIDET. Oficina con Dr. Oscar Chacón

Horas de Tutoría: 10am-11am Martes y Jueves

Website: http://yalma.fime.uanl.mx/~romeo/Prog/

Sesiones: 48

* Slides aumentados con información de Dr. Roger Ríos, y Dr. Fernando López

slide2

40% Proyecto

30% Examen Parcial

30% Examen Final

10% Participación

Temario:

  • Fundamentos de Programación en C
  • Apuntadores y Funciones
  • Arreglos y Estructuras
  • Manejo de Memoria
  • Recursividad
  • Entrada y Salida de Archivos
  • Desarrollo y Depuración de Proyecto de Programación

Total a calificar: 110 puntos!

material de apoyo
Material de apoyo:

A. KELLY, I. POHL. A Book on C. Addison-Wesley, Reading, EUA, 1998.

2. B. KERNIGHAN, D. RITCHIE. The C Programming Language. Prentice Hall, Second Edition, 1988.

3. D. KNUTH. The Art of Computer Programming. Addison Wesley, 1998.

4. H. DEITEL, P. DEITEL. Como Programar en C/C++. Prentice Hall, Segunda Edición. 1995.

5. L. Joyanes, I. Zahonero. Programación en C - Metodología, Algoritmos y Estructura de Datos. McGraw Hill-Interamericana, 2006.

6. B. Stroustrup. The C++ Programming Language. Addison Wesley. Third Edition. 1997.

Software:

Compiladores GCC (GNU CompilerCollection)

IDEs (IntegratedDevelopmentEnvironment):

http://www.eclipse.org/downloads/

http://kdevelop.org/

http://www.bloodshed.net/devcpp.html

arreglos
Arreglos
  • Definiciones
    • Unidimensional: Conjunto finito y ordenado de elementos homogéneos
    • Elementos de igual tamaño almacenados linealmente en posiciones de memoria consecutivas
  • El nombre del arreglo es visto como un puntero al primer elemento del arreglo
  • Operaciones Básicas
    • Extracción: Función que toma un arreglo a y un índice i, y retorna un elemento del arreglo: int x = a[i];
    • Almacenamiento: Acepta un arreglo a, un índice i, y un elemento x, y asigna a[i] = x;
arreglos1
Arreglos
  • Declaración
    • TipoNombreArreglo[NúmeroElementos]
    • Ejemplos:
      • floatsalarios[5];
      • charalfabeto[30]; [0] [1] [2] [3] [4]
  • Inicialización
    • Por defecto: Cuando son creados, se aplica solamente a arreglos globales y estáticos
    • Explícita: Cuando son creados, suministrando datos de iniciación
    • En ejecución: Durante ejecución, cuando se asignan o copian datos al arreglo.
    • Ejemplos
      • double scores[5] = {5.5, 6.7, 9.8, 10.0, 8.7};
      • int estado[3] = {-1, 0, 1};
      • char alfabeto[] = {‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘\0’};
      • char vocales[10] = {‘a’, ’e’, ‘i’, ‘o’, ‘u’,’\0’};

índice

arreglos y punteros
Arreglos y punteros

v

  • El nombre del arreglo es la dirección de su primer elemento (base)

int v[50];

int *p;

p = v; // Equivalente a p = &v[0];

*p = 5; // Equivalente a v[0] = 5;

p = p + 5; // Equivalente a p = &v[5];

*p = 9; // Equivalente a v[5] = 9;

N

índice

0

1

N-2

N-1

arreglos de caracteres strings
Arreglos de caracteres (strings)
  • No existen Strings en C, son solamente arreglos de caracteres con la convención que un carácter nulo (‘\0’) esalmacenado al final del último carácter para marcar el final de la cadena.
  • Ejemplo:

char*p = “ejemplo”;

      • La variable puntero p obtiene la dirección del primer elemento en el arreglo (e). El compilador coloca un carácter null al final del arreglo

charlocalnombre[10];

strcpy(localnombre, “PEPITO”);

      • Copiamos la constante de caracteres en el arreglo local
arreglos de caracteres strings1
Arreglos de caracteres (strings)
  • Traversandoarreglos de caracteresusandopunteros:
arreglos de caracteres strings2
Arreglos de caracteres (strings)
  • Revirtiendo los valores de un arreglo.

int main(){

char string[1000];

intlongitud;

strcpy(string, “helloworld”);

longitud = strlen(string);

}

inti, j;

char temp;

for(i=0, j=longitud-1; i<j;i++,j--){

temp = string[i];

string[i] = string[j];

string[j] = temp;

}

arreglos multidimensionales
Arreglos Multidimensionales
  • Por dimensión entendemos como el número de índices utilizados para referirse a un elemento particular en el arreglo.
  • Bidimensional: TypeArrayName[numFilas][numColumnas]

Ejemplo:

intmiarray[3][5];

En memoria

Fila 0

Fila 1

Fila 2

miarray[1][2]

Inicializamos el array:

int fila, columna;

for(fila = 0; fila < numFilas; fila++)

for(columna = 0; columna<numColumnas; columna++)

miarray[fila][columna] = 0;

arreglos multidimensionales1
Arreglos Multidimensionales
  • A través de punteros:

intmiarray[3][5]

int *p = *myarray;

for(intfila=0;fila<3;fila++)

for(intcol=0;col<5;col++)

*(p + 5*fila + col) = 0;

int (*nn)[5] = ia;

for (intpn=0;pn<15;pn++){

cout<<"ia: "<<*(*nn+pn)<<endl;

}

int *myp = *ia;

for (intpn=0;pn<15;pn++){

cout<<"ia: "<<*(myp+pn)<<endl;

}

tipos de datos complejos registros estructuras en c c
Tipos de Datos Complejos: Registros (estructuras) en C/C++
  • Un registro o estructura es un grupo de componentes en el cual cada componente tiene su propio identificador, cada uno de los cuales se conoce como un elemento (campo) de la estructura
  • Es un grupo de variables (elementos) que pueden ser de diversos tipos sostenidas agrupadas en una sola unidad. La unidad es la estructura.
  • Definición general:

structtype-name{elementos};

registros estructuras en c c
Registros (estructuras) en C/C++
  • Ejemplo:

struct {

char sexo;

intedad;

char primernombre[10];

char apellido[15];

} minombre;

      • La definición crea una variable minombrede tipo estructura con 3 campos
      • La definición por sí misma no genera asignación de memoria, ésta se da únicamente cuando variables del tipo de la estructura son instanciadas
registros estructuras en c c1
Registros (estructuras) en C/C++
  • Podemos usar etiquetas, y declarar variables usando la etiqueta:

structtiponombre{

char sexo;

int edad;

charprimernombre[10];

char apellido[30];

};

structtiponombreminombre, tunombre;

typedefstruct{

char sexo;

int edad;

charprimernombre[10];

char apellido[30];

} TIPONOMBRE;

TIPONOMBRE minombre, tunombre;

registros estructuras en c c2
Registros (estructuras) en C/C++
  • Para acceder a los elementos de una estructura, usamos la variable y el nombre del elemento separados por el operador de punto:

structtiponombreminombre;

Para almacenar valores:

minombre.sexo = ‘M’;

minombre.edad = 5;

Para leer información de la estructura

cout<<minombre.sexo;

registros estructuras en c c3
Registros (estructuras) en C/C++
  • Puededeclararse un arreglo de estructurasparaagruparinformación:

structtiponombre nombres[100];

Estocrea un conjunto de 100 registros de tipoestructura.

Para acceder a uno de los registros se utilizaníndices.

nombres[0].sexo = ‘M’;

nombres[0].edad = 5;

registros estructuras en c c4
Registros (estructuras) en C/C++
  • Puede declararse que un elemento de una estructura sea otra estructura:

typedefstruct{

char calle[30];

intnum;

char ciudad [10];

char estado [3];

charcpostal [6];

} TIPODIRECCION;

typedefstruct{

TIPONOMBRE alumnonombre;

TIPODIRECCION alumnodireccion;

} TIPOALUMNO;

TIPOALUMNO alumno_x;

Como accesar al valor de calle a través de la variable alumno_x?

registros estructuras en c c5
Registros (estructuras) en C/C++
  • Punteros a Estructuras: El operador ->

main(){

structtiponombre x; //x es una instancia de tiponombre

structtiponombre* y; //y es un puntero a una instancia de tiponombre

x.sexo = ‘M’;

y = &x; //y apunta a la dirección de la estructura x

y ->sexo = ‘f’; //Equivalente a x.sexo = ‘f’;

}

Qué representa la siguiente definición?

typedefstruct{

TIPOALUMNO alumno;

RECORDS * palumno;

} RECORDS;

estructuras como par metros
Estructuras como parámetros
  • Por referencia

. . .

struct seguro poliza;

imprime_poliza(&poliza);

voidimprime_poliza(struct seguro * mipoliza){

cout<<“Número de Póliza: <<mipoliza->numseguro;

….

if(mipoliza->clase == VIDA){

cout<<mipoliza->seguroinfo.beneficiario;

}

}