abril 23, lunes 2018... · 2018-08-13 · declaraciones de variables ... conjunto de valores y...

28
Abril 23, Lunes

Upload: nguyendang

Post on 16-Oct-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Abril23,Lunes

Page 2: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Agendaparaestaclase� EstadosdeTrabajos�  Intervalo� Expresiones&Iteraciones� Constantessimbólicas� TiposdeDatos�  Funciones

Prof. Esp. Ing. José María Sola 114

Page 3: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Prof. Esp. Ing. José María Sola 115

Page 4: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas
Page 5: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

K&R1.2-1.3Variables,Tipodedatos,ExpresionesAritméticasylaSentenciaFor

Page 6: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Problema–TablaFahrenheit-Celsius°C=5/9(°F–32)0 -17 20 -6 40 4 60 15 80 26 100 37 120 48 140 60 160 71 180 82 200 93 220 104 240 115 260 126 280 137 300 148

Page 7: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

/* F2C K&R 1988 */ #include <stdio.h> int main(void){ int fahr, celsius; int lower, upper, step; lower = 0; /*scale lower limit*/ upper = 300; /*upper limit*/ step = 20; /*step size*/ fahr = lower; while (fahr <= upper) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + step; } }

�  Comentarios�  Variables

�  Abstraccióndedatos�  Tipodedatos

�  Declaracionesdevariables�  Anunciodepropiedades�  Asociación�  DeclaraciónconvariosDeclaradores

�  ComienzodelaEjecución(Cómputo)�  Sentencias�  "Sentenciadeasignación"�  Sentenciawhile�  Sentenciacompuesta�  Indentación

�  Estilosdecodificación�  Secuencia�  Expresionesaritméticas�  Divisiónenterayreal�  Formateodelasalida

�  ¿Cómomejorarlaalineación?.

Resolución–Fahrenheit-Celsius°C=5/9(°F–32)

Page 8: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

F-C2–FormatoyPrecisión#include <stdio.h> int main(void){ float fahr, celsius; int lower, upper, step; lower = 0; /* lower limit of temperature scale */ upper = 300; /* upper limit */ step = 20; /* step size */ fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } }

Page 9: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

OtrosformatosparaprinH�  DiferenciaentreValoryFormato

�  65 ,41,101,LXV,A�  1000001

�  %d enterodecimal�  %6d enterodecimal,porlomenosancho6�  %f puntoflotante�  %6f puntoflotante,porlomenosancho6�  %.2f puntoflotantey2caracteresluegodelpunto�  %6.2f puntoflotante,porlomenosancho6y

2caracteresluegodelpunto�  %o octal�  %x hexadecimal�  %c carácter�  %s string�  %% porciento

Prof. Esp. Ing. José María Sola 121

Page 10: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

F-C3–ForgeneralizaWhileyuna"BestPracMce"

#include <stdio.h> int main(void){ float fahr, celsius; int lower, upper, step; lower = 0; upper = 300; step = 20; fahr = lower; while (fahr <= upper) { celsius = (5.0/9.0) * (fahr-32.0); printf("%3.0f %6.1f\n", fahr, celsius); fahr = fahr + step; } }

#include <stdio.h> int main(void){ int fahr; for( fahr = 0; fahr <= 300; fahr = fahr + 20 ) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32) ); }

�  forporwhile�  Variable

celsiusreemplazadaporexpresión

Sentenciasfor

Sentenciaswhile

Page 11: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Ejercicios�  1-3.Encabezadosobrelatabla�  1-4.C-F.

Prof. Esp. Ing. José María Sola 123

Page 12: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

K&R1.4ConstantesSimbólicas

Page 13: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

“Númerosmágicos”#include <stdio.h> int main(void){ int fahr; for( fahr = 0; fahr <= 300; fahr = fahr + 20 ) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32) ); return 0; }

Page 14: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Constantes(oNombres)Simbólicas#include <stdio.h> #define LOWER 0 /* lower limit of table */ #define UPPER 300 /* upper limit */ #define STEP 20 /* step size */ int main(void){ int fahr; for( fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP ) printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32) ); }

Page 15: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

int main(void){

const int LOWER = 0, // lower limit of table

UPPER = 300, // upper limit

STEP = 20; // step size

for (int fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)

printf("%3d %6.1f\n", fahr, (5.0/9.0)*(fahr-32));

}

�  Ejercicio1-5.Modifiqueelprogramaparaqueimprimalatablaenordeninverso,esdecir,desde300hasta0grados.

C11:CalificadorconstyDeclaraciónenfor

Page 16: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

FuncionesdelPreprocesador,ParteII� Yaconocidas

�  Incluirarchivosencabezado,directiva#include�  Reemplazarcomentariosporunespacio�  Concatenarcadenasadyacentes.

� Nueva�  Atenderdirectivas#definequedefinennombresmacroysulistadereemplazo

�  Expandirlosnombresmacro� BestPractice

�  Evitar,enlosposible,elusodefine,buscaralternativasmásabsatractasyconmismaeficiencia.�  http://www.stroustrup.com/bs_faq2.html#macro

Prof. Esp. Ing. José María Sola 128

Page 17: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Prof. Esp. Ing. José María Sola 129

Page 18: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

AlgunosMposdedatos�  TiposEnteros,ordenadosporrango

�  bool Lógico(C99,stdbool.h)�  char Código�  int Palabra�  short Corto�  long Largo

�  TiposFlotantesReales,ordenadosporrango�  float Simpleprecisión�  double Dobleprecisión

�  Eltamañodependedelamáquina,aunquehayrestriccionesymínimos

�  Variantesdeint�  unsigned�  short�  long�  longlong(C99)

�  Variantesdedouble�  long

