Programcaión Básica. Arreglos y Estructuras de Datos (2)

Documentos relacionados
Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Elementos de un programa en C

Caracteres y Cadenas Conversión de Datos Funciones y procedimientos Archivos cabecera. Fundamentos de programación

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Programación. Test Autoevaluación Tema 3

FUNDAMENTOS DE INFORMÁTICA 1º Ingeniería Industrial

funciones printf scanf

Software es el sustantivo que denomina a los programas y datos de computadora.

EQUIVALENCIAS EN C DE CONSTRUCCIONES SECUENICIALES EN PSEUDOCÓDIGO

TEMA 2. EL LENGUAJE C. ELEMENTOS BÁSICOS

Lenguaje de programación C. Introducción

Universidad de Pamplona Materia: Programación 1 Docente: Ing. Lusbin Raúl Vargas LENGUAJE C ESTRUCTURA DE UN PROGRAMA EN C

Algoritmos y Programación I

1 Estructura básica de un programa C++

Ficheros conceptos. Manejo de ficheros en C. Apertura del fichero Función fopen: nombre del fichero. Apertura del fichero Función fopen

TEMA 4. ELEMENTOS BÁSICOS DE PROGRAMACIÓN

En este artículo vamos a conocer los tipos de datos que podemos manejar programando en C.

Lenguajes de programación

TIPOS DE DATOS BASICOS EN LENGUAJE C

TEMA 8: ESTRUCTURAS DE DATOS COMPLEJAS 1 VECTORES ESTÁTICOS 2 2 CADENAS O VECTORES DE CARACTERES 6 3 PASO DE CADENAS Y ARRAYS A FUNCIONES 8

Tema 13: Apuntadores en C

Se guardan en archivos con extencion c y los cabezales con extension h

Apuntadores (Punteros)

Curso de Programación en C. Licenciatura, FCQeI. APUNTADORES.

Funciones como Subprogramas en C++

Tema 8 Vectores y Matrices

Informática Ingeniería en Electrónica y Automática Industrial

PROGRAMACION / Clave: 11214

Laboratorio de Arquitectura de Redes. Entrada y salida estándar

Introducción al lenguaje JAVA

Asignatura: Estructuras de Datos. Año Escolar: Grado y Sección: 6to INF A-B Docente: Ing. Yesika Medina

OPERADORES Y EXPRESIONES

Cadenas de Caracteres

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

MIA RICARDO GONZALEZ LOZANO APLICACIONES EN LENGUAJE C

Fundamentos de Programación 2017-I

Paso de Borland Turbo C (bajo DOS) a Anjuta (Linux) 1.

Instituto Tecnológico de Celaya

Preliminares. Tipos de variables y Expresiones

Relación de prácticas de la asignatura METODOLOGÍA DE LA PROGRAMACIÓN Segundo Cuatrimestre Curso º Grado en Informática

INICIACIÓN A LA PROGRAMACIÓN EN C

Tema 14: Arreglos estáticos en C

Manual de Pra cticas de Laboratorio Programacio n Ba sica

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

Práctica 3. Paso de parámetros entre subrutinas. 3. Consideraciones sobre el paso de parámetros

ESCUELA POLITÉCNICA SUPERIOR PRÁCTICA 2: EXPRESIONES, PRINTF Y SCANF

Estructuras de Datos Declaraciones Tipos de Datos

Constantes. Las constantes no cambian durante la ejecucion de un programa en C++, en C++ existen 4 tipos de constantes:

Estructuras de Repetición (Repita para)

Escuela Politécnica Superior de Elche

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Tema 4 Operadores y Expresiones. Fundamentos de Informática

Programación en C. (Segunda Parte) DATSI, FI, UPM José M. Peña. Programación en C

Programación En Lenguaje C

Memoria Dinámica. Jornadas de Marzo 2010 Grupo de Usuarios de Linux Tania Pérez

Vectores. 27/05/05 Programación Digital I 1

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

Arrays y Cadenas en C

Introducción al tipo de dato ARRAY

Cadena de caracteres. 1. Fundamentos de cadenas y caracteres

7. Manejo de Archivos en C.

1 ELEMENTOS BASICOS DEL LENGUAJE

Tema 9. Vectores y Matrices

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Descripción y Contenido del Curso. Programación C++ Capacity Academy.

RELACIÓN DE EJERCICIOS. Tema 3: Introducción al Lenguaje C

Entrada y salida de datos en C y C++

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Tipos de Datos Estructurados

