SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Sesión 3
Programación Estructurada en ANSI C
Rafael Menéndez de Llano Rozas
DEPARTAMENTO DE INFORMÁTICA Y ELECTRÓNICA
Este material se publica bajo licencia:
Creative Commons BY-NC-SA 4.0
Índice
1. Introducción.
1. Elementos lexicográficos y estructura.
1. Datos escalares, expresiones y entrada/salida básica.
2. Selección.
2. Iteración.
3. Funciones, punteros y estructuración.
4. Datos estructurados.
5. Otros aspectos.
Universidad de Cantabria. Grado de Informática. RMЯ 58
3. Funciones: definición
 La programación estructurada se basa en usar solamente
sentencias secuenciales (de asignación o E/S), condicionales e
iterativas.
 Además ese código debe ser dividido en subrutinas construidas
con ese principio. En C (ANSI C) estas subrutinas se llaman
funciones.
 Tres partes importantes:
1. La definición. La función puede tomar una serie de
argumentos y devolver un dato (por defecto el tipo es int, pero
siempre está bien ponerlo):
tipo_ a_devolver nombre_funcion (declaración de argumentos, …)
{
declaración de variables locales;
Sentencias;
return(); /* el valor devuelto opcionalmente */
}
Universidad de Cantabria. Grado de Informática. RMЯ 59
3. Funciones: uso
2. La declaración. Siempre es conveniente declarar las funciones
que se van a usar (llamar) en otra función. Si la definición se hace
después además es obligatorio. Recomendación: USA SIEMPRE
PROTOTIPOS.
La declaración de la función se hace con prototipos de función que
son casi la primera línea de la función:
tipo_funcion nombre_funcion (tipos de argumentos);
3. El uso. Una vez declarada, se puede llamar asignando el valor
que devuelve (a través del return) a una variable del mismo tipo
(salvo tipo void):
variable = nombre_funcion (argumentos, …);
Universidad de Cantabria. Grado de Informática. RMЯ 60
3. Funciones: uso
#include <stdio.h> /* definicion de cabecera */
int main ()
{
void asteriscos(void); /* declaracion */
asteriscos (); /* llamada */
printf("Aqui pongo un nombren");
asteriscos (); /* llamada */
return(0);
}
void asteriscos (void)
{ /* cuerpo */
int cont; // variable local
for (cont = 1; cont < 40; cont ++)
putchar('*');
putchar('n');
}
Universidad de Cantabria. Grado de Informática. RMЯ 61
Se pueden cambiar
de orden
3. Funciones: peculiaridades
 Se pueden crear prototipos de tres maneras:
 Sólo lo que devuelve, ejemplo: float funcion ();
 Con tipos de argumentos, ejemplo: float funcion (int , float);
 Hasta con nombres, ejemplo: float función (int i, float f);
 Si no se devuelve o no se le pasa nada es void.
 El orden de las funciones en C no está definido pero se
suele poner la función main al principio. Eso nos obliga a
usar prototipos.
 Pueden ser llamadas desde cualquier lugar.
 La función main no se llama (pero nada lo impide).
 No se pueden anidar.
 Una función se puede llamar a sí misma: recursión.
Universidad de Cantabria. Grado de Informática. RMЯ 62
Ejercicio 14: Funciones
 Bájate los programas 17.c, 18.c, 19.c y 20.c
guárdalos en tu directorio.
1. Ábrelos con un editor, examínalos y comprende las
funciones y su uso.
2. Abre el 17 y comenta el prototipo ¿qué pasa?
3. Edita el programa, pasa la función asteriscos antes de main.
¿qué pasa?
4. Comprueba realmente hasta que argumento puedes llegar,
dependiendo del tamaño del dato long en 18.c
5. Entiende la diferencia entre un programa iterativo y uno
recursivo.
6. Observa que el programa 20 no tiene fin.
Universidad de Cantabria. Grado de Informática. RMЯ 63
3. Funciones: Argumentos y punteros
 Los argumentos a una función se pueden pasar de
varias formas:
 Por valor: En la función se copia el valor actual (copia
parámetro actual al formal) del argumento y los cambios no
tienen repercusión fuera de la función.
 Constante: Con la palabra reservada const indicamos explícitamente
