プログラム言語 基本
プログラムの開始
{
public partial class myForm : Form
{
public myForm()
{
InitializeComponent();
}
private void myForm_Load(object sender, EventArgs e)
{
SubRoutin1();
Boolean x = SubRoutin2();
}
private void SubRoutin1()
{ ~ }
private Boolean SubRoutin2()
{
return true;
}
}
}
Private Sub myForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Call Subroutin1()
Dim x As Boolean = SubRoutin2()
End Sub
~
Private Sub Subroutin1()
End Sub
Private Function SubRoutin2() As Boolean
Return True
End Function
End Class
{
~
return 0;
}
※コンパイル方法については「JAVA 重要用語/javac.exe」参照
> java (クラスファイル名) (引数1) (引数2)
> java Base a b c
※実行時のオプションについては「JAVA 重要用語/java.exe」参照
※Base.java
public class Base {
public static void main(String[] args) {
String prm1 = args[0];
⇒prm1 : a
String prm2 = args[1];
⇒prm1 : b
String prm3 = args[2];
⇒prm1 : c
}
}
エントリーポイント:プログラムが最初に実行される場所
アクセス修飾子:public
静的属性:static
メソッド名:main
引数:String[] ※変数名は変更可
<html lang=”ja”>
<head>
</head>
<body>
<?php
~
?>
</body>
</html>
python
インタラクティブシェル終了
exit()
インタラクティブ(対話的)シェル
Pythonを実行する為のインタプリタ機能を持つシェル。
対話的にPythonを実行できる
インタラクティブシェルを使用せずにPythonを実行する場合は、
Pythonソースファイル(~.py)をインタプリタが実行する
Pythonソースファイルを実行
python test.py
assert文を無効化して実行
python -O test.py
return `hello ${name}`;
}
method(“aaa”);
<html lang=”ja”>
<head>
//headタグ内に書く
//HTML全体の読み込みが終了するまで実行されない
<script type=”text/javascript”>
~
</script>
</head>
<body>
//bodyタグ内に書く
//bodyの読み込み途中で実行される
<script type=”text/javascript”>
function SubRoutine1(){
window.alert(‘SubRoutine1()’);
}
SubRoutine1();
//⇒Hello World.;
</script>
HTML上に表示する文字<br/>
//bodyタグ内に書く(2回目)
<script type=”text/javascript”>
~
</script>
</body>
</html>
$ perl -e “print ‘hello world!’;”
⇒hello world!
$env perl ~
※システムPerlではなくユーザーPerlを実行する
ターミナルから外部のPerlプログラムを実行
print “Hello world!\n”;
をテキストエディタで作成、hello.plとして保存しておく。
$ perl hello.pl
⇒hello world!
Perlプログラム内でのコマンド実行
system ~
perlのプログラム中からperlのプログラムを実行する
system “perl test.pl”
プログラムの終了
this.Close();
// Application.Runで開始されたスレッドを終了する。
Application.Exit();
// 現スレッドのみ終了する。
Application.ExitThread();
python
インタラクティブシェル終了
exit()
強制終了
import sys
sys.exit() #コンソールにて「echo $?」 → True
sys.exit(0) #コンソールにて「echo $?」 → True
sys.exit(1) #コンソールにて「echo $?」 → False
sys.exit(‘error’) #コンソールにて「echo $?」 → False
メソッド(サブルーチン)
別名:関数、プロシージャ
匿名関数、無名関数、即時関数
a: int,
b: string,
オプション引数(呼び出し側は省略可)
c? TestClass) {
指定されなかった場合は5555
const d = c || 5555;
}
def test1(num):
return num
戻り値指定(省略可)
def test1(num) -> int:
引数データ型指定(省略可)
def test1(num: int):
サブルーチンの実行
test(1)
可変長引数
test(555, a1=555, a2=666)
def test(*args, **kwargs):
print(args) → (555)
print(args[0]) → 555
print(kwargs) → (‘a1’:555, ‘a2’:666)
print(kwargs.get(‘a1’, ”)) → 555
print(kwargs.get(‘a2’, ”)) → 666
print(kwargs.get(‘a3’, ‘ccc’)) → ccc
サブルーチン(複数の戻り値)
def test2(num):
return num, num+1, num+2
サブルーチンの実行
複数の戻り値を同時取得
a, b, c = test2(1)
関数を変数に格納して実行
func = test2
サブルーチンの実行
a, b, c = func(100)
サブルーチン
def func1(n):
return n*2
print(func1(5))
10
ラムダ式
func2 = lambda x : x * 2
print(func2(5))
10
ラムダ式をそのまま実行
print((lambda x : x * 2)(5))
10
SubRoutin1();
//呼び出し先
void SubRoutin1()
{
~
}
//呼び出し元
SubRoutin2(x:5, y:10);
SubRoutin2(5, 10);
//呼び出し先
void SubRoutin2(int x, int y)
{
~
}
//呼び出し元
int z = SubRoutin3(x:5, y:10);
int z = SubRoutin3(5, 10);
//呼び出し先
int SubRoutin3(int x, int y)
{
return x + y;
}
※params : 同じ型の値をいくつでも受け取れる
複数の引数の最後である必要あり
static void Main(string[] args)
{
myFunc(5, “test”, 1, 2, 3, 4, 5);
}
static void myFunc(int prmInt, String prmStr, params int[] myArray){
int i = prmInt;
String s = prmStr;
int total = 0;
foreach (int elm in myArray) {
total += elm;
}
Console.WriteLine(total);
}
引数の初期値
static void Main(string[] args)
{
MyClass.MyFunc();
→Hello
MyClass.MyFunc(name:@”開発者”);
→Hello 開発者さん
MyClass.MyFunc(age:30);
→Hello 30歳
MyClass.MyFunc(name:@”開発者”, age: 30);
→Hello 開発者さん 30歳
}
void MyFunc(string name = null, int age = -1)
{
if (name != null) Console.WriteLine(“{0}さん”, name);
if (age != -1) Console.WriteLine(“{0}歳”, age);
Console.WriteLine(“Hello\n”);
}
Call SubRoutine()
呼び出し先
Private Sub SubRoutine()
~
End Sub
呼び出し元
call SubRoutine(prm1:=x, prm2:=y)
call SubRoutine(x, y)
呼び出し先
Private Sub SubRoutine(ByVal prm1 As Integer, ByRef prm2 As String)
~
End Sub
呼び出し元
Dim z As Integer = SubRoutine(prm1:=x, prm2:=y)
Dim z As Integer = SubRoutine(x, y)
呼び出し先
Private Function SubRoutine(ByVal prm1 As Integer, ByRef prm2 As String) As Integer
~
Return ~
End Function
int subRoutin1(int prmInt);
void subRoutin2(int prmInt);
※プロトタイプ:関数の定義をヘッダーファイルに記載する
※~.cpp
#include “~.h”
int main(array<System::String ^> ^args)
{
Console::WriteLine(subRoutin1(10));
subRoutin2(10);
return 0;
}
int subRoutin1(int prmInt)
{
return prmInt;
}
void subRoutin2(int prmInt)
{
Console::WriteLine(prmInt);
return;
}
呼び出し元
myFunc(5,”test”,1,2,3,4,5);
}
呼び出し先
※「…」同じ型の値をいくつでも受け取れる
配列も可
複数の引数の最後である必要あり
static int myFunc(int prmInt, String prmStr, int… myArray){
int i = prmInt;
String s = prmStr;
int total = 0;
for (int elm : myArray){
total += elm;
}
return total;
⇒ total : 15
}
// ① が呼ばれる。①が定義されていなければ②が呼ばれる
myFunc(5, 5);
void myFunc(int a, int b){ ~ } // ①
void myFunc(int… myArray){ ~ } // ②
window.alert(‘Hello World.’);
}
SubRoutine1();
//⇒Hello World.;
function SubRoutine2(){
return 5;
}
var x = SubRoutine2();
//x = 5;
function SubRoutine3(prm1, prm2){
return prm1 + prm2;
}
var x = SubRoutine3(0, 1);
//x = 1;
名前付き引数
function myFunction(params){
return params.prm1 + params.prm2;
}
名前付き引数(デフォルト値付き)
function myFunction(params){
if (params.prm1 == undefined){ params.prm1 = 0; }
if (params.prm2 == undefined){ params.prm2 = 0; }
return params.prm1 + params.prm2;
}
var i = myFunction( {prm1:2 , prm2:2} );
var i = myFunction(1,1); は通らない
※名前付き引数が定義されたサブルーチンには名前なし引数を渡せない
匿名関数1(関数オブジェクト)
var func1 = function(prm1,prm2){return prm1 + prm2;};
var y = func1(1,2);
// y = 3
匿名関数2(関数オブジェクト)
var func2 = new Function(‘prm1′,’prm2′,’return prm1 + prm2;’);
var z = func2(3,4);
// z = 7
即時関数
( function(){window.alert(‘Hello World.’);} ).call(this);
// ⇒ Hello World.
getprice(2, “DVD”, “html”);
function getprice($index, $searchIndex, $keywords)
{
$i = $index;
$j = $searchIndex;
$s = $keywords;
}
PHP7.1~
<?php
declare(strict_types=1);
引数、戻り値にデータを指定できる
function func(float $a, float $b) : array {
return [$a + $b];
}
引数の初期値
function sample( $prm1, $prm2 = 0, $prm3 = ‘~’ ) {
~
} 外部の関数に引数を渡す場合
$ php test.php 1 2
※test.php
<?php
引数の個数
$cnt = $argc;
$cnt:2
引数の配列
$prm1 = $argv[1];
$prm1:1
$prm2 = $argv[2];
$prm2:2
?>
Test1();
sub Test1 {
~
}
引数あり
my $x1 = TEST1(1,2);
print “$x1\n”;
⇒3
my $x2 = TEST2(3,4);
print “$x2\n”;
⇒7
my $x3 = TEST3(5,6);
print “x3\n”;
⇒11
my $x4 = TEST4(7,8);
print “x4\n”;
⇒15
sub TEST1{
my $prm1 = $_[0]; #第一引数の取得
my $prm2 = $_[1]; #第二引数の取得
return($prm1 + $prm2);
}
sub TEST2{
my ($prm1, $prm2) = @_; #第一&二引数の取得
return($prm1 + $prm2);
}
sub TEST3{
# ローカル変数宣言
my local($x) = $_[0]; #第一引数の取得
my local($y) = $_[1]; #第二引数の取得
my local($z) = $x + $y;
return($z);
}
sub TEST4{
my $prm1 = shift; #第一引数の取得
my $prm1 = shift @_; の略
my $prm2 = shift; #第二引数の取得
return($prm1 + $prm2);
}
複数の返り値を持つサブルーチン
sub fnDouble {
return 5, 10;
}
my ( $value1 , $value2 ) = fnDouble;
⇒ $value1 : 5 / $value2 : 10
省略した書き方
TEST(引数1, 引数2);
↓
TEST 引数1 => 引数2;
※ ()の省略、「,」の代わりに「=>」を使用
外部ファイル読み込み
宣言文
VB.NETで言うOption Strictは常にOn
Option Explicit On (またはOff)
厳密な構文チェック
Option Strict On (またはOff)
use strict;
※古いブラウザ(IE9以前)では単なる文字列として扱われる場合あり
use strict;
警告表示
use warnings;
#!/user/bin/env perl
↑を宣言する事で、
./perl ~.pl
と入力するだけでperlが実行される。
use feature ‘:5.10’;
※5.10の新しい機能を使う宣言
Dumber関数の使用宣言
use Data::Dumper;
my %hash = (
~
);
print Dumper(%hash);
文字コード:utf8の使用宣言
use utf8;
文字コード:shift-jisの使用宣言
use encoding “cp932”;
コメント
// コメント
複数行
/*
コメント
*/
XML説明文
/// <summary>
/// クラスの説明文
/// </summary>
public class TestClass
{
/// <summary>
/// サブルーチンの説明文
/// </summary>
/// <param name=”val1“>
引数の説明文1</param>
/// <param name=”val2“>
引数の説明文2</param>
/// <returns>戻り値の説明文</returns>
public static int SubRoutine(int val1, int val2)
{
~
}
}
‘ コメント
@* コメント *@
複数行(Razor)
@*
コメント
*@
コードブロック中のコメント
@{
//コメント
/*
コメント
*/
}
//コメント
複数行
/*
コメント
*/
<!– — コメント — –>
複数行
<!– —
コメント
— –>
/* コメント */
複数行
/*
コメント
*/
//コメント
複数行
/*
コメント
*/
”’
複数行コメントアウト
複数行コメントアウト
”’
#コメント
複数行
=pot
コメント
=cut
終了行
__end__
コメント