�  TiposFlotantescomplejos�  float_Complex

�  double�  _Complex�  longdouble_Complex

�  TiposAritméticos�  TiposEnteros�  TiposFlotantes,RealesyComplejos

�  TiposBásicos�  char�  Tiposenteros�  Tiposflotantes

�  Enumeraciones�  enum

�  TiposDerivados(delosanteriores)�  Arreglos�  Estructuras�  Uniones�  Punterosatodosellos.

Prof. Esp. Ing. José María Sola 130

Page 19: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

�  Declaración�  Introduceunnombreenel

programa�  Especificaeltipoparauna

entidadnombrada�  Tipo

�  Conjuntodevaloresyconjuntodeoperacionessobreesosvalores

�  Objeto�  Bloquedememoriaprincipal

quecontieneunvalordeuntipo

�  Valor�  Secuenciadebitsquese

interpretansegúnuntipo�  Variable

�  Objetonombrado

�  AlgunostiposfundamentalesdeC�  Entero(Z),porejemplo,1,42,y1066

�  int

�  Carácter(Σ),porejemplo, 'a', 'z',y'9' �  char

�  Booleano(𝔹):trueyfalse �  bool

�  Númerodepuntoflotantededobleprecisión(R),porejemplo,3.14y2999793.0 �  double

�  DeclaracionesEjemplo:�  int i=42; �  char c='9'; �  bool b=true �  double d=3.14;

Objetos:Tipos,DeclaracionesyVariables

Prof. Esp. Ing. José María Sola 131

Conjuntodevalores

Conjuntodeoperacionessobreesosvalores

Tipodedato

Page 20: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

K&R1.7-1.8FuncionesyArgumentos

Page 21: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

RepasodeFunciones�  Programa

�  Conjunto/Secuenciadefunciones�  Abstracciónprocedural,inclusiveparafuncionesdeunalínea�  QuéversusCómo

�  RecomendablesyEficientes,inclusivecortas�  Aplicarinclusiveparafuncionesdeunalínea�  CALLf:PUSHIP,JMPf�  RET:POPIP

�  PrototipodefunciónoDeclaracióndeFunción�  Definicióndefunción,encualquierordenyendiferentesfuentes

�  Valorytiporetornado.Prof. Esp. Ing. José María Sola 133

Page 22: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

#include <stdio.h> int power(int m, int n); /* test power function */ int main(void){ int i; for( i=0; i<10; ++i ) printf( "%d %d %d\n", i, power(2,i), power(-3,i) ); }

/* power: raise base to n-th power; n >= 0 */ int power(int base,int n){ int i, p; p = 1; for( i=1 ; i<=n ; ++i ) p = p * base; return p; }

�  Pruebaconprogramasimple(DriverProgram)

�  Prototiposysusparámetros�  Argumentossonexpresiones�  Invocacionessonexpresiones�  Ignorarvalordelainvocación�  Argumentoversusparámetro

�  Definicióndefunción�  PrecondiciónyPoscondición,

DominioeImagen�  Localidaddeparámetros�  return expresión; �  Controldeflujo.

RepasodeFunciones(cont.)

Page 23: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

/* power: raise base to n-th power; n >= 0; version 2 */ int power(int base, int n){

int p;

for( p=1 ; n>0 ; --n ) p = p * base;

return p;

}

� Noesdesventaja,esventaja�  ¿Soloin?� Parámetrossonvariables� Efectodeladoacotado� Punterosparasimularelpasajeporreferencia

� Pasajedearreglos.

Pasajeporvalor(ocopia)

Page 24: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Ejercicio�  1-15.Reescribaelprogramadeconversióndetemperaturadelasección1.2paraqueuseunafuncióndeconversión.

Prof. Esp. Ing. José María Sola 136

Page 25: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Términosdelaclase#Definircadatérminoconlabibliograaa�  Expresiones&Iteraciones

�  Abstraccióndedatos�  Declaraciones�  Divisiónenterayreal�  Operacióncerrada�  Valordeunaexpresión�  Efectodeladodeuna

expresión�  Formateodevalor

�  Constantessimbólicas�  “Númerosmágicos”�  Constantessimbólicasó

Nombressimbólicos�  Directiva#define�  Calificadorconst

�  TiposdeDatos�  TiposEnteros�  TiposFlotantes�  Variantesdetipo�  TiposAritméticos�  Tipos"Básicos"�  TiposAritméticos�  TiposDerivados

�  Arreglos�  Estructuras�  Uniones�  Punteros�  Precisión:Moneda

�  Funciones�  Abstracciónprocedural�  Función�  PrototipooDeclaraciónde

función�  ExpresióndeInvocación�  Argumento�  DefinicióndeFunción�  Parámetro�  Nomenclatura(estilo)�  Precondición�  Dominio�  Poscondición�  Imagen�  Programadeprueba(Driver

Program)�  Pasajeporvalor(copia)�  Pasajeporvariable

(referencia)�  Efectodeladodeunafunción�  Localidaddeparámetros�  Sentenciadesaltoreturn�  Simulacióndepasajepor

referencia(variable).

05

Prof. Esp. Ing. José María Sola 137

Page 26: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas

Tareasparalapróximaclase1.  Resolverejercicio1-15.noseentrega,peroesbasedel

próximotrabajo.2.  Repasarsobreenueraciones(enums).3.  Leersorbreuniones(unions).4.  Leersobremake.5.  Leersobreinterfaces.

Prof. Esp. Ing. José María Sola 138

Page 27: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas
Page 28: Abril 23, Lunes 2018... · 2018-08-13 · Declaraciones de variables ... Conjunto de valores y conjunto de operaciones sobre esos ... Formateo de valor función Constantes simbólicas