que no se debe cambiar.
 Por referencia: Se quiere que la función cambie el argumento
con que se la ha llamado.
 Para ello en C se utiliza un tipo de dato que contiene direcciones
y se llama puntero.
 Existen tantos tipos de puntero como tipos de variables.
 Para declararlos se utiliza “*”:
int *entero;
float *real;
int variable;
Universidad de Cantabria. Grado de Informática. RMЯ 64
3. Punteros
Universidad de Cantabria. Grado de Informática. RMЯ 65
 Para trabajar con punteros existen dos operadores unarios:
 Dirección: &.
 Indirección: *.
 Además los operadores asignación, suma y resta también se
pueden usar (avanzarán o retrocederán posiciones en memoria de
acuerdo al tipo de datos apuntado).
var_entera = 23; /* almacenado en $5000 */
pun_entero = &var_entera; /* almacenado en $5004 */
var_entera = *pun_entero; /* equivalente a la primera */
3. Funciones: Paso por referencia
 Ejemplo de paso por referencia:
void intercambia(int *u, int *v)
{
int temp;
/* lo apuntado por u se pone en temp */
temp = *u;
/* lo apuntado por v se pone en lo apuntado por u */
*u = *v;
/* el valor de temp se pone en la dirección v */
*v = temp;
}
 Dos cosas muy importantes a tener en cuenta con los punteros:
1. Siempre se usan inicializados:
1. Con la dirección de una variable.
2. Con un array.
3. De forma dinámica (malloc y calloc) (equivalente a new).
2. Con suficiente espacio.
Universidad de Cantabria. Grado de Informática. RMЯ 66
Ejercicio 15: Funciones
 Bájate los programas 21.c y guárdalo en tu directorio.
1. Ábrelo con un editor, examínalo y comprende las funciones
y su uso.
2. Observa que el programa 21 no tiene main.
3. Crea uno para que intercambia dos valores de enteros.
4. Cambia la función para que uno de los argumentos sea
constante, compila e indica lo que pasa.
 Usando la palabra reservada const
Universidad de Cantabria. Grado de Informática. RMЯ 67
3. Variables: ámbito (scope)
 Existen varios tipos de ámbito de variables:
 Globales: Se declaran fuera de las funciones y se conocen
después de declararlas.
 Normalmente es una mala práctica de programación hacer uso
intenso de variables globales, ya que siempre pueden ser
cambiadas inadvertidamente desde cualquier función.
 Una forma aceptable de hacerlo es declarándolas de tipo extern
en las funciones, con lo cual se explicita que es global.
extern int varible_global; //por ejemplo una entero
 Locales: Se declaran dentro de las funciones y sólo se
conocen allí. Incluido el main. Pueden ocultar a las globales.
 Locales a un bloque. Sólo se conocerá en el bloque ( { } )
donde se han declarado.
 Además se pueden hacer constantes con const:
const float pi = 3.1416;
Universidad de Cantabria. Grado de Informática. RMЯ 68
3. Variables: Almacenamiento
 Al ser el C de medio nivel, el compilador puede
intentar controlar el modo de almacenamiento de las
variables:
 Automáticas: “auto”. Por defecto. No se suele poner.
 Externas: “extern”. Es una forma explícita de declarar que se
va a usar una variable global. ¡ No se crea !
 Estáticas: “static”. Permanecen durante toda la ejecución del
programa.
 Cuando una variable es local, es almacenada en el stack y cuando esa
función termina desaparece.
 Con static se logra que una variable permanezca durante toda la
ejecución del programa.
 Registros: “register”. Se “intentarán” localizar en algún
registro de la CPU.
Universidad de Cantabria. Grado de Informática. RMЯ 69
Ejercicio 16: Variables
 Bájate los programas 22.c y guárdalo en tu directorio.
