Skip to content

Commit

Permalink
Merge pull request #2 from JuliaIntro/master
Browse files Browse the repository at this point in the history
Actualización 5 de Agosto 2020
  • Loading branch information
pambus authored Aug 5, 2020
2 parents 2cc55da + 7f5b28b commit 9815457
Show file tree
Hide file tree
Showing 29 changed files with 129 additions and 143 deletions.
6 changes: 3 additions & 3 deletions Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "PiensaEnJulia"
name = "IntroAJulia"
uuid = "196a5f1a-c2cd-11e9-0ac3-8b12d691bf53"
authors = ["Christian Peel <[email protected]>"]
version = "0.1.0"
authors = ["Pamela Alejandra Bustamante Faúndez <[email protected]>"]
version = "0.5.0"

[deps]
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
Expand Down
17 changes: 8 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
## Piensa en Julia: Cómo Pensar como un Informático
## Introducción a la Programación en Julia

Una introducción a la programación en el lenguaje informático científico Julia. Una versión en línea está disponible en https://piensaenjulia.github.io/PiensaEnJulia.jl/
Para una versión en inglés, vea [ThinkJulia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html).
Una introducción a la programación en el lenguaje informático científico Julia. Una versión en línea está disponible en https://JuliaIntro.github.io/IntroAJulia.jl/ Para la versión en inglés, vea [ThinkJulia](https://benlauwens.github.io/ThinkJulia.jl/latest/book.html).

## PiensaEnJulia.jl
## IntroAJulia.jl

Todo el código utilizado en este libro está disponible en este repositorio. Este repositorio contiene el texto del libro y también funciona como un paquete de Julia para proporcionar el código utilizado en el libro, por ejemplo, en el capítulo 4 (Diseño de interfaz).

```julia
Pkg.add(PackageSpec(url="https://github.com/PiensaEnJulia/PiensaEnJulia.jl.git"))
using PiensaEnJulia
Pkg.add(PackageSpec(url="https://github.com/JuliaIntro/IntroAJulia.jl.git"))
using IntroAJulia
```