Formatos para prácticas de laboratorio

Formato para prácticas de laboratorio

UNIVERSIDAD DE LOS ANDES NUCLEO UNIVERSITARIO RAFAEL RANGEL (NURR) DEPARTAMENTO DE FISICA Y MATEMATICA AREA COMPUTACION TRUJILLO EDO.

Tema 10: Tipos de datos definidos por el usuario

Cadenas y Caracteres. Universidad Católica de Honduras Nuestra Señora Reina de la Paz. Asignatura. Programación Científica. Tema de Exposición

Curso de Programación Avanzada en C

Manual de turbo pascal

CONCEPTOS BASICOS DEL LENGUAJE JAVA

FACULTAD DE INGENIERÍA

El lenguaje C. 1. Identificadores, constantes y variables

Herramientas computacionales para la matemática MATLAB:Introducción

Generador de analizadores léxicos FLEX

Ejercicio 3 Funciones Parte 1.

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico.

Ficha de Aprendizaje N 13

Expresiones Aritméticas. Programación digital I Escuela de Sistemas Facultad de Ingeniería Gilberto Diaz

PROCEDIMIENTOS Y FUNCIONES DE LA PROGRAMACIÓN (VISUAL BASIC)

Programación en java. Estructuras algorítmicas

ARCHIVOS. 1. Introducción. 2. Definición de archivo. 3. Archivos de acceso secuencial. 4. Gestión de un archivo secuencial de estructuras

LENGUAJE DE PROGRAMACION I. Ing. JAVIER ECHEGARAY ROJO Ing. WILDER ROMAN MUNIVE. Ing. Javier Echegaray Rojo / Ing. Wilder Román Munive Pag 1

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Transcripción:

Programación Básica Arturo Vega González a.vega@ugto.mx Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 7 Universidad de Guanajuato, DCI, Campus León 1 / 29

Contenido 1 Librerías o Biblioteca de Funciones 2 Arreglos Más sobre cadenas Areglos en Fortran 3 Estructuras de Datos Universidad de Guanajuato, DCI, Campus León 2 / 29

Librerías o Biblioteca de Funciones Librerías o Biblioteca de funciones Inclusión de librerías o biblioteca de funciones (Archivos de cabecera) mediante: #i n c l u d e Entonces: #i n c l u d e <s t d i o. h> #i n c l u d e <math. h> #i n c l u d e O t r a s F u n c i o n e s. h #i n c l u d e b i b l i o t e c a. h Universidad de Guanajuato, DCI, Campus León 3 / 29

Librerías o Biblioteca de Funciones Librerías o Biblioteca de funciones Algunas Librerías comunes: stdio.h Provee las funciones básicas de entrada/salida del lenguaje C. stdlib.h Contiene funciones útiles para operaciones como conversión de tipos, generación de números pseudo- aleatorios, gestión de memoria dinámica, control de procesos, funciones de entorno, funciones de ordenación y búsqueda math.h Contiene las funciones matemáticas más comunes string.h Contiene funciones para la manipulación de cadenas de caracteres time.h Contiene funciones para la manipulación de fecha y hora Universidad de Guanajuato, DCI, Campus León 4 / 29

Librerías o Biblioteca de Funciones Librería stdio.h Otras funciones que incluye stdio.h son: getchar(void) putchar(char ch) getc(file *archivo) putc(char ch, FILE *Archivo) fopen(...) fclose(...) fprintf(...) fscanf(...) Lee un caracter de la entrada estándar Escribe un caracter a la salida esándar Lee un caracter de un archivo Escribe un caracter a un archivo Abre un archivo Cierra un archivo Imprime a un archivo Lee de un archivo y varias más... Universidad de Guanajuato, DCI, Campus León 5 / 29

Librerías o Biblioteca de Funciones Librería math.h Algunas funciones que incluye math.h son: double pow(double x, double y) Devuelve el valor de x elevado a y. double sqrt(double x) Devuelve la raíz cuadrada no negativa de x. double sin(double x) Devuelve el seno de x, donde x está dado en radianes. double sinh(double x) Regresa el seno hiperbólico de x. double tan(double x) Devuelve la tangente de x double tanh(double x) Devuelve la tangente hiperbólica de x. double ceil(double x) Redondea x hacia arriba al entero más cercano. double cos(double x) Devuelve el coseno de x double exp(double x) Devuelve el valor de e (la base de los logaritmos naturales) elevado a la potencia x double fabs(double x) Devuelve el valor absoluto del número en punto flotante x. double floor(double x) Redondea x hacia abajo al entero más cercano. y varias más... Universidad de Guanajuato, DCI, Campus León 6 / 29