1. Ábrelos con un editor, examínalo y comprende las variables,
su ámbito y su almacenamiento.
2. Haz una predicción de los valores que aparecerán en
pantalla.
3. Ejecútalo y comprueba que lo has entendido.
Universidad de Cantabria. Grado de Informática. RMЯ 70
3. Variables
void funcion (int arg1, int arg2) // los argumentos con otros nombres
{
auto char local1; /* no seria necesario el auto */
int local2; /* variable local a funcion */
int global = 54; // oculta la global
local1 = '@';
local2 = 32;
printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global);
{ //bloque
int local2; /* locales al nuevo ambito */
register int local3;
local2 = 15; /* nos referimos a la interior */
local3 = 4;
printf("ttdesde muy dentro valores de 1 2 y 3: %c %d %dn", local1, local2, local3);
}
printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global);
/* local2 valdra 32 y no 15, ya que es la de fuera */
/* Esto no se puede hacer, ya que aqui local3 no existe y daria errores de compilacion*/
// local3 = 232;
arg1 = 345; arg2 = 35; // no cambian fuera
printf("tdesde dentro valores de uno otro global: %d %d %dn", arg1, arg2, global);
}
Universidad de Cantabria. Grado de Informática. RMЯ 71
3. Funciones: main
 En C existen muchas funciones ya realizadas que se
conocen como la librería C estándar. Mira apuntes.
 En C es posible definir funciones con un tipo variable
de argumentos. Ej.: printf.
 A la función main se le pueden pasar tres argumentos
que hasta ahora no hemos usado:
 int argc; // entero con el numero de argumentos pasados
 char ** argv; // array con nombres de los argumentos
 Incluso existe un tercero que nos da las opciones de
la shell dentro del programa:
 char ** opciones;
Observa el ejemplo entorno.c
Universidad de Cantabria. Grado de Informática. RMЯ 72

Más contenido relacionado

La actualidad más candente (20)

Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Apuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje cApuntes1 elementos del lenguaje c
Apuntes1 elementos del lenguaje c
 
Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2Lenguajesdeprogramacion c nivel1-unidad2
Lenguajesdeprogramacion c nivel1-unidad2
 
Introducción a C++
Introducción a C++Introducción a C++
Introducción a C++
 
Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.Estructura de-un-programa-en-lenguaje-c.
Estructura de-un-programa-en-lenguaje-c.
 
Funciones en C++
Funciones en C++Funciones en C++
Funciones en C++
 
Funciones en Lenguaje C
Funciones en Lenguaje CFunciones en Lenguaje C
Funciones en Lenguaje C
 
OPERADORES PARA C++
OPERADORES PARA C++OPERADORES PARA C++
OPERADORES PARA C++
 
Tutorial C
Tutorial CTutorial C
Tutorial C
 
Lenguajec diapositivas
Lenguajec diapositivasLenguajec diapositivas
Lenguajec diapositivas
 
Funcion printf
Funcion printfFuncion printf
Funcion printf
 
ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA ESTRUCTURA DE UN PROGRAMA
ESTRUCTURA DE UN PROGRAMA
 
C++
C++C++
C++
 
C++ y sus librerias
C++ y sus libreriasC++ y sus librerias
C++ y sus librerias
 
Operaciones Basicas C++
Operaciones Basicas C++Operaciones Basicas C++
Operaciones Basicas C++
 
Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++Elementos Basicos del Lenguaje C++
Elementos Basicos del Lenguaje C++
 
ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++ESTRUCTURA BASICA PARA C++
ESTRUCTURA BASICA PARA C++
 

Similar a Sesion 4

Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacioncharnisch
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinasmezano09
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinasAngel Perez
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinasmezano09
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxErrol31
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivasstarduslex
 
Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1SANTIAGO PABLO ALBERTO
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacionYsaac Ruiz
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacionrotflol
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguajeyuli02
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguajeyuli02
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Jennybeatriz1
 
Unidad1
Unidad1Unidad1
Unidad1JHONNY
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1camnav
 

Similar a Sesion 4 (20)

Lenguaje De Programacion
Lenguaje De ProgramacionLenguaje De Programacion
Lenguaje De Programacion
 
Introduccion a C++.pdf
Introduccion a C++.pdfIntroduccion a C++.pdf
Introduccion a C++.pdf
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
Roberto orta salinas
Roberto orta salinasRoberto orta salinas
Roberto orta salinas
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
Programacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptxProgramacion IV - Semana 02.pptx
Programacion IV - Semana 02.pptx
 
