Perl1 escalares

438 views
366 views

Published on

Diapositivas utilizadas en el curso de introducción a perl.

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
438
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • Referencia: learning perl 6th ed. página 6\nDiseñado de la siguiente manera: a veces Larry tenía que elegir entre estas dos opciones:\n- hacerlo fácil para el estudiante/novato\n- hacerlo más difícil de aprender pero más fácil para el programador experimentado.\n\n...se escogió siempre la segunda opción.\n\nEjemplo de código:\n- Utiliza funciones con parámetros por defecto\n- syntaxis compacta\n- si no se usasen estas características de perl el mismo código ocuparía mucho más\n\n
  • \n
  • \n
  • \n
  • \n
  • Referencia: learning perl 6th ed. página 13-14\n\nLo haremos durante todo el curso: buscaremos siempre la manera de usar la sintaxis compacta de perl.\n\nla versión menor son tres dígitos, es decir use 5.010 se convierte en 5.10. Si ponemos use 5.100 esto se expande a la versión 5.100 que no existe (existe la 5.10).\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Learning Perl 6th ed. página 24\n\nDado que en perl podemos tener cualquier caracter en una cadena, podríamos hacer lo siguiente:\n- Leer un fichero binario (una imagen por ejemplo) en un escalar.\n- Modificarlo\n- Volver a guardarlo al disco.\n
  • \n
  • \n
  • \n
  • ejemplo: secuencias_escape.pl\n
  • ejemplo: secuencias_escape.pl\n
  • \n
  • ejemplo: operadores_cadena.pl\n
  • ejemplo: operadores_cadena.pl\n
  • ejemplo: operadores_cadena.pl\n
  • operadores_cadena.pl\n
  • \n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Comentario: para que el último funcione es necesario hacer \n\nsay hex(‘xF’) * 10;\nsay oct(‘032’) * 10;\n\nEjemplo: conversion_tipos.pl\n
  • Como hemos visto y veremos, el intérprete puede hacer muchas cosas por nosotros en función del contexto.\n¿Cómo hacemos para que nos avise cuando ve algo sospechoso?\n
  • \n
  • Mostrar el ejemplo de warnings: warnings.pl\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • learning perl 6th edition página 30\nejemplo: variables.pl \n\nNombres de variables:\n$a -> no es muy descriptivo\n\nprint “$a $b $r -> $j”;\nprint “$nombre $apellido1 $apellido2 -> $año”; es mucho más claro\n
  • \n
  • Nombrar\n
  • \n
  • \n
  • La comparación admite cualquier escalar ¿cómo decide perl si el escalar es verdadero o falso?\n
  • \n
  • Hacer el siguiente script de ejemplo:\n\nsay “Di algo:”;\n$line = <STDIN>;if ($line eq "\\n") {\nprint "That was just a blank line!\\n";\n } else {\n print "That line of input was: $line";\n}\n\n#<STDIN> se puede usar en cualquier lugar en el que perl espere un escalar\n# por lo que podemos usarlo directamente dentro del if\nsay "Di algo otra vez:";\nif (<STDIN> eq "\\n") {\n print "¡No has dicho nada!\\n";\n} else {\n print "¡Oído cocina!\\n";\n}\n\nVer cómo estamos comparando que el usuario no introduce nada. Esto lo podemos mejorar\n
  • Ejemplos a poner: chomp.pl\n# En este ejemplo usamos print para que no se imprima un \\n al final de cada línea en la consola\n$cadena = "Cadena con \\\\n al final\\n";\nprint $cadena;\n\nsay "Usamos la función chomp:";\nchomp $cadena;\n\nchomp2.pl\n\nsay "Di algo:"\nchomp ($line = <STDIN>);\nunless ($line) {\nprint "¡No has dicho nada!\\n";\n} else {\nprint "¿te he entendido bien?: $line\\n";\n}\nMacBo\n\n
  • \n
  • Ejercicio a hacer: pasarlo a una sola línea:\n\n$contador = 0;\nsay "contador vale ".($contador+=2) until $contador == 10;\n$contador = 0;\nsay "contador vale ".($contador+=2) while $contador < 10;\n
  • \n
  • Perl1 escalares

    1. 1. Programación en Perl para administradores de sistemas
    2. 2. ¿Qué necesitamos?Intérprete: Linux: viene por defecto en todas las distribuciones Unix: ...cualquier sistema UNIX que se precie lo incluye Mac: viene en el sistema (como buen UNIX que es). Alternativas macports: http://goo.gl/k5HnD Active Perl: http://goo.gl/V8R3h Windows: Active Perl: http://goo.gl/V8R3h Cygwin: http://goo.gl/czYc5
    3. 3. ¿Qué necesitamos?IDE: Plugin de eclipse: http://goo.gl/RnAvo Komodo (Comercial): http://goo.gl/rtnEi Komodo Edit (open source): http://goo.gl/m1d0c padre (linux y windows, en mac la instalación se puede complicar por necesitarse un entorno de 32 bits): http:// goo.gl/jh6ca vi, emacs, joe, gedit, kate... o cualquier editor de texto de UNIX que soporte resaltado de sintaxis. más información: perlfaq3 (http://goo.gl/QkJLL)
    4. 4. Nota curiosa: asemejar la sintaxis de perl con las ¿Perl es fácil o difícil? contracciones en inglés. Perl es fácil de usar, pero “difícil” de aprender while (<>) { chomp; print join("t", (split /:/)[0, 2, 1, 5] ), "n"; }Una vez se maneja la sintaxis es un lenguaje muy productivo:con pocas líneas de texto se consiguen muchos resultados
    5. 5. ¿Cuándo usar perl?Vale para todo: Desde pequeños prototipos o programas “rápidos” escritos en 5 minutos Hasta grandes proyectos que impliquen a varios programadores.Es la mejor herramienta para problemas en los que haya quetrabajar con texto el 90% del tiempo y un 10% en el resto.En su día era el motor de las webs dinámicas (que seajustan a la perfección al caso anterior)
    6. 6. ¿Cuándo no usarlo?Si el software a distribuir no se puededistribuir con código fuente:No se pueden generar binarios.Si no quieres que tus colegas te miren raro...
    7. 7. Nuestro primer programa Abrimos nuestro editor de texto/IDE y escribimos 1.#!/usr/bin/perl 2.print "Mi primer programan";Línea 1: indica al intérprete qué ejecutable usar parainterpretar el programaLínea 2: imprime por pantalla
    8. 8. Ejecutando el programa A través de nuestro IDE, si lo soporta Usando la línea de comandos: perl miscript.pl chmod +x miscript.pl ./miscript.pl Esta forma sólo funciona si el script contiene la línea #!/usr/bin/perl
    9. 9. ...y ahora lo escribimos en perl1.#!/usr/bin/perl2.use 5.010;3.say "Hello World!"; línea 2: forzamos el uso de una versión determinada de perl (5.10) línea 3: usamos la función “say” (disponible en 5.10) porque es más concisa (escribimos menos)
    10. 10. Un script que hace “algo”1.#!/usr/bin/perl2.@lines = `perldoc -u -f atan2`;3.foreach (@lines) {4. s/w<([^>]+)>/U$1/g;5. print;6.} ...no te preocupes si no lo entiendes ¡para eso estamos aquí!
    11. 11. http://www.marcports.org http://www.activestate.com/activeperl http://www.cygwin.com http://www.epic-ide.org http://padre.perlide.org http://perldoc.perl.org/perlfaq.html#the-http://www.activestate.com/komodo-ide http://www.activestate.com/komodo-edit perlfaq3-manpage%3a-Programming-Tools
    12. 12. Escalares
    13. 13. EscalaresTipo de dato más simple que podemos encontraren perl
    14. 14. EscalaresTipo de dato más simple que podemos encontraren perlSirve para almacenar “una unidad algo”
    15. 15. EscalaresTipo de dato más simple que podemos encontraren perlSirve para almacenar “una unidad algo”La mayoría de escalares son números o cadenasde caracteres.
    16. 16. EscalaresTipo de dato más simple que podemos encontraren perlSirve para almacenar “una unidad algo”La mayoría de escalares son números o cadenasde caracteres.Sí, en perl no hay mucha diferencia entre unacadena y un número y el intérprete puede usarlosindistintamente en casi todos los contextos.
    17. 17. Escalares: números
    18. 18. Escalares: númerosDefinición de literal: cómo se representa unvalor en el código fuente de perl.
    19. 19. Escalares: númerosDefinición de literal: cómo se representa unvalor en el código fuente de perl.Perl almacena los números internamentesiempre como “double”, no existe el enterointernamente en perl.
    20. 20. Escalares: númerosLiterales en coma flotante 1.25 7.25e45 -15e-10 -1.2E23
    21. 21. Escalares: númerosLiterales de entero 0 2011 -40 8817264612412 Este número es un poco difícil de leer ¿verdad?
    22. 22. Acordarse más adelante de decir porqué no Escalares: números podemos usar la coma para separar grupos de números.Literales de entero 0 2011 -40 8_817_264_612_412 Así es más claro. Más adelante veremos porqué no podemos usar la coma
    23. 23. Escalares: números
    24. 24. Escalares: númerosNúmeros en hexadecimal: 0xD4F3 0x1377_0B77
    25. 25. Escalares: númerosNúmeros en hexadecimal: 0xD4F3 0x1377_0B77Números en octal: 0377
    26. 26. Escalares: númerosNúmeros en hexadecimal: 0xD4F3 0x1377_0B77Números en octal: 0377Números en binario: 0b111101101 0b111_101_101
    27. 27. Escalares: númerosOperadores: 2+3 5.1 - 2.4 3 * 12 14 / 2 10.2 / 0.3 10 % 3 (Resto de la división entera = 1) 10.5 % 3.2 (se calcula como 10 % 3) 2**3 (2 al cubo = 8)
    28. 28. Tal y como dice el libro, podríamos coger un Escalares: cadenas binario, meterlo en un escalar como una cadena de texto, modificarlo y guardarlo a disco. ¿Tenemos un ejemplo de esto en algún lado?Una cadena es una secuencia de caracteres, porejemplo: hola ☃★๛Cadena más corta: cadena vacíaCadena más larga: la que soporte nuestramemoria ¡no hay límite a nivel del intérprete!
    29. 29. Escalares: cadenasPerl soporta unicode.No activo por defecto por compatibilidad conscripts más antiguos.Para activarlo, utilizar el siguiente pragma alinicio de nuestros scripts: use utf8El fichero tiene que almacenarse en utf8/unicode
    30. 30. Escalares: cadenasLiterales de cadena en perl usando comillas simples: ‘hola’ ‘’ -> cadena vacía ‘Cadena con dos ‘apostrofos’ dentro’ ‘Cadena con una barra invertida’ ‘Cadena con un retorno de carro’ (contiene 30 caracteres)
    31. 31. Escalares: cadenasLiterales de cadena en perl usando comillas dobles: “hola” “” -> cadena vacía “Cadena con dos ”comillas” dentro” “Cadena con ‘comillas simples’ dentro“Las comillas dobles expanden los caracteres de escape: “holata todos” ->tabulador “hola a todosn” “x{2668}”
    32. 32. Escalares: cadenas
    33. 33. Escalares: cadenasn Newliner Returnt Tabf Formfeedb Backspacea Belle Escape (ASCII escape character)007 Any octal ASCII value (here, 007 =bell)x7f Any hex ASCII value (here, 7f =delete)x{2744} Any hex Unicode code point(here, U+2744 = snowflake)
    34. 34. Escalares: cadenasn Newline cC A “control” character (here, Ctrl-C)r Return Barra invertidat Tab “ Comilla doblef Formfeed l Siguiente letra en minúsculab Backspace L Todas las siguientes letras en minúsculaa Bell hasta que se encuentre Ee Escape (ASCII escape character) u Siguiente letra en mayúscula007 Any octal ASCII value (here, 007 = U Todas las siguientes letras en mayúsculabell) hasta que se encuentre Ex7f Any hex ASCII value (here, 7f = Q Escapa todo lo que no sea una letradelete) añadiendo una barra invertida hasta que se encuentre Ex{2744} Any hex Unicode code point(here, U+2744 = snowflake) E Finaliza L, U, or Q
    35. 35. Escalares: cadenas Las comillas dobles interpolan variables1.#!/usr/bin/perl2.use 5.010;3.use utf8;4.$saludo = Hola;5.say "$saludo a todos";------Salida: Hola a todos
    36. 36. Escalares: operadores de cadenas
    37. 37. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n”
    38. 38. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena
    39. 39. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena ¿Qué devuelve lo siguiente? 5x4.8
    40. 40. Escalares: operadores de cadenas Concatenación: · (punto) “hola” . ‘ a todos’ “hola a todos” . “n” Repetición de cadena “Cadena”x3 -> devuelve CadenaCadenaCadena ¿Qué devuelve lo siguiente? 5x4.8 -> 5555
    41. 41. Escalares: conversión automática de tipos¿porqué 5x4.8 devuelve 5555? Para perl no hay mucha diferencia entre 5 y “5” a la hora de almacenar. La distinción se hace a la hora de “usar” el literal. x es un operador de cadena, y espera dos argumentos: una cadena a la izquierda un entero a la derecha por lo tanto, convertirá el primer operando a una cadena y el segundo a un entero lo hace el sólo, nosotros no tenemos que preocuparnos de hacer la conversión de tipos
    42. 42. Escalares: conversión automática de tiposun pequeño test:
    43. 43. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; say “5” + 24; say 7 . 34; say 7.34; say “hola” * 3;say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
    44. 44. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; say 7.34; say “hola” * 3;say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
    45. 45. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; say “hola” * 3;say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
    46. 46. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3;say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
    47. 47. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número)say 6 * “12 es docena”; say “1.67” * “100”; say ‘0xF’ * 10;
    48. 48. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número)say 6 * “12 es docena”; 72 say “1.67” * “100”; say ‘0xF’ * 10;
    49. 49. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número)say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10;
    50. 50. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número)say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10; 0 (número)
    51. 51. Escalares: conversión automática de tipos un pequeño test: say “12” * “3”; 36 say “5” + 24; 29 say 7 . 34; 734 say 7.34; 7.34 say “hola” * 3; 0 (número)say 6 * “12 es docena”; 72 say “1.67” * “100”; 167 say ‘0xF’ * 10; 0 (número)
    52. 52. Escalares: warningsSe pueden activar de dos maneras: use warnings; (sólo a partir de 5.6) #!/usr/bin/perl -w perl -w script.plLa primera tiene la ventaja de que se activansólo para el fichero en la que usa el pragma.Las otras dos se activan para todos los guiones.
    53. 53. Escalares: warningssay “5” + 3; -> no genera un warningsay “5 manzanas” + 3 -> genera unwarning Argument "5 manzanas" isnt numeric in addition (+) at warnings.pl line 12 (#1)
    54. 54. Escalares: warnings¿y si el warning no es suficiente? use diagnostics perl -Mdiagnostics script.pl Argument "5 manzanas" isnt numeric in addition (+) at diagnostics.pl line 12 (#1) (W numeric) The indicated string was fed as an argument to an operator that expected a numeric value instead. If youre fortunate the message will identify which operator was so unfortunate.http://perldoc.perl.org/perldiag.html tiene toda ladocumentación sobre los errores
    55. 55. Escalares: variables
    56. 56. Escalares: variablesAlmacenan un escalar
    57. 57. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador:
    58. 58. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre
    59. 59. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre $_nombre
    60. 60. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre $_nombre $apellido1
    61. 61. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario
    62. 62. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario $2nombres -> MAL
    63. 63. Escalares: variablesAlmacenan un escalarComienzan por $ seguido de un identificador: $nombre $_nombre $apellido1 $nombre_y_apellidos_del_usuario $2nombres -> MAL $años -> correcto si se utiliza use utf8;
    64. 64. Escalares: variablesAsignando valores: $nombre = ‘Luis’; $edad = 25; $decenios = int $edad/10; $usuario = $nombre . ‘ ‘ . $apellidos;
    65. 65. Escalares: variablesImprimiendo variables: say $nombre say “$nombre” -> se prefiere la primera ¡hay que escribir menos! say “$nombre nació en $año”; $singular = “dedo”; say “$singulars”; -> no funciona say “${singular}s” ->este sí
    66. 66. Escalares: comparación Operación Número Cadena Igual == eq Distinto != ne Menor que < lt Mayor que > gtMenor o igual <= leMayor o igual >= ge
    67. 67. Escalares: precedencia de operadores http://perldoc.perl.org/perlop.html
    68. 68. Escalares: if1.if ($nombre gt luis) {2.    print "$name va después que luis.n";3.} else {4.    print "$name o va antes que luis fred.n";5.    print "o es la misma cadenan";6.}
    69. 69. Escalares: verdadero o falsoSi el escalar es el número 0 es falso, cualquierotro número es verdaderoSi el escalar es una cadena vacía, es falso,cualquier otra cadena es verdaderoSi no es un número o una cadena, convertirlo acadena o número y volver a intentarloNota: la única cadena que se convierte a falso,además de la cadena vacía es ‘0’
    70. 70. Escalares: entradaPara leer la entrada estándar usamos eloperador <STDIN>Se puede usar en cualquier lugar en el que perlespere un escalar.Perl sustituirá el operador <STDIN> por laentrada estándar $linea = <STDIN>
    71. 71. Escalares: chomp Toma una cadena como argumento y elimina el retorno de carro (n)1.$text = "a line of textn";2.chomp($text);
    72. 72. Escalares: while1.$contador = 0;2.while ($contador < 10) {3.    $contador += 2;4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 105.}El cuerpo del bucle se evalúa cuando la condición es verdadera
    73. 73. Escalares: until1.$contador = 0;2.untill ($contador == 10) {3.    $contador += 2;4.    print "Contador vale $contadorn";# devuelve 2 4 6 8 105.}El cuerpo del bucle se evalúa cuando la condición es falsa
    74. 74. Ejercicios1. Escribe un programa que calcule el perímetro de una circunferencia de radio 12.5. El perímetro es 2π veces el radio (π = 3.141592654). La respuesta debe estar entorno a 78.5.2. Modificar el programa anterior para que el usuario pueda introducir el radio de la circunferencia.3. Modificar el programa anterior de forma que, si el usuario introduce un número negativo, el perímetro sea cero.4. Escribe un programa que lee dos números (en dos líneas de texto separadas) y calcula el producto.5. Escribe un programa que lea una cadena y un número y muestre la cadena repetida en tantas líneas como el número que haya introducido el usuario. Si se introduce Luis y 3 se devolverán tres líneas en las que pone “Luis”. Si se introduce “Luis” y 789979 saldrán muchas líneas

    ×