Librerías o Biblioteca de Funciones Librería stdlib.h Algunas funciones que incluye stdlib.h son: rand(void) srand(unsigned int seed) abs(int x) long int labs(long int x) div t div(int numer, int denom) double atof(const char *cadena) int atoi(const char *cadena) double strtod(const char *cadena, char **finap) double strtol(const char *cadena, char *finap, int base) Devuelve un entero aleatorio Establece la semilla para el generador de números aleatorios Regresa el valor absoluto de x Regresa el valor absoluto de x Calcula el valor numer entre denom y devuelve el cociente y el resto en una estructura llamada div t que contiene dos miembros llamados quot y rem. Convierte una cadena a un valor flotante. Convierte una cadena a un valor entero. Convierte una cadena a un valor de punto flotante. Convierte una cadena a un entero largo de acuerdo a una base dada, la cual deberá estar entre 2 y 36 inclusive. y varias más... Universidad de Guanajuato, DCI, Campus León 7 / 29

Arreglos Arreglos Los arreglos son un conjunto de datos del mismo tipo que tienen un índice para distinguirlos La notación x i es equivalente en C a: x[i]. donde i es el índice de la variable x El conjunto de datos se almacena en espacios de memoria contigua. Los indices en C comienzan en cero (0) Los indices en Fortran generalmente comienzan en uno (1), pero se puede especificar el rango de los indices. Los arreglos pueden ser n-dimensionales. Universidad de Guanajuato, DCI, Campus León 8 / 29

Arreglos Declaración de arreglos C f l o a t A [ 2 0 ] ; f l o a t B [ 5 ] = { 0. 0, 2. 0, 1. 5, 1. 0, 0. 5 } i n t a [ 1 0 ] = { 2 } ; Fortran r e a l, d i m e n s i o n ( 3 ) : : x r e a l, d i m e n s i o n ( 4, 5 ) : : z r e a l, d i m e n s i o n ( 0 : 8 ), A1 r e a l, d i m e n s i o n ( 2 : 5 ), A2 r e a l : : xx ( 3 ), zz ( 4, 5 ) Universidad de Guanajuato, DCI, Campus León 9 / 29

Arreglos Arreglos #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { } i n t t, i, num [ 3 ] [ 4 ] ; f o r ( t =0; t <3; ++t ) f o r ( i =0; i <4; ++i ) num [ t ] [ i ]=( t 4)+ i 1 ; f o r ( t =0; t <3; ++t ) { f o r ( i =0; i <4; ++i ) p r i n t f ( num[%d ][% d ] = %d, t, i, num [ t ] [ i ] ) ; p r i n t f ( \n ) ; } Universidad de Guanajuato, DCI, Campus León 10 / 29

Arreglos Más sobre cadenas Cadenas de caracteres Cadena o string se utiliza para manipular símbolos o caracteres alfanuméricos Una Cadena es básicamente un arreglo de caracteres o del tipo char La terminación de la cadena se debe especificar con un caracter nulo \0 Por lo que hay que considerar un espacio mas! Universidad de Guanajuato, DCI, Campus León 11 / 29

Arreglos Más sobre cadenas Cadenas #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { char cadena [5]= h o l a ; char cadena2 [5]={ h, o, l, a, \0 } ; char nombre [ 1 5 ], a p e l l i d o s [ 3 0 ] ; p r i n t f ( I n t r o d u c e tu nombre : ) ; s c a n f ( %s, nombre ) ; p r i n t f ( I n t r o d u c e t u s a p e l l i d o s : ) ; s c a n f ( %s, a p e l l i d o s ) ; p r i n t f ( Tu Nombre e s %s %s \n, nombre, a p e l l i d o s ) ; } Universidad de Guanajuato, DCI, Campus León 12 / 29

Arreglos Más sobre cadenas Operaciones con Cadenas Las cadenas no se manipulan igual que los enteros o flotantes #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { } char nombre [ 1 5 ], a p e l l i d o s [ 3 0 ], nombrecompleto [ 5 0 ] ; nombre = Ana María ; \ I n c o r r e c t o \ a p e l l i d o s = gómez gómez ; \ I n c o r r e c t o \ nombrecompleto = nombre + a p e l l i d o s ; \ I n c o r r e c t o \ Universidad de Guanajuato, DCI, Campus León 13 / 29