Lenguaje c diapositivas
Lenguaje c diapositivasLenguaje c diapositivas
Lenguaje c diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Lenguajes diapositivas
Lenguajes diapositivasLenguajes diapositivas
Lenguajes diapositivas
 
Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1Microcontroladores: Programación de microcontroladores tomo 1
Microcontroladores: Programación de microcontroladores tomo 1
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
Elementos basicos de programacion
Elementos basicos de programacionElementos basicos de programacion
Elementos basicos de programacion
 
1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
1ra parte elementos basicos del lenguaje
 1ra parte elementos basicos del lenguaje 1ra parte elementos basicos del lenguaje
1ra parte elementos basicos del lenguaje
 
Funcionesclase1
Funcionesclase1Funcionesclase1
Funcionesclase1
 
Visual c++
Visual c++Visual c++
Visual c++
 
Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_Curso lenguaje c_segundo_modulo_
Curso lenguaje c_segundo_modulo_
 
Unidad1
Unidad1Unidad1
Unidad1
 
Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1Lenguajesdeprogramacion c nivel1-unidad1_1
Lenguajesdeprogramacion c nivel1-unidad1_1
 

Último

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfbcondort
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internamengual57
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDEdith Puclla
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCarlosGabriel96
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimientoMaxanMonplesi
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)Ricardo705519
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfvladimirpaucarmontes
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariasusafy7
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxwilliam801689
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosRamiroCruzSalazar
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUManuelSosa83
 
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdfJM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdfMiguelArango21
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónmaz12629
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upnDayronCernaYupanquiy
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaAndreBarrientos3
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 

Último (20)

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
Sistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión internaSistema de lubricación para motores de combustión interna
Sistema de lubricación para motores de combustión interna
 
413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
413924447-Clasificacion-de-Inventarios-ABC-ppt.ppt
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptxCALCULO DE ENGRANAJES RECTOS SB-2024.pptx
CALCULO DE ENGRANAJES RECTOS SB-2024.pptx
 
Gestion de proyectos para el control y seguimiento
Gestion de proyectos para el control  y seguimientoGestion de proyectos para el control  y seguimiento
Gestion de proyectos para el control y seguimiento
 
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
analisis tecnologico( diagnostico tecnologico, herramienta de toma de deciones)
 
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdfMODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
MODIFICADO - CAPITULO II DISEÑO SISMORRESISTENTE DE VIGAS Y COLUMNAS.pdf
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
tesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa mariatesis maíz univesidad catolica santa maria
tesis maíz univesidad catolica santa maria
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelosFicha Tecnica de Ladrillos de Tabique de diferentes modelos
Ficha Tecnica de Ladrillos de Tabique de diferentes modelos
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
 
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdfJM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
JM HIDROGENO VERDE- OXI-HIDROGENO en calderas - julio 17 del 2023.pdf
 
Presentacion de la ganaderia en la región
Presentacion de la ganaderia en la regiónPresentacion de la ganaderia en la región
Presentacion de la ganaderia en la región
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieria
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 

