This commit is contained in:
Chenbo Li 2013-08-03 12:14:11 +08:00
commit 4630854d77
3 changed files with 419 additions and 250 deletions

View File

@ -1,248 +0,0 @@
---
language: Visual Basic Console Application
contributors:
- ["Brian Martin", "http://brianmartin.biz"]
filename: learnvisualbasic.vb
Module Module1
Sub Main()
'A Quick Overview of Visual Basic Console Applications before we dive in to the deep end.
'Apostrophe starts comments.
'To Navigate this tutorial within the Visual Basic Complier, I've put together a navigation system.
'This navigation system is explained however as we go deeper into this tutorial, you'll understand what it all means.
Console.Title = ("Learn X in Y Minutes")
Console.WriteLine("NAVIGATION") 'Display
Console.WriteLine("")
Console.ForegroundColor = ConsoleColor.Green
Console.WriteLine("1. Hello World Output")
Console.WriteLine("2. Hello World Input")
Console.WriteLine("3. Calculating Whole Numbers")
Console.WriteLine("4. Calculating Decimal Numbers")
Console.WriteLine("5. Working Calculator")
Console.WriteLine("6. Using Do While Loops")
Console.WriteLine("7. Using For While Loops")
Console.WriteLine("8. Conditional Statements")
Console.WriteLine("9. Select A Drink")
Console.WriteLine("50. About")
Console.WriteLine("Please Choose A Number From The Above List")
Dim selection As String = Console.ReadLine
Select Case selection
Case "1" 'HelloWorld Output
Console.Clear() 'Clears the application and opens the private sub
HelloWorldOutput() 'Name Private Sub, Opens Private Sub
Case "2" 'Hello Input
Console.Clear()
HelloWorldInput()
Case "3" 'Calculating Whole Numbers
Console.Clear()
CalculatingWholeNumbers()
Case "4" 'Calculting Decimal Numbers
Console.Clear()
CalculatingDecimalNumbers()
Case "5" 'Working Calcculator
Console.Clear()
WorkingCalculator()
Case "6" 'Using Do While Loops
Console.Clear()
UsingDoWhileLoops()
Case "7" 'Using For While Loops
Console.Clear()
UsingForLoops()
Case "8" 'Conditional Statements
Console.Clear()
ConditionalStatement()
Case "9" 'If/Else Statement
Console.Clear()
IfElseStatement() 'Select a drink
Case "50" 'About msg box
Console.Clear()
Console.Title = ("Learn X in Y Minutes :: About")
MsgBox("Learn X in Y Minutes is a creation of Adam Bard (@adambard) This particular program tutorial is by Brian Martin (@BrianMartinn")
Console.Clear()
Main()
Console.ReadLine()
End Select
End Sub
'One - I'm using numbers to help with the above navigation when I come back later to build it.
Private Sub HelloWorldOutput() 'We use private subs to seperate different sections of the program.
Console.Title = "Hello World Ouput | Learn X in Y Minutes" 'Title of Console Application
'Use Console.Write("") or Console.WriteLine("") to print outputs.
'Followed by Console.Read() alternatively Console.Readline()
'Console.ReadLine() prints the output to the console.
Console.WriteLine("Hello World")
Console.ReadLine()
End Sub
'Two
Private Sub HelloWorldInput() 'We use private subs to seperate different sections of the program.
Console.Title = "Hello World YourName | Learn X in Y Minutes" 'Title of Console Application
'Variables
'Data entered by a user needs to be stored.
'Variables also start with a Dim and end with an As VariableType.
Dim username As String 'In this tutorial, we want to know what your name, and make the program respond to what is said.
'We use string as string is a text based variable.
Console.WriteLine("Hello, What is your name? ") 'Ask the user their name.
username = Console.ReadLine() 'Stores the users name.
Console.WriteLine("Hello " + username) 'Output is Hello 'Their name'
Console.ReadLine() 'Outsputs the above.
'The above will ask you a question followed by printing your answer.
'Other variables include Integer and we use Integer for whole numbers.
End Sub
'Three
Private Sub CalculatingWholeNumbers() 'We use private subs to seperate different sections of the program.
Console.Title = "Calculating Whole Numbers | Learn X in Y Minutes" 'Title of Console Application
Console.Write("First number: ") 'Enter a whole number, 1, 2, 50, 104 ect
Dim a As Integer = Console.ReadLine()
Console.Write("Second number: ") 'Enter second whole number.
Dim b As Integer = Console.ReadLine()
Dim c As Integer = a + b
Console.WriteLine(c)
Console.ReadLine()
'The above is a simple calculator
End Sub
'Four
Private Sub CalculatingDecimalNumbers()
Console.Title = "Calculating with Double | Learn X in Y Minutes" 'Title of Console Application
'Of course we would like to be able to add up decimals.
'Therefore we could change the above from Integer to Double.
Console.Write("First number: ") 'Enter a whole number, 1.2, 2.4, 50.1, 104.9 ect
Dim a As Double = Console.ReadLine
Console.Write("Second number: ") 'Enter second whole number.
Dim b As Double = Console.ReadLine
Dim c As Double = a + b
Console.WriteLine(c)
Console.ReadLine()
'Therefore the above program can add up 1.1 - 2.2
End Sub
'Five
Private Sub WorkingCalculator()
Console.Title = "The Working Calculator| Learn X in Y Minutes" 'Title of Console Application
'However if you'd like the calculator to subtract, divide, multiple and add up.
'Copy and paste the above again.
Console.Write("First number: ") 'Enter a whole number, 1.2, 2.4, 50.1, 104.9 ect
Dim a As Double = Console.ReadLine
Console.Write("Second number: ") 'Enter second whole number.
Dim b As Integer = Console.ReadLine
Dim c As Integer = a + b
Dim d As Integer = a * b
Dim e As Integer = a - b
Dim f As Integer = a / b
'By adding the below lines we are able to calculate the subtract, multply as well as divide the a and b values
Console.Write(a.ToString() + " + " + b.ToString())
Console.WriteLine(" = " + c.ToString.PadLeft(3)) 'We want to pad the answers to the left by 3 spaces.
Console.Write(a.ToString() + " * " + b.ToString())
Console.WriteLine(" = " + d.ToString.PadLeft(3)) 'We want to pad the answers to the left by 3 spaces.
Console.Write(a.ToString() + " - " + b.ToString())
Console.WriteLine(" = " + e.ToString.PadLeft(3)) 'We want to pad the answers to the left by 3 spaces.
Console.Write(a.ToString() + " / " + b.ToString())
Console.WriteLine(" = " + e.ToString.PadLeft(3)) 'We want to pad the answers to the left by 3 spaces.
Console.ReadLine()
End Sub
'Six
Private Sub UsingDoWhileLoops()
'Just as the previous private sub
'This Time We Ask If The User Wishes To Continue (Yes or No?)
'We're using Do While Loop as we're unsure if the user wants to use the program more than once.
Console.Title = "UsingDoWhileLoops | Learn X in Y Minutes"
Dim answer As String 'We use the variable "String" as the answer is text
Do 'We start the program with
Console.Write("First number: ")
Dim a As Double = Console.ReadLine
Console.Write("Second number: ")
Dim b As Integer = Console.ReadLine
Dim c As Integer = a + b
Dim d As Integer = a * b
Dim e As Integer = a - b
Dim f As Integer = a / b
Console.Write(a.ToString() + " + " + b.ToString())
Console.WriteLine(" = " + c.ToString.PadLeft(3))
Console.Write(a.ToString() + " * " + b.ToString())
Console.WriteLine(" = " + d.ToString.PadLeft(3))
Console.Write(a.ToString() + " - " + b.ToString())
Console.WriteLine(" = " + e.ToString.PadLeft(3))
Console.Write(a.ToString() + " / " + b.ToString())
Console.WriteLine(" = " + e.ToString.PadLeft(3))
Console.ReadLine()
'Ask the question, does the user wish to continue? Unfortunately it is case sensitive.
Console.Write("Would you like to continue? (yes / no)")
answer = Console.ReadLine 'The program grabs the variable and prints and starts again.
Loop While answer = "yes" 'The command for the variable to work would be in this case "yes"
End Sub
'Seven
Private Sub UsingForLoops()
'Sometimes the program only needs to run once.
'In this program we'll be counting down from 10.
Console.Title = "Using For Loops | Learn X in Y Minutes"
For i As Integer = 10 To 0 Step -1 'Declare Vairable and what number it should count down in Step -1, Step -2, Step -3 ect.
Console.WriteLine(i.ToString) 'Print the value of the counter variable
Next i 'Calculate new value
Console.WriteLine("Start") 'Lets start the program baby!!
Console.ReadLine() 'POW!! - Perhaps I got a little excited then :)
End Sub
'Eight
Private Sub ConditionalStatement()
Console.Title = "Conditional Statements | Learn X in Y Minutes"
Dim userName As String = Console.ReadLine
Console.WriteLine("Hello, What is your name? ") 'Ask the user their name.
userName = Console.ReadLine() 'Stores the users name.
If userName = "Adam" Then 'Hey, if Adam uses this program, kudos where kudos is due, right?
Console.WriteLine("Hello Adam")
Console.WriteLine("Thanks for creating the useful tutorial site www.learnxinyminutes.com!")
Console.ReadLine()
Else
Console.WriteLine("Hello " + userName) 'prints the username of the user
Console.WriteLine("Hope all is well have you checked out www.learnxinyminutes.com") 'Prints a message to the user
Console.ReadLine() 'Ends and prints the above statement.
End If
End Sub
'Nine
Private Sub IfElseStatement()
Console.Title = "If / Else Statement | Learn X in Y Minutes"
'Sometimes its important to consider more than two alternatives. Sometimes there are a good few others.
'When this is the case, more than one if statement would be required.
'An if statement is great for vending machines. Where the user enters a code.
'A1, A2, A3, ect to select an item.
'All choices can be combined into a single if statement.
Dim selection As String = Console.ReadLine 'Value for selection
Console.WriteLine("A1. for 7Up")
Console.WriteLine("A2. for Fanta")
Console.WriteLine("A3. for Dr. Pepper")
Console.WriteLine("A4. for Diet Coke")
Console.ReadLine()
If selection = "A1" Then
Console.WriteLine("7up")
Console.ReadLine()
ElseIf selection = "A2" Then
Console.WriteLine("fanta")
Console.ReadLine()
ElseIf selection = "A3" Then
Console.WriteLine("dr. pepper")
Console.ReadLine()
ElseIf selection = "A4" Then
Console.WriteLine("diet coke")
Console.ReadLine()
Else
Console.WriteLine("Please select a product")
Console.ReadLine()
End If
End Sub
End Module
```
## References
I learnt Visual Basic in the console application. It allowed me to understand the principles of computer programming to go on to learn other programming languages easily.
I created a more indepth <a href="http://www.vbbootcamp.co.uk/" Title="Visual Basic Tutorial">Visual Basic tutorial</a> for those who would like to learn more.
The entire syntax is valid. Copy the and paste in to the Visual Basic complier and run (F5) the program.

View File

@ -9,7 +9,7 @@ filename: learnphp.php
This document describes PHP 5+. This document describes PHP 5+.
```php ```php
<?php // PHP code must be enclosed with <?php ?> tags <?php // PHP code must be enclosed with <?php tags
// If your php file only contains PHP code, it is best practise // If your php file only contains PHP code, it is best practise
// to omit the php closing tag. // to omit the php closing tag.
@ -31,7 +31,8 @@ echo "World\n"; // Prints "World" with a line break
// (all statements must end with a semicolon) // (all statements must end with a semicolon)
// Anything outside <?php tags is echoed automatically // Anything outside <?php tags is echoed automatically
?>Hello World Again! ?>
Hello World Again!
<?php <?php

416
scala.html.markdown Normal file
View File

@ -0,0 +1,416 @@
---
language: Scala
filename: learnscala.scala
contributors:
- ["George Petrov", "http://github.com/petrovg"]
- ["Dominic Bou-Samra", "http://dbousamra.github.com"]
filename: learn.scala
---
Scala - the scalable language
```cpp
/*
Set yourself up:
1) Download Scala - http://www.scala-lang.org/downloads
2) unzip/untar in your favourite location and put the bin subdir on the path
3) Start a scala REPL by typing scala. You should see the prompt:
scala>
This is the so called REPL. You can run commands in the REPL. Let's do just
that:
*/
println(10) // prints the integer 10
println("Boo!") // printlns the string Boo!
// Some basics
// Printing, and forcing a new line on the next print
println("Hello world!")
// Printing, without forcing a new line on next print
print("Hello world")
// Declaring values is done using either var or val
// val declarations are immutable, whereas var's are mutable. Immutablility is
// a good thing.
val x = 10 // x is now 10
x = 20 // error: reassignment to val
var x = 10
x = 20 // x is now 20
// Single line comments start with two forward slashes
/*
Multi line comments look like this.
*/
// Boolean values
true
false
// Boolean operations
!true // false
!false // true
true == false // false
10 > 5 // true
// Math is as per usual
1 + 1 // 2
2 - 1 // 1
5 * 3 // 15
6 / 2 // 3
// Evaluating a command in the REPL gives you the type and value of the result
1 + 7
/* The above line results in:
scala> 1 + 7
res29: Int = 8
This means the result of evaluating 1 + 7 is an object of type Int with a
value of 8
1+7 will give you the same result
*/
// Everything is an object, including a function. Type these in the REPL:
7 // results in res30: Int = 7 (res30 is just a generated var name for the result)
// The next line gives you a function that takes an Int and returns it squared
(x:Int) => x * x
// You can assign this function to an identifier, like this:
val sq = (x:Int) => x * x
/* The above says this
sq: Int => Int = <function1>
Which means that this time we gave an explicit name to the value - sq is a
function that take an Int and returns Int.
sq can be executed as follows:
*/
sq(10) // Gives you this: res33: Int = 100.
// Scala allows methods and functions to return, or take as parameters, other
// functions or methods.
val add10: Int => Int = _ + 10 // A function taking an Int and returning an Int
List(1, 2, 3) map add10 // List(11, 12, 13) - add10 is applied to each element
// Anonymous functions can be used instead of named functions:
List(1, 2, 3) map (x => x + 10)
// And the underscore symbol, can be used if there is just one argument to the
// anonymous function. It gets bound as the variable
List(1, 2, 3) map (_ + 10)
// If the anonymous block AND the function you are applying both take one
// argument, you can even omit the underscore
List("Dom", "Bob", "Natalia") foreach println
// Data structures
val a = Array(1, 2, 3, 5, 8, 13)
a(0)
a(3)
a(21) // Throws an exception
val m = Map("fork" -> "tenedor", "spoon" -> "cuchara", "knife" -> "cuchillo")
m("fork")
m("spoon")
m("bottle") // Throws an exception
val safeM = m.withDefaultValue("no lo se")
safeM("bottle")
val s = Set(1, 3, 7)
s(0)
s(1)
/* Look up the documentation of map here -
* http://www.scala-lang.org/api/current/index.html#scala.collection.immutable.Map
* and make sure you can read it
*/
// Tuples
(1, 2)
(4, 3, 2)
(1, 2, "three")
(a, 2, "three")
// Why have this?
val divideInts = (x:Int, y:Int) => (x / y, x % y)
divideInts(10,3) // The function divideInts gives you the result and the remainder
// To access the elements of a tuple, use _._n where n is the 1-based index of
// the element
val d = divideInts(10,3)
d._1
d._2
// Combinators
s.map(sq)
val sSquared = s. map(sq)
sSquared.filter(_ < 10)
sSquared.reduce (_+_)
// The filter function takes a predicate (a function from A -> Boolean) and
// selects all elements which satisfy the predicate
List(1, 2, 3) filter (_ > 2) // List(3)
List(
Person(name = "Dom", age = 23),
Person(name = "Bob", age = 30)
).filter(_.age > 25) // List(Person("Bob", 30))
// Scala a foreach method defined on certain collections that takes a type
// returning Unit (a void method)
aListOfNumbers foreach (x => println(x))
aListOfNumbers foreach println
// For comprehensions
for { n <- s } yield sq(n)
val nSquared2 = for { n <- s } yield sq(n)
for { n <- nSquared2 if n < 10 } yield n
for { n <- s; nSquared = n * n if nSquared < 10} yield nSquared
/* NB Those were not for loops. The semantics of a for loop is 'repeat', whereas
a for-comprehension defines a relationship between two sets of data. */
// Loops and iteration
1 to 5
val r = 1 to 5
r.foreach( println )
r foreach println
// NB: Scala is quite lenient when it comes to dots and brackets - study the
// rules separately. This helps write DSLs and APIs that read like English
(5 to 1 by -1) foreach ( println )
// A while loops
var i = 0
while (i < 10) { println("i " + i); i+=1 }
while (i < 10) { println("i " + i); i+=1 } // Yes, again. What happened? Why?
i // Show the value of i. Note that while is a loop in the classical sense -
// it executes sequentially while changing the loop variable. while is very
// fast, faster that Java // loops, but using the combinators and
// comprehensions above is easier to understand and parallelize
// A do while loop
do {
println("x is still less then 10");
x += 1
} while (x < 10)
// Tail recursion is an idiomatic way of doing recurring things in Scala.
// Recursive functions need an explicit return type, the compiler can't infer it.
// Here it's Unit.
def showNumbersInRange(a:Int, b:Int):Unit = {
print(a)
if (a < b)
showNumbersInRange(a + 1, b)
}
// Conditionals
val x = 10
if (x == 1) println("yeah")
if (x == 10) println("yeah")
if (x == 11) println("yeah")
if (x == 11) println ("yeah") else println("nay")
println(if (x == 10) "yeah" else "nope")
val text = if (x == 10) "yeah" else "nope"
var i = 0
while (i < 10) { println("i " + i); i+=1 }
// Object oriented features
// Classname is Dog
class Dog {
//A method called bark, returning a String
def bark: String = {
// the body of the method
"Woof, woof!"
}
}
// Classes can contain nearly any other construct, including other classes,
// functions, methods, objects, case classes, traits etc.
// Case classes
case class Person(name:String, phoneNumber:String)
Person("George", "1234") == Person("Kate", "1236")
// Pattern matching
val me = Person("George", "1234")
me match { case Person(name, number) => {
"We matched someone : " + name + ", phone : " + number }}
me match { case Person(name, number) => "Match : " + name; case _ => "Hm..." }
me match { case Person("George", number) => "Match"; case _ => "Hm..." }
me match { case Person("Kate", number) => "Match"; case _ => "Hm..." }
me match { case Person("Kate", _) => "Girl"; case Person("George", _) => "Boy" }
val kate = Person("Kate", "1234")
kate match { case Person("Kate", _) => "Girl"; case Person("George", _) => "Boy" }
// Regular expressions
val email = "(.*)@(.*)".r // Invoking r on String makes it a Regex
val email(user, domain) = "henry@zkpr.com"
"mrbean@pyahoo.com" match {
case email(name, domain) => "I know your name, " + name
}
// Strings
"Scala strings are surrounded by double quotes" //
'a' // A Scala Char
'Single quote strings don't exist' // Error
"Strings have the usual Java methods defined on them".length
"They also have some extra Scala methods.".reverse
// Seealso: scala.collection.immutable.StringOps
println("ABCDEF".length)
println("ABCDEF".substring(2, 6))
println("ABCDEF".replace("C", "3"))
val n = 45
println(s"We have $n apples")
val a = Array(11, 9, 6)
println(s"My second daughter is ${a(2-1)} years old")
// Some characters need to be 'escaped', e.g. a double quote inside a string:
val a = "They stood outside the \"Rose and Crown\""
// Triple double-quotes let strings span multiple rows and contain quotes
val html = """<form id="daform">
<p>Press belo', Joe</p>
| <input type="submit">
</form>"""
// Application structure and organization
// Importing things
import scala.collection.immutable.List
// Import all "sub packages"
import scala.collection.immutable._
// Import multiple classes in one statement
import scala.collection.immutable.{List, Map}
// Rename an import using '=>'
import scala.collection.immutable{ List => ImmutableList }
// Import all classes, except some. The following excludes Map and Set:
import scala.collection.immutable.{Map => _, Set => _, _}
// Your programs entry point is defined in an scala file using an object, with a
// single method, main:
object Application {
def main(args: Array[String]): Unit = {
// stuff goes here.
}
}
// Files can contain multiple classes and objects. Compile with scalac
// Input and output
// To read a file line by line
import scala.io.Source
for(line <- Source.fromPath("myfile.txt").getLines())
println(line)
// To write a file use Java's PrintWriter
```
## Further resources
[Scala for the impatient](http://horstmann.com/scala/)
[Twitter Scala school(http://twitter.github.io/scala_school/)
[The scala documentation]
Join the [Scala user group](https://groups.google.com/forum/#!forum/scala-user)