Arreglos Más sobre cadenas Cadenas de caracteres ejemplo de getchar y scanf para leer mientras exista un dato. char ch ; w h i l e ( ch=g e t c h a r ( ), ch>=0 ) // s i e s menor que c e r o e n t o n c e s f i n de d a t o s... char ch ; w h i l e ( s c a n f ( %c, &ch ) == 1 ) // s c a n f r e g r e s a c e r o s i e l c a r a c t e r e s n u l o. Universidad de Guanajuato, DCI, Campus León 14 / 29

Arreglos Más sobre cadenas Cadenas de caracteres Las funciones para manejo de cadenas se encuentran definidas en string.h. char *strcpy(const char *dest, const char *orig) int strcmp(const char *s1, const char *s2) int strlen(const char *s) char *strncat(char *s1, const char *s2, size t n) Copia la cadena de caracteres apuntada por orig al vector apuntado por dest. Compara las dos cadenas de caracteres s1 y s2. Devuelve un entero menor, igual o mayor que cero si se encuentra que s1 es, respectivamente, menor que, igual a, o mayor que s2. Calcula la longitud de la cadena de caracteres. Agrega n caracteres de s2 a s1 y varias mas... Universidad de Guanajuato, DCI, Campus León 15 / 29

Arreglos Más sobre cadenas Cadena de caracteres char s1 = Hola ; char s2 ; i n t l o n g i t u d ; l o n g i t u d = s t r l e n ( Hola ) ; ( v o i d ) s t r c p y ( s2, s1 ) ;... char s1 = Hola ; char s2 = 2 ; i n t l o n g i t u d = 2 ; ( v o i d ) s t r n c p y ( s2, s1, l o n g i t u d ) ; / s2 = Ho / No olvidar incluir string.h Universidad de Guanajuato, DCI, Campus León 16 / 29

Arreglos Areglos en Fortran Declaración de arreglos Fortran r e a l, d i m e n s i o n ( 3 ) : : x r e a l, d i m e n s i o n ( 4, 5 ) : : z r e a l : : w( 3 0 ), M a t r i z ( 1 0, 1 0 ) r e a l, d i m e n s i o n ( 0 : 8 ), A1 r e a l, d i m e n s i o n ( 2 : 5 ), A2 r e a l : : xx ( 3 ), zz ( 4, 5 ) Universidad de Guanajuato, DCI, Campus León 17 / 29

Arreglos Areglos en Fortran Operaciones program o p e r a c i o n e s r e a l : : a ( 3, 3 ), b ( 3, 3 ), c ( 3, 3 ), v1 ( 3 ), v2 ( 3 ), t =3., c1, c2 i n t e g e r : : i, j do i =1,3 do j =1,3 a ( i, j )=( i+j ) end do v1 ( i )= i 6. 5 end do b=t a! p r o d u c t o e l e m e nto a e l e mento c=a+b c= c b=c a v2=s i n ( v1 ) v1=t v1+5 v2! c o m binacion l i n e a l p r i n t, a, b, c end program o p e r a c i o n e s Universidad de Guanajuato, DCI, Campus León 18 / 29

Arreglos Areglos en Fortran Ejercicios (1) Comente el programa anterior Modifique el programa anterior para que imprima la matriz a, b y c en una forma mas entendible (filas y renglones) Escriba un programa en C que pida los datos de dos matrices de 3x3 y las sume Escriba un programa en C que lea una cadena de caracteres en minúsculas y la despliegue en Mayusculas sin usar alguna función de la libreria string.h (tip: ver tabla ASCII) Universidad de Guanajuato, DCI, Campus León 19 / 29

Estructuras de Datos Introducción a Estructura de Datos Conjunto de N elementos que están agrupados por medio de un único nombre. Pueden ser de distinto tipo Es un tipo definido dentro del programa Los elementos o miembros de la estructura pueden a su vez ser otra estructura int char double float otro_tipo... Universidad de Guanajuato, DCI, Campus León 20 / 29

Estructuras de Datos Estructuras de Datos Definición y declaración(1) s t r u c t Nombre { t i p o 1 Campo1 ; t i p o 2 Campo2 ;... tipon CampoN ; } Alumno ; Alumno es una variable del tipo Nombre Universidad de Guanajuato, DCI, Campus León 21 / 29