Sesion 4

  • 1. Sesión 3 Programación Estructurada en ANSI C Rafael Menéndez de Llano Rozas DEPARTAMENTO DE INFORMÁTICA Y ELECTRÓNICA Este material se publica bajo licencia: Creative Commons BY-NC-SA 4.0
  • 2. Índice 1. Introducción. 1. Elementos lexicográficos y estructura. 1. Datos escalares, expresiones y entrada/salida básica. 2. Selección. 2. Iteración. 3. Funciones, punteros y estructuración. 4. Datos estructurados. 5. Otros aspectos. Universidad de Cantabria. Grado de Informática. RMЯ 58
  • 3. 3. Funciones: definición  La programación estructurada se basa en usar solamente sentencias secuenciales (de asignación o E/S), condicionales e iterativas.  Además ese código debe ser dividido en subrutinas construidas con ese principio. En C (ANSI C) estas subrutinas se llaman funciones.  Tres partes importantes: 1. La definición. La función puede tomar una serie de argumentos y devolver un dato (por defecto el tipo es int, pero siempre está bien ponerlo): tipo_ a_devolver nombre_funcion (declaración de argumentos, …) { declaración de variables locales; Sentencias; return(); /* el valor devuelto opcionalmente */ } Universidad de Cantabria. Grado de Informática. RMЯ 59
  • 4. 3. Funciones: uso 2. La declaración. Siempre es conveniente declarar las funciones que se van a usar (llamar) en otra función. Si la definición se hace después además es obligatorio. Recomendación: USA SIEMPRE PROTOTIPOS. La declaración de la función se hace con prototipos de función que son casi la primera línea de la función: tipo_funcion nombre_funcion (tipos de argumentos); 3. El uso. Una vez declarada, se puede llamar asignando el valor que devuelve (a través del return) a una variable del mismo tipo (salvo tipo void): variable = nombre_funcion (argumentos, …); Universidad de Cantabria. Grado de Informática. RMЯ 60
  • 5. 3. Funciones: uso #include <stdio.h> /* definicion de cabecera */ int main () { void asteriscos(void); /* declaracion */ asteriscos (); /* llamada */ printf("Aqui pongo un nombren"); asteriscos (); /* llamada */ return(0); } void asteriscos (void) { /* cuerpo */ int cont; // variable local for (cont = 1; cont < 40; cont ++) putchar('*'); putchar('n'); } Universidad de Cantabria. Grado de Informática. RMЯ 61 Se pueden cambiar de orden
  • 6. 3. Funciones: peculiaridades  Se pueden crear prototipos de tres maneras:  Sólo lo que devuelve, ejemplo: float funcion ();  Con tipos de argumentos, ejemplo: float funcion (int , float);  Hasta con nombres, ejemplo: float función (int i, float f);  Si no se devuelve o no se le pasa nada es void.  El orden de las funciones en C no está definido pero se suele poner la función main al principio. Eso nos obliga a usar prototipos.  Pueden ser llamadas desde cualquier lugar.  La función main no se llama (pero nada lo impide).  No se pueden anidar.  Una función se puede llamar a sí misma: recursión. Universidad de Cantabria. Grado de Informática. RMЯ 62
  • 7. Ejercicio 14: Funciones  Bájate los programas 17.c, 18.c, 19.c y 20.c guárdalos en tu directorio. 1. Ábrelos con un editor, examínalos y comprende las funciones y su uso. 2. Abre el 17 y comenta el prototipo ¿qué pasa? 3. Edita el programa, pasa la función asteriscos antes de main. ¿qué pasa? 4. Comprueba realmente hasta que argumento puedes llegar, dependiendo del tamaño del dato long en 18.c 5. Entiende la diferencia entre un programa iterativo y uno recursivo. 6. Observa que el programa 20 no tiene fin. Universidad de Cantabria. Grado de Informática. RMЯ 63
  • 8. 3. Funciones: Argumentos y punteros  Los argumentos a una función se pueden pasar de varias formas:  Por valor: En la función se copia el valor actual (copia parámetro actual al formal) del argumento y los cambios no tienen repercusión fuera de la función.  Constante: Con la palabra reservada const indicamos explícitamente que no se debe cambiar.  Por referencia: Se quiere que la función cambie el argumento con que se la ha llamado.  Para ello en C se utiliza un tipo de dato que contiene direcciones y se llama puntero.  Existen tantos tipos de puntero como tipos de variables.  Para declararlos se utiliza “*”: int *entero; float *real; int variable; Universidad de Cantabria. Grado de Informática. RMЯ 64
  • 9. 3. Punteros Universidad de Cantabria. Grado de Informática. RMЯ 65  Para trabajar con punteros existen dos operadores unarios:  Dirección: &.  Indirección: *.  Además los operadores asignación, suma y resta también se pueden usar (avanzarán o retrocederán posiciones en memoria de acuerdo al tipo de datos apuntado). var_entera = 23; /* almacenado en $5000 */ pun_entero = &var_entera; /* almacenado en $5004 */ var_entera = *pun_entero; /* equivalente a la primera */
  • 10. 3. Funciones: Paso por referencia  Ejemplo de paso por referencia: void intercambia(int *u, int *v) { int temp; /* lo apuntado por u se pone en temp */ temp = *u; /* lo apuntado por v se pone en lo apuntado por u */ *u = *v; /* el valor de temp se pone en la dirección v */ *v = temp; }  Dos cosas muy importantes a tener en cuenta con los punteros: 1. Siempre se usan inicializados: 1. Con la dirección de una variable. 2. Con un array. 3. De forma dinámica (malloc y calloc) (equivalente a new). 2. Con suficiente espacio. Universidad de Cantabria. Grado de Informática. RMЯ 66
  • 11. Ejercicio 15: Funciones  Bájate los programas 21.c y guárdalo en tu directorio. 1. Ábrelo con un editor, examínalo y comprende las funciones y su uso. 2. Observa que el programa 21 no tiene main. 3. Crea uno para que intercambia dos valores de enteros. 4. Cambia la función para que uno de los argumentos sea constante, compila e indica lo que pasa.  Usando la palabra reservada const Universidad de Cantabria. Grado de Informática. RMЯ 67
  • 12. 3. Variables: ámbito (scope)  Existen varios tipos de ámbito de variables:  Globales: Se declaran fuera de las funciones y se conocen después de declararlas.  Normalmente es una mala práctica de programación hacer uso intenso de variables globales, ya que siempre pueden ser cambiadas inadvertidamente desde cualquier función.  Una forma aceptable de hacerlo es declarándolas de tipo extern en las funciones, con lo cual se explicita que es global. extern int varible_global; //por ejemplo una entero  Locales: Se declaran dentro de las funciones y sólo se conocen allí. Incluido el main. Pueden ocultar a las globales.  Locales a un bloque. Sólo se conocerá en el bloque ( { } ) donde se han declarado.  Además se pueden hacer constantes con const: const float pi = 3.1416; Universidad de Cantabria. Grado de Informática. RMЯ 68
  • 13. 3. Variables: Almacenamiento  Al ser el C de medio nivel, el compilador puede intentar controlar el modo de almacenamiento de las variables:  Automáticas: “auto”. Por defecto. No se suele poner.  Externas: “extern”. Es una forma explícita de declarar que se va a usar una variable global. ¡ No se crea !  Estáticas: “static”. Permanecen durante toda la ejecución del programa.  Cuando una variable es local, es almacenada en el stack y cuando esa función termina desaparece.  Con static se logra que una variable permanezca durante toda la ejecución del programa.  Registros: “register”. Se “intentarán” localizar en algún registro de la CPU. Universidad de Cantabria. Grado de Informática. RMЯ 69
  • 14. Ejercicio 16: Variables  Bájate los programas 22.c y guárdalo en tu directorio. 1. Ábrelos con un editor, examínalo y comprende las variables, su ámbito y su almacenamiento. 2. Haz una predicción de los valores que aparecerán en pantalla. 3. Ejecútalo y comprueba que lo has entendido. Universidad de Cantabria. Grado de Informática. RMЯ 70
  • 15. 3. Variables void funcion (int arg1, int arg2) // los argumentos con otros nombres { auto char local1; /* no seria necesario el auto */ int local2; /* variable local a funcion */ int global = 54; // oculta la global local1 = '@'; local2 = 32; printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global); { //bloque int local2; /* locales al nuevo ambito */ register int local3; local2 = 15; /* nos referimos a la interior */ local3 = 4; printf("ttdesde muy dentro valores de 1 2 y 3: %c %d %dn", local1, local2, local3); } printf("tdesde dentro valores de 1 2 y global: %c %d %dn", local1, local2, global); /* local2 valdra 32 y no 15, ya que es la de fuera */ /* Esto no se puede hacer, ya que aqui local3 no existe y daria errores de compilacion*/ // local3 = 232; arg1 = 345; arg2 = 35; // no cambian fuera printf("tdesde dentro valores de uno otro global: %d %d %dn", arg1, arg2, global); } Universidad de Cantabria. Grado de Informática. RMЯ 71
  • 16. 3. Funciones: main  En C existen muchas funciones ya realizadas que se conocen como la librería C estándar. Mira apuntes.  En C es posible definir funciones con un tipo variable de argumentos. Ej.: printf.  A la función main se le pueden pasar tres argumentos que hasta ahora no hemos usado:  int argc; // entero con el numero de argumentos pasados  char ** argv; // array con nombres de los argumentos  Incluso existe un tercero que nos da las opciones de la shell dentro del programa:  char ** opciones; Observa el ejemplo entorno.c Universidad de Cantabria. Grado de Informática. RMЯ 72