mayo 8, lunes...agenda para esta clase repaso y árboles de expresión del trabajo #2 máquinas de...
TRANSCRIPT
![Page 1: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/1.jpg)
Mayo8,Lunes
![Page 2: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/2.jpg)
RepasoClaseAnterior� Glosario� Tareas
Prof. Esp. Ing. José María Sola 189
![Page 3: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/3.jpg)
Agendaparaestaclase� Repasoyárbolesdeexpresióndeltrabajo#2� MáquinasdeEstadoII–Implementación� Implementación#2� Strings,Arrays,Punteros,PreyPosIncremento� Trabajo#3–RemoverComentarios
Prof. Esp. Ing. José María Sola 190
![Page 4: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/4.jpg)
Repaso� Token� Lexema� TiposdeToken
� Identificadores� LiteralesCarácter� LiteralesCadena
� IfversusSwitch� MáquinasdeEstado
� Implementación#1� Estadoscomovariableentera� Transicionescomoselecciónestructuradayactualizacióndevariable
� Implementación#1varianteif� Implementación#1varianteswitch
� Construirárbolesdeexpresionesde� nl = nw = nc = 0 � c == ' ' || c == '\n' || c = '\t'
Prof. Esp. Ing. José María Sola 191
![Page 5: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/5.jpg)
![Page 6: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/6.jpg)
Prof. Esp. Ing. José María Sola 193
![Page 7: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/7.jpg)
� Algoritmodelaimplementación#1para“máquinadeMealy”� Mientrashayacaracteres� SeleccionarEstado� SeleccionarCarácter� Accionar� ActualizarEstado
� ¿Cuáleslaabstracciónaplicada?� Abstraccióndedatos� Abstraccióndelcontroldeflujo
� Implementación#1� Estadocomovariableentera� Transicionescomoselección
estructuradayactualizacióndevariable
� ¿Conquéestructuradecontroldeflujolaimplementaría?¿Conifoconswitch?¿Porqué?
� EficienciadeIfydeSwtich� Secuenciadecomparaciones
� Tabladesalto� Implementación#1conif� Implementación#1conswitch
Implementación#1–EstadoscomovariableenterayTransicionescomoselecciónestructuradayactualizacióndevariable
Prof. Esp. Ing. José María Sola 194
![Page 8: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/8.jpg)
while ((c = getchar()) != EOF) if (state == OUT ) if (c == '\n'){ ++nl, ++nc; state = OUT; } else if (c==' ' || c=='\t'){ ++nc; state = OUT; } else { ++nw, ++nc; state = IN; } else /* IN */ if (c == '\n'){ ++nl, ++nc; state = OUT; } else if (c==' ' || c=='\t'){ ++nc; state = OUT; } else { ++nc; state = IN; } printf("%d %d %d\n", nl, nw, nc); return 0;
while ((c = getchar()) != EOF) switch(state){ case OUT: switch(c){ case '\n': ++nc, ++nl; state = OUT; break; case ' ' : case '\t': ++nc; state = OUT; break; default: ++nc; state = IN; } break; default:/* IN */ switch(c){ case '\n': ++nc, ++nl; state = OUT; break; case ' ' : case '\t': ++nc; state = OUT; break; default: ++nc; state = IN; } } printf("%d %d %d\n", nl, nw, nc); return 0;
Implementación#1–IfversusSwitch
![Page 9: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/9.jpg)
MásImplementaciones� Implementación#1
� Estadoscomovariableenum� Transicionescomoselecciónestructuradayactualizacióndevariable
� Implementación#2� Estadoscomoetiquetas� Transicionescomoselecciónestructuradaysaltosincondicionales
� Implementación#3� Estadoscomofuncionesrecursivas� Transicionescomoselecciónestructuradaeinvocaciones
� Implementación#4� Estadocomovariableentera� Transicionescomotabla
� Matrizdepares� Arreglodearreglodeestructurasdedoscampos
� Implementación#5� Estadoscomofuncionesyvariablepunteroafunciónactual� Transicionescomoselecciónestructurada,actualizacióndevariableeinvocaciones
� Implementación#6� Estadoscomovariableenum� TransicionescomofunciónGetNextState(s,c)yDoAction(s)óDoAction(s,c)
� Otras…Prof. Esp. Ing. José María Sola 196
![Page 10: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/10.jpg)
int main(void){ int nl, nw, nc;
nl = nw = nc = 0; goto Out;
Out: switch( getchar() ){ case '\n': ++nl, ++nc; goto Out; case ' ' : case '\t': ++nc; goto Out; case EOF: goto End; default: ++nw, ++nc; goto In; }
In: switch( getchar() ){ case '\n': ++nl, ++nc; goto Out; case ' ' : case '\t': ++nc; goto Out; case EOF: goto End; default: ++nc; goto In; }
End: printf("%d %d %d\n", nl, nw, nc); return 0;
}
Implementación#2–EstadoscomoeFquetasytransicionescomosaltos
![Page 11: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/11.jpg)
EjerciciosdeK&RqueseresuelvenconMáquinasdeEstado� 1-12.Escribaunprogramaqueimprimasuentradadeaunapalabraporlínea
� 1-9.Escribaunprogramaquecopiesuentradaensusalida,remplazandocadasecuenciadeunoomásblancosporunsoloblanco� DiseñarconmáquinadeMealy� DiseñarconmáquinadeMoore
� 1-23.EscribaunprogramaqueremuevatodosloscomentariosdeunprogramaC.Noseolvidedetratarcorrectamentelascadenasyloscaracteresliterales.LoscomentariosenCnoseanidan.
Prof. Esp. Ing. José María Sola 198
![Page 12: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/12.jpg)
https://josemariasola.github.io/ssl/papers/ArraysPointersPrePosIncrement.pdf
Prof. Esp. Ing. José María Sola 199
![Page 13: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/13.jpg)
Removercomentarios
Prof. Esp. Ing. José María Sola 200
![Page 14: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/14.jpg)
Trabajo#3–Removercomentarios[K&R1988]1-23� Basadoenejercicio1-23[K&R1988]:
"EscribaunprogramaqueremuevatodosloscomentariosdeunprogramaC.LoscomentariosenCnoseanidan.Noseolvidedetratarcorrectamentelascadenasyloscaracteresliterales"
� Alcance� Máquinadeestadohíbridaopura:MealyyMoore
� Diagramadeestados� Formalización� IndicarseccionesMealyyseccionesMoore
� Dosimplementaciones,descriptas.NingunapuedeserlaImplementación#1:estadocomovariableytransicionesconselecciónestructurada.
� Siesaplicable,utilizarenum� Switch
� Productos� Diagramademáquinadeestados� Diagramadetransicionesparaunautómatafinitodecadalenguaje� Expresiónregularparacadalenguaje� Implementación1� Implementación2� Bechmark� Makefile
Prof. Esp. Ing. José María Sola 201
![Page 15: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/15.jpg)
Términosdelaclase#DefinircadatérminoconlabibliograTa� Repaso
� Token� Lexema� Identificadores� LiteralesCarácter� LiteralesCadena� IfversusSwitch� Implementación#1demáquinadeestado� ÁrboldeExpresión
� ImplementacionesdeMáquinasdeEstado� Implementación#2
� Estadoscomoetiquetas� Transicionescomosaltosincondicionales
� Sentenciaetiquetada� Sentenciadesalto� Sentenciagoto� Implementación#1
� Estadoscomovariableentera� Transicionescomoselecciónestructuradayactualización
devariable� Implementación#2
� Estadoscomoetiquetas� Transicionescomoselecciónestructuradaysaltos
incondicionales� IntroducciónaImplementación#3
� Estadoscomofuncionesrecursivas� Transicionescomoselecciónestructuradaeinvocaciones
� IntroducciónaImplementación#4
� Estadocomovariableentera� Transicionescomotabla
� Matrizdepares� Arreglodearreglodeestructurasdedoscampos
� IntroducciónaImplementación#5� Estadoscomofuncionesyvariablepunteroafunción
actual� Transicionescomoselecciónestructurada,actualización
devariableeinvocaciones� IntroducciónaImplementación#6
� Estadoscomovariableenum� TransicionescomofunciónGetNextState(s,c)y
DoAction(s)óDoAction(s,c)� Strings,Arrays,Punteros,PreyPostIncremento
� Representacióndestrings� Repasodeefectodeladodeunaexpresión� Repasodevalordeunaexpresión� Valordelpreincremento� Valordelpostincremento� Valordeunaarreglo:direccióndememoriadelprimer
elemento� Aritméticadepunteros� Incrementodepuntero
� Trabajo#3–RemovedordeComentarios� Repasodesecuenciadeescapeencaracteresycadenas� Comentariosdemúltipleslíneas� Comentariosdeunalínea
08
Prof. Esp. Ing. José María Sola 202
![Page 16: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/16.jpg)
Tareasparalapróximaclase1. Comenzaradiseñarlamáquinadeestadosque
remuevecomentarios.
Prof. Esp. Ing. José María Sola 203
![Page 17: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/17.jpg)
![Page 18: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/18.jpg)
![Page 19: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/19.jpg)
Mayo15,Lunes
![Page 20: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/20.jpg)
RepasoClaseAnterior� Glosario� Tareas
Prof. Esp. Ing. José María Sola 207
![Page 21: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/21.jpg)
Agendaparaestaclase� ArreglosyExpresiones� IntroducciónaCadenas� VariablesExternas� Recursividad� ImplementaciónRecursivadeMáquinadeEstado� Tokens
Prof. Esp. Ing. José María Sola 208
![Page 22: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/22.jpg)
K&R1.6Arreglos
![Page 23: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/23.jpg)
Contardígitos,blancosyotros(1de5)� Programaquecuentelacantidaddeocurrenciasdecadadígito,blanco(espacio,tab,nuevalínea),ytodootrocarácter
� Salida� dígitos=9300000001,whitespace=123,other=345
� 12categoríasenentrada;aplicarabstraccióndedatos:� notros� nblancos� ndigitos(i)
� Nodiezvariables� Implementación:Arreglodeenteros� Estructuradelprograma
� Inicialización� Clasificacióndelaentrada� Salida.
Prof. Esp. Ing. José María Sola 210
![Page 24: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/24.jpg)
#include <stdio.h> int main(void){ int c, i, nwhite, nother; int ndigit[10]; /* Inicialización */ nwhite = nother = 0; for ( i = 0; i < 10; ++i ) ndigit[i] = 0;
� "Ladeclaraciónsigueeluso"� BaseyOffset� Operaciónsubindicación
� Binaria� Tipos
� Asociatividad� ID� DI
� Idiompararecorrerarreglo.
Contardígitos,blancosyotros(2de5)
![Page 25: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/25.jpg)
/* Clasificación de la entrada */ while ( (c = getchar()) != EOF ) if ( c >= '0' && c <= '9' ) ++ndigit[ c - '0' ]; else if(c==' ' || c=='\n' || c=='\t') ++nwhite; else ++nother;
� '1'versus1� Adyacentes� Subíndice:entero� Carácterliteralesunenterotipoint
� PrecedenciadeOperadores
� Cortocircuito(short-circuit)yordendeevaluación� x&&y
� ifxthenyelsefalse� x||y
� ifxthentrueelsey� EstilodeMultiway-if.
Contardígitos,blancosyotros(3de3)
![Page 26: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/26.jpg)
c >= '0' && c <= '9' c==' ' || c=='\n' || c=='\t'
� Expresión� Operador� Operando� Valor� Tipo� Efectodelado� Ordendeevaluacióndelosoperandos
� Precedenciadeejecucióndelasopraciones
� Asociatividad(agrupacion)
� ExpresiónPrimaria
ÁrboldeExpresiones
![Page 27: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/27.jpg)
Contardígitos,blancosyotros(5de5) /* Salida */ printf("digits ="); for (i = 0; i < 10; ++i) printf(" %d", ndigit[i]); printf(", white space = %d, other = %d\n", nwhite, nother); return 0; }
![Page 28: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/28.jpg)
Ejercicios� 1-13.Escribirunprogramaparaimprimirelhistogramadelalongituddelaslíneas(palabras)ensuentrada.Máscomplejo,orientaciónvertical
� 1-14.Escribirunprogramaparaimprimirelhistogramadelasfrecuenciasdelosdiferentescaracteresensuentrada.
Prof. Esp. Ing. José María Sola 215
![Page 29: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/29.jpg)
K&R1.9Cadenas
![Page 30: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/30.jpg)
CadenasenANSIC� ¿EnPascal?� ¿EnTurboPascal?� ¿EnC++?� ¿EnSmalltalk?� ¿EnANSIC?
� ¿EnelLenguaje?� ¿EnlaBiblioteca?� Representación
Prof. Esp. Ing. José María Sola 218
![Page 31: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/31.jpg)
¿PorquéCnoFeneelFpoString?� ¿Notienestrings?� Losarreglosnoson"firstclasscitizens"� Eltamañodelarreglonoespartedeltipo
� Contrastar� Pascal� Java/C#� C++� Smalltalk
� Nohayunarepresentacióndirectaenlosregistros,nohayoperacionesenLenguajeMáquinaparamanejarstrings
Prof. Esp. Ing. José María Sola 219
![Page 32: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/32.jpg)
ArreglosdeCaracteres� Ejemplo:Programaqueimprimelalíneamáslarga� Pseudocódigo:
Mientrashayamáslíneas: Siesmáslargaquelaanterior: GuardaresalíneaysulongitudImprimirlalíneamáslarga
� DiseñoTop-Down� Obtenerunalíneadelaentrada� Guardarunalínea
� Funciones� GetLine� Copy.
Prof. Esp. Ing. José María Sola 220
![Page 33: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/33.jpg)
� Datos� Flujo
� Resultados� ¿LíneaoCadena?� ¿Flujo?� ¿Longitud?� ¿Éxito?
� Funciónmatemática� GetLine:� Flujo→� Flujo×Cadena×B×N
� ¿‘\n’?� Parámetrosinout� ¿Máximo?
� Unmismoresultadoparaseñalizardossituacionesdiferentes.Similaragetchar
� PrototipoANSICint getline( char line[], int maxline);.
Obtenerunalíneadelaentrada
Prof. Esp. Ing. José María Sola 221
![Page 34: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/34.jpg)
Copiarunacadena� Datos
� Cadena� Resultados
� Cadena� Funciónmatemática
� Copiar:Cadena→Cadena/Copiar(x)=x� Parámetrosinout� Precondiciones� PrototipoANSIC
void copy(char to[], char from[]);
Prof. Esp. Ing. José María Sola 222
![Page 35: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/35.jpg)
#include <stdio.h> /* maximum input line length */ const int MAXLINE=1000; /* Verbos */ int getline(char line[], int maxline); void copy(char to[], char from[]); int main(void){ int len; /*current line length */ int max; /*maximum length seen so far*/ /* Sustantivos */ char line[MAXLINE]; /*current line*/ char longest[MAXLINE];/*saves longest*/
� Verbosparafunciones
� Sustantivosparavariables
� ComunicaciónGetLine–Main
� Almacenamiento(storage)paraarreglos
Imprimelalíneamáslarga
![Page 36: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/36.jpg)
max = 0; while((len=getline(line,MAXLINE)) > 0) if (len > max) { max = len; copy(longest, line); } if (max > 0) /*there was a line*/ printf("%s", longest); } .
� Copyesvoid,procedimientosdePascal
� %sesperaString� Literal"abc\n"� |a|b|c|\n|\0|� ¿Líneademasiadolarga?� GetLine� Copy� ReescribirMain.
Imprimelalíneamáslarga(cont.)
![Page 37: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/37.jpg)
/* getline: read a line into s, return length */ int getline(char s[], int lim){ int c, i; for(i=0; i < lim-1 && (c=getchar())!=EOF && c!='\n'; ++i ) s[i] = c; if (c == '\n') { s[i] = c; ++i; } s[i] = '\0'; return i; }
� ¿Precondiciones?� ¿Poscondiciones?� Valorretornadoparaseñalizarevento(EOF)yvaloresposiblesdei
� ¿Próximalectura?� ¿Quéocurreconlíneasmayoresalim?
� CerrarcadenaconEOS('\o').
Imprimelalíneamáslarga(cont.)
![Page 38: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/38.jpg)
/* copy: copy 'from' into 'to'; assume 'to' is big enough */ void copy(char to[], char from[]){ int i; i = 0; while( (to[i] = from[i]) != '\0' ) ++i; }
� ¿Precondiciones?� ¿Poscondiciones?� Seusaporsuefecto,noporsuvalor.Entoncesvoid
� Precedencia� Valordelaasignación
� Casolímite� CerrarcadenaconEOS('\o').
Imprimelalíneamáslarga(cont.)
![Page 39: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/39.jpg)
Ejercicios� 1-16.Reviselafunciónmaindelprograma“líneamáslarga”paraqueimprimacorrectamentelalongituddelíneasarbitrariamentelargas,yparaqueimprimalamayorcantidaddetextoposibleparaesalínea
� 1-17.Escribaunprogramaqueimprimalaslíneasmayoresa80
� 1-18.Escribaunprogramaquesaquelosblancosdelfinaldecadalíneayeliminelaslíneasenblanco
� 1-19.Escribaunafunciónreverse(s)queinviertelacadenas.Úseloenunprogramaqueinviertasuentradadealíneas.
Prof. Esp. Ing. José María Sola 227
![Page 40: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/40.jpg)
![Page 41: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/41.jpg)
K&R1.10VariablesExternasyAlcanceÚltimapartedeIntroducciónaANSIC
![Page 42: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/42.jpg)
Sub-bloque
Función/Bloque
Unidaddetraducción
Programa
� Programa� ¿Quéesunprograma?
� ConjuntodeUnidadesdeTraducción(UT,archivosfuente.c)
� VinculaciónentretodaslasUT� oentresoloalgunasUT� oentrealgunasfuncionesde
algunasUT� UT
� Alcance"entretodaslasfunciones� ovinculaciónentresoloalgunas
funciones� Función
� Alcanceenelbloquedelcuerpoqueladefine
� SubBloque� Alcanceenelsubloque.
AlcanceyVinculación
Prof. Esp. Ing. José María Sola 230
![Page 43: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/43.jpg)
VariablesAutomáticas VariablesExternas� VariableAutomática:
privadaolocal� Sololafuncióntieneaccesodirecto� ¿Parámetros?
� Sonvariablesautomáticas� ¿Porquéautomáticas?
� Reservayliberacióndeformaautomática� Pushdeargumentos� Popenparámetros
� Comienzanalinvocarlafunción� Desaparecenalterminar� Noretienenvalorentre
invocaciones� Sininicialización⇒Basura
� MismoNombre⇏MismoObjeto� Variableidegetlineydecopy
� Definidasexternasatodafunción:PúblicasoGlobales
� Accesodirecto,pornombre,desde"todas"lasfuncionesdelaunidaddetraducción� Antesdeusarunnombredevariable,debeestar
declarado� CompararconelbloquemásexternodePascal
� Alternativaalistadeargumentosparacomunicaciónentrefunciones
� DefiniciónyDeclaración� Definidaunasolavez,deformaexterna⇒
Reservadememoria� Declaradas(tipodedato)encadafunciónquela
usa� DeformaExplícitaconkeywordextern� DeformaImplícitaporcontextoyorden
� Vinculadasconotras� ElLinkerconectalasvariables� ¿Entreotrasunidadesdetraducciónoenuna
mismaunidaddetraducción?� Sonvariablesestáticas
� Permanentes⇒Retienenelvalor� Inicializaciónencero.
VariablesAutomáFcasversusVariablesExternas
![Page 44: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/44.jpg)
� Duración(Duration)� Estática
� Eterna� Keyordstatic
� Automática� Parámetros� Bloque� Keyordauto
� "Alocada"� Funcionesestándar
� malloc� calloc� realloc� free
� Alcance(Scope)� Desdeladeclaración
� EnUT� Enfunción� Enbloque
� Retencióndevalorentreinvocaciones� Variabledeclaradadentrodela
función,conlakeywordstatic� Alcance:bloque� Duración:estática
� Vinculación(Linkage)� Funcionesyvariables
� EntrevariasUT� VinculaciónExterna
� DentrodeUT� VinculaciónInterna
� Sinvinculación� struct,enum,typedef,label
Duración,AlcanceyVinculaciónLifeFme,ScopeyLink
Prof. Esp. Ing. José María Sola 232
![Page 45: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/45.jpg)
#include <stdio.h> #define MAXLINE 1000 /* maximum input line size */ /*Analizar semántica*/ int max; /* maximum length seen so far */ char line[MAXLINE]; /* current input line */ char longest[MAXLINE]; /* longest line saved here */ int getline(void); void copy(void);
� Declaracionesexternasdevariables� Prototipos,yaseusaroncomodeclaracionesexternas,puedenhacerseprivadosalasUTconpalabrareservadastatic
� Definicióndevariablesydefunciones.
Ejemplo–VersiónespecializadadeImprimirlalíneamáslarga(1de5)
![Page 46: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/46.jpg)
int main(void){ int len; /* Analizar semántica */ extern int max; extern char longest[]; …
Ejemplo–VersiónespecializadadeImprimirlalíneamáslarga(2de5)
Declaración
Definición
� Declaraciónexterna� Fueradecualquierfunción
� Declaraciónconextern� usaexterndelante� Esopcionalsiexistedefiniciónprevia� Declaracionesconexternenheader(.h)
� ParavincularentreUT� Convenciónyrazóndelnombre
� Puedeserunadeclaraciónexternaointerna� Puedeserdefinición.
DeclExterna
DeclInterna
![Page 47: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/47.jpg)
Ejemplo–VersiónespecializadadeImprimirlalíneamáslarga(3de5) /* Uso de externas y de automáticas */ max = 0; while ((len = getline()) > 0) if (len > max) { max = len; copy(); } if (max > 0) /* there was a line */ printf("%s", longest); return 0; }
![Page 48: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/48.jpg)
Ejemplo–VersiónespecializadadeImprimirlalíneamáslarga(4de5)int getline(void){ int c, i; extern char line[]; /*Analizar semántica*/
for( i=0; i < MAXLINE – 1 && (c=getchar())!=EOF && c!='\n'; ++i ) line[i] = c;
if (c == '\n') { line[i] = c; ++i; }
line[i] = '\0'; return i;
}
![Page 49: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/49.jpg)
Ejemplo–VersiónespecializadadeImprimirlalíneamáslarga(5de5)void copy(void){
int i; /*Analizar semántica*/ extern char line[], longest[];
i = 0; while ((longest[i] = line[i]) != '\0') ++i;
}
![Page 50: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/50.jpg)
#include <stdio.h> #define MAXLINE 1000 int max; char line[MAXLINE]; char longest[MAXLINE]; int getline(void); void copy(void); int main(void){ int len; extern int max; extern char longest[]; max = 0;
while ((len = getline()) > 0) if (len > max) { max = len; copy(); }
if (max > 0) printf("%s", longest);
return 0;
}
int getline(void){ int c, i; extern char line[];
for( i=0; i < MAXLINE – 1 && (c=getchar())!=EOF && c!='\n'; ++i ) line[i] = c;
if (c == '\n') { line[i] = c; ++i; }
line[i] = '\0'; return i;
} void copy(void){
int i; extern char line[], longest[];
i = 0; while((longest[i]=line[i])!='\0') ++i;
}
IdenFficardeclaraciones,definiciones,variablesautomáFcasyvariablesexternas
![Page 51: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/51.jpg)
� Puedensermodificadasaccidentalmente� Definiralfinalydeclararsoloenlasfuncionesquelasdebenusar
� UnprogramaCpuedeestarcompuestoporvariosóUT:escribirmóduloschicos
� Similaresalosatributosdeinstanciaodeclase� Accesiblesportodoslosmétodosdeesaclase
� EnestecasolaclaseesanálogaalaUT
� Lasvariablesexternassiempreestándisponibles� Ventajas
� Disponibilidad� Listadeargumentosmáscortas� Simplificacomunicación� Objetosúnicos:stdin,CPU
� Desventajas� Acoplamientonoobvio� Bugs� Mantenimiento
� Enestecasoperdemoslaoportunidaddecreardosfuncionesgenéricas:getlineycopy� ANSIprovee:fgetsystrcpy.
UFlizacióndevariablesexternas
Prof. Esp. Ing. José María Sola 239
![Page 52: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/52.jpg)
Recursividad
Prof. Esp. Ing. José María Sola 240
![Page 53: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/53.jpg)
¿QuéeslaRecursividad?� Esladefinicióndeunprocesobasadoensupropiadefinición
� Eslarepeticióndeítemsdeunamaneraautosimilar
� Alternativaalaiteración� Definicionesdefuncionesdemanerarecursiva
� "Paraentenderrecursividad,unodebeentenderrecursividad"
� GNU
Prof. Esp. Ing. José María Sola 241
![Page 54: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/54.jpg)
![Page 55: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/55.jpg)
def factorial(n): r = 1 for i in range(1,n+1): r *= i return r
Ejemplo–Factorial
def factorial(n): if n = 0: return 1 return factorial(n-1)*n
![Page 56: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/56.jpg)
QuickSortdef qsort (arr): less = [] pivotList = [] more = [] if len(arr) <= 1: return arr else: pivot = arr[0] for i in arr: if i < pivot: less.append(i) elif i > pivot: more.append(i) else: pivotList.append(i) less = qsort (less) more = qsort (more) return less + pivotList + more
qsort [] = [] qsort (x:xs) = qsort [y|y<-xs, y<x] ++ [x] ++ qsort [y|y<-xs, y>=x]
![Page 57: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/57.jpg)
Tiposderecursividad� Directa� Múltiple� Tail(Final)� Indirecta
Prof. Esp. Ing. José María Sola 245
![Page 58: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/58.jpg)
Tiposdedatosrecursivos data List a = Nil | Cons a (List a) data Tree a = Leaf a | Branch [Tree a]
![Page 59: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/59.jpg)
void printd(int n){ if (n < 0) { putchar('-'); n = -n; } if (n / 10) printd(n / 10); putchar(n%10 + '0'); }
void qsort(int v[], int left, int right){ int i, last; void swap(int v[], int i, int j); if (left >= right) return; /* do nothing if fewer than two elements */ /* move partition elem to v[0] */ swap(v, left, (left + right)/2); last = left; /* partition */ for (i = left + 1; i <= right; i++) if (v[i] < v[left]) swap(v, ++last, i); swap(v, left, last); /*restore partition elem*/ qsort(v, left, last-1); qsort(v, last+1, right); } void swap(int v[], int i, int j){ int temp; temp = v[i]; v[i] = v[j]; v[j] = temp; }
Recursividad–Pros&Cons
![Page 60: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/60.jpg)
Ejercicio� Ejercicio4-12.Versiónrecursivadereverse(s).
Prof. Esp. Ing. José María Sola 248
![Page 61: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/61.jpg)
![Page 62: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/62.jpg)
Prof. Esp. Ing. José María Sola 251
![Page 63: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/63.jpg)
� CategoríasLéxicasóTokens� Identificadores� Palabrasreservadas� Literales
� Enteros� Reales� Caracteres� Cadenas
� Operadoresypuntuación� Otros
� ¿Cuántoshay?
Categorías
Prof. Esp. Ing. José María Sola 252
� LeerK&R1988� A.1� A.2
� LeerMUCH2012� V1s3.6.2.
![Page 64: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/64.jpg)
Términosdelaclase#DefinircadatérminoconlabibliograTa� ArreglosyExpresiones
� Baseyoffsetdearreglos� Declaracióndearreglos� Declaraciónsiguealusoenlaexpresión� Operaciónsubindicacióndearreglo� AsociatividadIDyDI� Precedenciadeoperadores� Cortocircuitoyordendeevaluación� MultiwayMultiway-if� Idiompararecorrerarreglo
� IntroducciónaStrings(Cadenas)� Representaciónenmemoria� Carácternulo� Stringliteral
� VariablesExternas� ¿Quéesunprograma?� UnidaddeTraducción(UT)� VinculaciónentrevariasUT� AlcancedentrodeunaUT� VinculaciónentrediferentesUT� Bloque� Sub-bloque� Variableautomática� Variableexterna� Variableestática� Vínculoentrevariables
� Declaracióndevariables� Definicióndevariables� AlcanceóAlcanceLéxico� Duracióndeltiempodevidaolifetime� Estática� Automática� "Alocada"� DeclaraciónExterna� Declaraciónconextern� DeclaraciónversusDefinción� Stackdeinvoación� Incializacióndeestáticas� Ocultamientodeinformación� Staticparaencapsular� PosincrmentoóIncremento(sufijo)� PredecrementoóDecremento(prefijo)� Aplicacióndevariablesexternas.� Variable
� Recursividad� ImplementaciónRecursivadeMáquinadeEstado� Tokens
09
Prof. Esp. Ing. José María Sola 253
![Page 65: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/65.jpg)
Tareasparalapróximaclase1. Comenzaradiseñarlamáquinadeestadosque
remuevecomentarios.
Prof. Esp. Ing. José María Sola 254
![Page 66: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/66.jpg)
![Page 67: Mayo 8, Lunes...Agenda para esta clase Repaso y árboles de expresión del trabajo #2 Máquinas de Estado II – Implementación Implementación #2 Strings, Arrays, Punteros, Pre y](https://reader035.vdocuments.pub/reader035/viewer/2022070906/5f7791a1ffac8f7b080dc3cc/html5/thumbnails/67.jpg)