Estructuras de Datos Estructuras de Datos Definición (2) s t r u c t Nombre { t i p o 1 Campo1 ; t i p o 2 Campo2 ;... tipon CampoN ; } ; Declaración s t r u c t Nombre Var1 ; Universidad de Guanajuato, DCI, Campus León 22 / 29

Estructuras de Datos Estructuras de Datos Acceso a los elementos de una estructura de datos. Se realiza indicando nombre de la variable tipo estructura y el elemento individual separados por un punto. VariableEstructura.ElementoEstructura Cuando se utilizan apuntadores (pointer), el separador es: > VariableEstructura->ElementoEstructura El procesamiento de una estructura solo se puede hacer elemento por elemento. Universidad de Guanajuato, DCI, Campus León 23 / 29

Estructuras de Datos Ejemplo de Estructura de Datos s t r u c t Fecha { i n t Dia ; char Mes [ 1 0 ] ; i n t Anio ; } ;... s t r u c t Fecha Hoy = {21, Marzo,2012}, VarFecha ;... VarFecha = Hoy ; Hoy. Dia = 2 1 ; Hoy. Anio = 2 0 1 2 ; p r i n t f ( El mes e s : %s \n, Hoy. Mes ) ; ( Fecha. Anio % 4 == 0) && ( Fecha. Anio % 100!= 0 ) ) ( Fecha. Anio % 400 == 0) Universidad de Guanajuato, DCI, Campus León 24 / 29

Estructuras de Datos Estructura de Datos Ejemplo #i n c l u d e <s t d i o. h> i n t main ( v o i d ) { s t r u c t { i n t i d ; // i d e n t i f i c a d o r d e l alumno char nom [ 2 0 ] ; // nombre f l o a t c a l i f i c a c i o n ; } alumno ; p r i n t f ( E s c r i b e e l i d e n t i f i c a d o r y e l nombre d e l alumno \n ) ; s c a n f ( %d %s, &alumno. id, alumno. nom ) ; alumno. c a l i f i c a c i o n =80.0; i f ( alumno. i d > 100) p r i n t f ( E l alumno e s %s \n, alumno. nom ) ; r e t u r n ( 0 ) ; } Universidad de Guanajuato, DCI, Campus León 25 / 29

Estructuras de Datos Arreglos de Estructura de Datos s t r u c t t r a b a j a d o r { char nombre [ 2 0 ] ; char a p e l l i d o s [ 4 0 ] ; i n t edad ; } ; s t r u c t t r a b a j a d o r Academicos [ 2 0 ] ; s t r u c t t r a b a j a d o r A d m i n i s t r a t i v o s [ 2 0 ] ; Universidad de Guanajuato, DCI, Campus León 26 / 29

Estructuras de Datos Estructuras de datos Ejercicio: Escriba un programa en C que utilice una estructura (struct), para definir un punto en el plano cartesiano (X,Y) (tipo float) Pida al usuario dos puntos Calcule y despliegue la distancia de un punto a otro d(p 1, P 2 ) = (x 2 x 1 ) 2 + (y 2 y 1 ) 2 Universidad de Guanajuato, DCI, Campus León 27 / 29

Estructuras de Datos Solución (1) #i n c l u d e <s t d i o. h> #i n c l u d e <math. h> i n t main ( v o i d ) { s t r u c t Punto { double x ; double y ; } ; s t r u c t Punto A, B ; double D i s t a n c i a ; p r i n t f ( T e c l e a l o s v a l o r e s d e l punto A ( x, y ) \n ) ; s c a n f ( %l f %l f, &A. x, &A. y ) ; p r i n t f ( T e c l e a l o s v a l o r e s d e l punto B ( x, y ) \n ) ; s c a n f ( %l f %l f, &B. x, &B. y ) ; Universidad de Guanajuato, DCI, Campus León 28 / 29

Estructuras de Datos Solución (2) // c a l c u l a m o s l a d i s t a n c i a e n t r e ambos puntos. D i s t a n c i a = s q r t ( pow ( (B. x A. x ),2)+ pow ( (B. y A. y ), 2 ) ) ; p r i n t f ( La d i s t a n c i a e s : %l f \n, D i s t a n c i a ) ; r e t u r n ( 0 ) ; } Para crear el ejecutable incluir la libreria math.h en el enlazador (caso particular de fedora) gcc d i s t a n c i a. c lm o d i s t a n c i a. out Universidad de Guanajuato, DCI, Campus León 29 / 29