## Cómo contribuir
Expand All @@ -34,11 +33,11 @@ se describe el esquema general para ello:
pip install pygments`.
* Clone este repositorio, por ejemplo con el comando:
```bash
git clone https://github.com/PiensaEnJulia/PiensaEnJulia.jl.git
git clone https://github.com/JuliaIntro/IntroAJulia.jl.git
```
* En Julia, agregue el paquete `PiensaEnJulia` con un comando como el siguiente:
* En Julia, agregue el paquete `IntroAJulia` con un comando como el siguiente:
```julia
julia> Pkg.add(PackageSpec(url="https://github.com/PiensaEnJulia/PiensaEnJulia.jl.git"))
julia> Pkg.add(PackageSpec(url="https://github.com/JuliaIntro/IntroAJulia.jl.git"))
```

* Vaya al directorio `book` en el repositorio y ejecute el comando
Expand Down
32 changes: 11 additions & 21 deletions book/make.jl
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using PiensaEnJulia: makefigs, expandcodeblocks, deploybook
using IntroAJulia: makefigs, expandcodeblocks, deploybook

const root = dirname(@__FILE__)
const src = joinpath(root, "src")
Expand Down Expand Up @@ -51,38 +51,28 @@ if "images" in ARGS
end
end
if "build" in ARGS
println("building files...")
for chap in chaps
expandcodeblocks(root, joinpath("src", chap), joinpath("build", chap))
end
println(" ...done building files")
end
if "pdf" in ARGS
title = "book"
if "notes" in ARGS
title = "notes"
end
println("Run ASCIIDoctor")
run(`/Users/ben/Source/asciidoctor-htmlbook/exe/asciidoctor-htmlbook build/$(title).asciidoc`)
println("Cleanup equations")
book = read("build/$(title).html", String)
book = replace(book, "\\\\(\\("=> "\\(")
book = replace(book, "\\)\\\\)"=> "\\)")
book = replace(book, "\\\\[\\begin{equation}\n{"=> "\\[\n")
book = replace(book, "}\n\\end{equation}\\\\]"=> "\n\\]")
write("build/$(title).html", book)
println("Run mjpage")
#several updates needed to get PDF generation working. One update is
#changing the following statements so they don't emit warnings.
# run(`mjpage --notexhints true --speech false --semantics false --output MML < build/$(title).html > build/output.html`)
# println("Run antennahouse")
# run(`/usr/local/AHFormatterV66/run.sh -d build/output.html -s ~/stack/Configs/styles/book.css -o build/$(title).pdf -i build/config.xml`)
println("building PDF...")
run(`asciidoctor-pdf -d book -b pdf -r asciidoctor-mathematical -a mathematical-format=svg -a compat-mode -a stem=latexmath -a sectnums -a sectnumlevels=1 -a source-highlighter=pygmentize -a toc -a toc=left -a toclevels=2 build/book.asciidoc`)
# run(`asciidoctor-pdf -d book -b pdf -a pdf-style=./custom-theme.yml -a pdf-fontsdir=./fonts -r asciidoctor-mathematical -a mathematical-format=svg -a stem=latexmath -a sectnums -a sectnumlevels=1 -a source-highlighter=pygmentize -a toc -a toc=left -a toclevels=2 build/book.asciidoc`)

println(" ...PDF done.")
elseif "html" in ARGS
println("making HTML...")
run(`asciidoctor -d book -b html5 -a compat-mode -a stem=latexmath -a sectnums -a sectnumlevels=1 -a source-highlighter=pygmentize -a toc -a toc=left -a toclevels=2 build/book.asciidoc`)
book = read("build/book.html", String)
book = replace(book, "\\(\\("=> "\\(")
book = replace(book, "\\)\\)"=> "\\)")
book = replace(book, "\\begin{equation}\\n{"=> "")
book = replace(book, "}\\n\\end{equation}"=> "")
write("build/book.html", book)
println(" ...HTML done.")
elseif "oreilly" in ARGS
run(`cp build/preface.asciidoc $oreilly`)
run(`cp build/chap01.asciidoc $oreilly`)
Expand Down Expand Up @@ -137,7 +127,7 @@ if "deploy" in ARGS
end
deploybook(
root = root,
repo = "github.com/PiensaEnJulia/PiensaEnJulia.jl",
repo = "github.com/JuliaIntro/IntroAJulia.jl",
target = target,
branch = "gh-pages",
latest = "master",
Expand Down
2 changes: 1 addition & 1 deletion book/src/appa.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ La siguiente tabla muestra algunos de los muchos carácteres Unicode que pueden

[options="header"]
|====
|Carácter|Tab completion sequence|representaciónASCII
|Carácter|Tab completion sequence|representación ASCII
|+²+|*+\^2+*|
|+₁+|*+\_1+*|
|+₂+|*+\_2+*|
Expand Down
2 changes: 1 addition & 1 deletion book/src/appc.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ Las diferencias en este libro de ThinkJulia incluyen lo siguiente:

* En vez de usar el texto de la novela "Emma" en el Capítulo 13, se usa el texto de "Don Quijote".

* Debido a que O'Reilly no financió la traducción y no ha hecho planes para un libro impreso, hemos eliminado algunas de las referencias a O'Reilly en el prefacio.
* Debido a que O'Reilly no financió la traducción, hemos eliminado algunas de las referencias a O'Reilly en el prefacio.


2 changes: 1 addition & 1 deletion book/src/backcover.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ Si estás aprendiendo a programar, Julia es un excelente lenguaje compilado en t

Julia fue diseñado desde un principio para tener un alto rendimiento. Este lenguaje de propósito general no solo es ideal para el análisis numérico y la computación científica, sino también para la programación web o scripting. Mediante los ejercicios de cada capítulo, podrás ejercitar los conceptos de programación que has aprendido.

Piensa en Julia es ideal para estudiantes de secundaria o de universidad, así como también para estudiantes autodidactas, estudiantes educados en casa y profesionales que necesiten aprender conceptos básicos de programación.
Intro A Julia es ideal para estudiantes de secundaria o de universidad, así como también para estudiantes autodidactas, estudiantes educados en casa y profesionales que necesiten aprender conceptos básicos de programación.

* Comience con lo básico, incluida la sintaxis y la semántica del lenguaje
Expand Down
4 changes: 1 addition & 3 deletions book/src/book.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,9 @@ ifdef::preface-title[:preface-title: Prefacio]
:version-label: Versión
:warning-caption: Aviso

= Piensa en Julia: Cómo Pensar como un Informático
= Introducción a la Programación en Julia
Ben Lauwens y Allen Downey; Traducido por Pamela Alejandra Bustamante Faúndez

Este libro aún no está completamente terminado; Se realizarán más cambios en el texto a medida que se revise el libro.

include::colophon.asciidoc[]

include::dedication.asciidoc[]
Expand Down
12 changes: 6 additions & 6 deletions book/src/chap01.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ julia> 1 + 1
2
----

Los fragmentos de código se pueden copiar y pegar textualmente, incluido el prompt "+julia>+" y cualquier salida.
Los fragmentos de código se pueden copiar y pegar textualmente, incluido el prompt +julia>+ y cualquier salida.

Ahora estás listo para comenzar. De aquí en adelante, ya sabrás cómo iniciar Julia REPL y ejecutar el código.

Expand All @@ -75,7 +75,7 @@ Este ((("sentencia de impresión", "función println")))((("output", "sentencia

Las comillas en el programa marcan el principio y el final del texto que se mostrará; no aparecen en el resultado.

Los paréntesis indican que +printl+ es una función. Se estudiarán funciones en <<chap03>>.
Los paréntesis indican que +println+ es una función. Se estudiarán funciones en <<chap03>>.


=== Operadores aritméticos
Expand Down Expand Up @@ -151,18 +151,18 @@ julia> 1,000,000

¡Esto no es lo que esperábamos! Julia entiende +1,000,000+ como una secuencia de enteros separados por comas. Más adelante aprenderemos más sobre este tipo de secuencias.

Sin embargo, puedes ((("guión bajo ($$_$$)", "en enteros"))) ((("$$_$$ (guión bajo)", "en enteros", primary-sortas="* guión bajo"))) obtener el resultado esperado usando 1_000_000.
Sin embargo, puedes ((("guión bajo ($$_$$)", "en enteros"))) ((("$$_$$ (guión bajo)", "en enteros", primary-sortas="* guión bajo"))) obtener el resultado esperado usando +1_000_000+.

=== Lenguajes formales y naturales
_Los lenguajes naturales_ ((("lenguaje natural", id="ch1nat", range="startofrange")))son los idiomas hablados, como el español, inglés y francés. No fueron diseñados por personas (aunque las personas intentan imponerles un orden); sino que evolucionaron naturalmente.

_Los lenguajes formales_ ((("lenguaje formal", id="ch1nat2", range="startofrange")))son idiomas diseñados por personas para propósitos específicos. Por ejemplo, la notación que usan los matemáticos es un lenguaje formal particularmente útil para denotar relaciones entre números y símbolos. Los químicos usan un lenguaje formal para representar su estructura química de las moléculas. Los ((("lenguaje de programación", id="ch1nat3", range="startofrange")))lenguajes de programación también son lenguajes formales, y han sido diseñados para expresar cálculos.

Los lenguajes formales ((("sintaxis", id="ch1nat4", range="startofrange")))tienden a tener reglas estrictas de sintaxis que gobiernan la estructura de las sentencias. Por ejemplo, en matemáticas, la sentencia latexmath:[\(3 + 3 = 6\)] tiene la sintaxis correcta, pero latexmath:[\(3 += 3 \$ 6\)] no. En química, latexmath:[\(\mathrm{H_2O}\)] es una fórmula sintácticamente correcta, pero latexmath:[\(\mathrm{_2Zz}\)] no lo es.
Los lenguajes formales ((("sintaxis", id="ch1nat4", range="startofrange")))tienden a tener reglas estrictas de sintaxis que gobiernan la estructura de las sentencias. Por ejemplo, en matemáticas, la sentencia latexmath:[3 + 3 = 6] tiene la sintaxis correcta, pero latexmath:[3 += 3 \$ 6] no. En química, latexmath:[\mathrm{H_2O}] es una fórmula sintácticamente correcta, pero latexmath:[\mathrm{_2Zz}] no lo es.

Las reglas de sintaxis ((("componentes léxicos", id="ch1nat5", range="startofrange"))) ((("estructura", id="ch1nat6", range= "startofrange"))) pueden ser de dos tipos, correspondientes a componentes léxicos y a la estructura. Los componentes léxicos son los elementos básicos del lenguaje, como palabras, números y elementos químicos. Uno de los problemas con latexmath:[\(3 += 3 \$ 6\)] es que latexmath:[\(\$\)] no es un componente léxico válido en matemáticas (al menos hasta donde conocemos). Del mismo modo, latexmath:[\(\mathrm{_2Zz}\)] no es válido porque no hay ningún elemento con la abreviatura latexmath:[\(\mathrm{Zz}\)].
Las reglas de sintaxis ((("componentes léxicos", id="ch1nat5", range="startofrange"))) ((("estructura", id="ch1nat6", range= "startofrange"))) pueden ser de dos tipos, correspondientes a componentes léxicos y a la estructura. Los componentes léxicos son los elementos básicos del lenguaje, como palabras, números y elementos químicos. Uno de los problemas con latexmath:[3 += 3 \$ 6] es que latexmath:[\$] no es un componente léxico válido en matemáticas (al menos hasta donde conocemos). Del mismo modo, latexmath:[\mathrm{_2Zz}] no es válido porque no hay ningún elemento con la abreviatura latexmath:[\mathrm{Zz}].

El segundo tipo de regla de sintaxis se refiere a la forma en que se combinan los componentes léxicos. La ecuación latexmath:[\(3 += 3 \)] no es válida porque aunque latexmath:[\(+\)] y latexmath:[\(=\)] son componentes léxicos válidos, no puedes tener uno justo después el otro. Del mismo modo, en una fórmula química, el subíndice viene después del nombre del elemento, no antes.
El segundo tipo de regla de sintaxis se refiere a la forma en que se combinan los componentes léxicos. La ecuación latexmath:[3 += 3 ] no es válida porque aunque latexmath:[+] y latexmath:[=] son componentes léxicos válidos, no puedes tener uno justo después el otro. Del mismo modo, en una fórmula química, el subíndice viene después del nombre del elemento, no antes.

Esta es un@ oración en espa$ol bien estructurada con c*mponentes léxicos no válidos. Esta oración léxicos todos componentes los tiene, pero estructura una no válida con.

Expand Down
8 changes: 4 additions & 4 deletions book/src/chap02.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ julia> π_val = 3.141592653589793
3.141592653589793
----

Este ejemplo hace tres asignaciones. La primera asigna una cadena a una nueva variable llamada +mensaje+; la segunda le asigna a la variable +n+ el entero +17+; el tercero asigna el valor (aproximado) de latexmath:[\(\pi\)] a la variable +π_val+ (*+\pi TAB+*).
Este ejemplo hace tres asignaciones. La primera asigna una cadena a una nueva variable llamada +mensaje+; la segunda le asigna a la variable +n+ el entero +17+; el tercero asigna el valor (aproximado) de latexmath:[\pi] a la variable +π_val+ (*+\pi TAB+*).

Una forma común de representar variables en papel es escribir el nombre de la variable con una flecha apuntando a su valor. Este tipo de figura se llama "diagrama de estado" porque muestra en qué estado se encuentra cada una de las variables. La Figura 1, <<fig02-1>>, muestra el resultado del ejemplo anterior.
(((diagrama de estado)))((("diagrama", "estado", see="diagrama de estado")))
Expand Down Expand Up @@ -193,7 +193,7 @@ Cuando una expresión contiene más de un operador, el orden de evaluación depe
* __MU__ltiplicación y __D__ivisión tienen mayor precedencia que la __A__dición y __S__ustracción. Entonces +2*3-1+ es 5, no 4, y +pass:[6+4/2]+ es 8, no 5.
(((pass:[*])))(((pass:[/])))(((pass:[+])))(((pass:[-])))

* Los operadores con la misma precedencia se evalúan de izquierda a derecha (excepto potencias). Entonces, en la expresión +grados/2*π+, la división ocurre primero y el resultado se multiplica por +π+. Para dividir entre latexmath:[\(2\pi\)], puede usar paréntesis, escribir +grados/2/π+ o +grados/2π+.
* Los operadores con la misma precedencia se evalúan de izquierda a derecha (excepto potencias). Entonces, en la expresión +grados/2*π+, la división ocurre primero y el resultado se multiplica por +π+. Para dividir entre latexmath:[2\pi], puede usar paréntesis, escribir +grados/2/π+ o +grados/2π+.

[OBSERVACION]
====
Expand All @@ -213,7 +213,7 @@ En general, no se puede realizar operaciones matemáticas con cadenas, incluso s
----

Pero hay dos excepciones, +*+ y +pass:[^]+.
(((pase: [*]))) (((pase: [^])))
(((pass:[*]))) (((pass:[^])))

El operador +pass:[*]+ realiza _concatenación de cadenas_, lo que significa que une las cadenas de extremo a extremo. Por ejemplo:
((("cadena", "concatenación", see="concatenar")))((("concatenar")))
Expand Down Expand Up @@ -404,7 +404,7 @@ Repitiendo el consejo del capítulo anterior, cada vez que aprenda algo nuevo, d
Practique usando Julia REPL como una calculadora:
(((calculadora)))

. El volumen de una esfera con radio latexmath:[\(r\)] es latexmath:[\(\frac{4}{3} \pi r^3\)]. ¿Cuál es el volumen de una esfera con radio 5?
. El volumen de una esfera con radio latexmath:[r] es latexmath:[\frac{4}{3} \pi r^3]. ¿Cuál es el volumen de una esfera con radio 5?

. Supongamos que el precio de venta de un libro es de $ 24.95, pero las librerías obtienen un descuento del 40%. El envío cuesta $3 por la primera copia y 75 centavos por cada copia adicional. ¿Cuál es el costo total al por mayor de 60 copias?

Expand Down
6 changes: 3 additions & 3 deletions book/src/chap03.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ radianes = 0.7
altura = sin(radianes)
----

Este segundo ejemplo encuentra la razón seno (en inglés sine) de la variable +radianes+. El nombre de esta variable es una pista de que la función +sin+ y las otras funciones trigonométricas (+cos+, +tan+, etc.) toman argumentos en radianes. Para convertir grados a radianes, se debe dividir por 180 y multiplicar por latexmath:[\(\pi\)]:
Este segundo ejemplo encuentra la razón seno (en inglés sine) de la variable +radianes+. El nombre de esta variable es una pista de que la función +sin+ y las otras funciones trigonométricas (+cos+, +tan+, etc.) toman argumentos en radianes. Para convertir grados a radianes, se debe dividir por 180 y multiplicar por latexmath:[\pi]:
(((sin)))((("función", "Base", "sin", see="sin")))(((función trigonométrica)))

[source,@julia-repl-test]
Expand All @@ -100,7 +100,7 @@ julia> sin(radianes)
0.7071067811865475
----

El valor de la variable +π+ es una aproximación de punto flotante de latexmath:[\(\pi \)], con una precisión de aproximadamente 16 dígitos.
El valor de la variable +π+ es una aproximación de punto flotante de latexmath:[\pi ], con una precisión de aproximadamente 16 dígitos.
(((Pi)))

Si sabe de trigonometría, puede verificar el resultado anterior comparándolo con la raíz cuadrada de dos dividido por dos:
Expand Down Expand Up @@ -590,7 +590,7 @@ Escriba una función llamada +justificar_a_la_derecha+ que tome una cadena +s+ c

[source, @julia-eval chap03-ex]
----
using PiensaEnJulia
using IntroAJulia
----

[source, @julia-repl chap03-ex]
Expand Down
Loading

0 comments on commit 9815457

Please sign in to comment.