SQLの窓 イラストAC フリー素材

2023年01月15日

2022年度後期水曜(2)

PHP で言うところの連想配列と同様のデータを格納できるのが<TKey,TValue>クラスです。変数名を arr として、以下にこのクラスで文字列を扱うインスタンスをセットする式を一行で記述してください。


このクラスもデータの追加はメソッドを使用しますが、引数は二つ必要です。一覧データの取得方法は、KeyValuePair という TKey と TValue を持つオブジェクトを取得する方法と、TKey の一覧と TValue の一覧を取得するプロパティは arr.arr.です。arr に3つデータを追加して、前述の3種類の一覧を Console.WriteLine で表示するループ処理を3つ記述してください。KeyValuePair では両方を一行に表示してください。



PHP で言うところのヒアドキュメントを利用するには、2種類の記号を定数文字列を表すダブルクォートの前に記述します。一つは記号を使用する逐語的テキストと言います。この定数の中ではいわゆるC言語で使用するを使用しなくて良いので表記のままで文字列が作成されるので、Windows のパスもそのまま使用できます。もう一つは文字列補間と言って、記号を定数文字列を表すダブルクォートの前に記述すると定数文字列の中で記号と記号で変数を挟んで文字列に変数の値を埋め込む事ができます。

C# に限らず、いかなる開発言語においても重要なデータ型は文字列型です。しかし、処理的にはコンピュータが得意とする計算を行う為に、数値を使用する必要があります。そして、業務処理として使用される数値はを扱う int型となります。他にも整数を扱う型のバリエーションはありますが、int 型は 符号付き 32 ビット整数で、定義的には System.Int32 というクラスとなります。

文字列を整数に変換するには、int.メソッドを使用します。しかし、整数を文字列に変換するには様々な方法があり、最も簡単なのは前述の文字列補間を使って定数文字列のなかに整数変数を埋め込む事ができます。但し、この方法が生まれるまでは、string.メソッドが使われていました。これは、C言語の sprintf のようなものです。また、簡易的な方法として、演算子と空文字列を使用して文字列に変換も可能です。

しかし、本来文字列に変換すると言う意味では、インスタンスメソッドであるメソッドがあらゆるクラスで使用できます。そして、この整数から文字列へ変換する場合、様々なフォーマット文字列が使用できる事を知っておく必要があります。

それでは、前述のメソッドを使用して、以下に 230128 という整数が格納された su という変数を使って、00230128230,12823-01-28 という文字列を作成する式を記述してください。


最後に匿名関数を作るための式の呼び名と書式を以下に記述してください。




posted by at 2023-01-15 15:07 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2022年度後期水曜(1)

型を使用すると、あらかじめ明示的に型を定義することなく、一連の専用プロパティを単一のオブジェクトにカプセル化できるので便利です。型の名前はコンパイラにより生成され、ソースコード レベルでは使用できません。 各プロパティの型はコンパイラにより推測されます。

この型を作成するには、 演算子をオブジェクト初期化子と一緒に使用します


体は、メンバーとメンバーを含むことができるという点でクラスに似ています。 ただし、クラスとは異なり値型であり、変数内のメンバはメモリ上のその位置に直接格納します。一方、クラス型の変数にはデータへの参照が含まれます。
private struct DbConnect {
    public string host;
    public string user;
    public string password;
    public string database;
}

DbConnect dbConnect = 
    new DbConnect { 
        host = "localhost", user = "root", password = "", database = "lightbox" 
    };
print(dbConnect.ToString());
print($"{dbConnect.host} : {dbConnect.user}");

配列は、プログラミング言語で最も利用される可能性の高い複数のデータを格納し、ループ処理で利用されます。C# では何らかのデータの配列は一つの型として認識され、(ここは記号二つ)をデータ型の右に表記して配列型として宣言し、さらにその右に変数名を定義します。しかし、配列を扱う場合データを格納するエリアをあらかじめ確保する必要があるため、変数の右辺には配列の大きさを表記するか、(ここは記号二つ)を使った初期化の記述を行います。

また、配列ではという配列の格納数を示すプロパティがあるので、ループ処理はこのプロパティを使用して行うステートメントと自動的に全てを扱うステートメントがあります。しかし、このままでは格納順でしか処理できないので、クラスを使ったソート処理が一般的に使用される事は多いです。

さらに、特殊なデータ型として () を使用する型があります。これは複数のデータを一つの変数にセットで投入するのでJavaScript の JSON オブジェクトに類似したところがあります。変数に対するプロパティを自由に設定できますが、指定しなくてもn ( n は1開始で最初からの連番 ) という記述で参照可能です。

どの言語でも配列よりさらに便利な、後からデータを追加できるクラスが通常存在します。C# では内部にセットするデータ型を定義時に表記する<T>クラスを使用します。データの一覧処理は配列と同じものを使用可能です。一般的にこのクラスを使って最初にデータを投入するのはメソッドで、一覧の最後に追加されます。一覧の要素の数を知る事のできるプロパティは配列と違い、プロパティが存在します。

このクラスと配列は相互変換が容易に可能です。このクラスから配列を作成するには、メソッドを使用して、その反対は配列に対してメソッドが使用できます( 配列には IEnumerable が実装されているからです )。それでは、配列を作成して、クラスに変換して、一覧を Console.WriteLine で表示するコードを記述してください。




posted by at 2023-01-15 09:22 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2014年12月12日

プログラマの『たまご達』、頑張れっ。

本格的な冬の到来と供に、Google+ のコミュニティの『教えて!? プログラミング』で、沢山の初心者らしきメンバーが増えて来ました。やはり、寒い時にこそ『プログラマのたまご』はこたつに入って巣立ちの準備を始めるものなんでしょうか。

で、また長文を一つ書いてしまいました。われながらもったいないのでまた転載です。

----------------------------------------------------------------------
>iPhone系でプログラミングできたらいいなーと思ってはいる
あなたの現状で純正アプリは無理です。WEBアプリでごまかす方法ならば、PHP+JavaScript( と言うより jQuery ) で可能です。

C言語はプログラマとしてのスキルアップになりますが、楽しく無いです。

C++は、プロ用の言語です。無視して下さい。

C# は VisualStudio の中で一番おすすめではあります。VB は、明らかに Microsoft がやめたがっています。

それと、一口に C# と言っても、コマンドプロンプト系、FORM アプリ系、ストアアプリ系(XAML 画面)、WindowsPhone(XAML 画面/Microsoftもなにもできていないのでやめたほうがいい)

・・とかあるので勉強するなら、コマンドプロンプトからですが、やはりあまり面白くはありません。

ASP.NET の WEB 系は話が長くなるのですが、やめたほうがいいです。一度しか無い人生の時間を無駄に使いすぎる可能性があります。

Java は、Android の ADT をダウンロードして日本語化してすぐ使えるので環境としてはめぐまれており、Android アプリも簡単なものならすぐ作れて書籍もいいのが多いのでちょっとお勧めです。

しかし、マジでいろいろやろうとすると Java は必ず途方に暮れる事になるので、スーパーな先駆者が近くに居る場合にのめりこんだらいいでしょう。さらに、ここで頑張れば、プロになった時に若干お得です。将来は解りませんが・・・

JavaScript は言語の中でもっとも難しいものです。フレームワークがなければ何も作れません。ですが、Windows のストアアプリが JavaScript で作れたり、jQuery を扱えれば、結構な事ができるので楽しむにはもってこいでしょう。ですが、これだけでは飯は食えませんねまだ。

ActionScript は、Flash の衰退で意味なくなる可能性もあるのでスルー。

PHP は、そもそも標準入出力の世界で生まれた Perl と Microsoft が作った ASP という二つの金字塔を元に WEB に特化して、時代と供に進化して来たもので、言語と言うより WEB 用のフレームワークです。大勢での開発には向いておらず、個人の開発では重宝されますが一長一短なのは当たり前です。

python は、数年前に授業で少し学生にやらせましたが、全員沈没しました。とにかく日本語の情報が殆ど無かったですし、超上級者が好んで使う優れたものですが当然初心者には荷が重いです。

Ruby にしても、速度的なものや完全なドキュメントというものが少なく殆どが撃沈しています。プロが他の経験を生かして適材適所で用いるには良いものになりつつあるとは思います。

で。

Windows 限定でその中で動かすなら環境と情報量で言えば、C# と Java です。WEB系は、ブラウザが高機能になって来たので PHP + JavaScript(jQuery) が簡単で情報量と質がとんでも無く安定している上に、日々進化しています。来年は違う事ができている可能性があります。( 今でも 3D ゲーム作れます )

また、自分は人と違うものをやっているという先端感を味わいたいのならば、もっとマイナーなものがたくさんあると思います。
----------------------------------------------------------------------

正直言って、『プログラミング』は難しいものです。趣味でやるにしたら、やはりより楽しいものを選ぶべきですし、プロを目指すにしても、優先順位は存在します。

ですが、一ついえる事は『もう絶対に WEB はなくならない』という事実です。おのずと何を押さえておけばいいかという方向性の一つのヒントとなります。皆が思うほど時間はたくさんありません。何故なら、常にプラットホームのほうが進化しつづけるのに対して、プログラマはそれほど進化できるものでは無いのです。

どんなに熟練したプロでも、『専門』という範囲を外れてしまうと、また追いつくのに時間がかかります。だから時間は少ししか無いと思って、できる限り『人脈』作るのもとっても必要です。


※ 追記(あるある)
やはり、たまごの殻は根拠の無いプライドでできているようだ。



posted by at 2014-12-12 20:52 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2014年04月27日

言語別文字列 Split

内容的にはたいしたものではありませんが、run code 使って実際に実行できるので、結構悪く無いドキュメントになるかもしれません。一つの言語だと、記事にする事自体無理なんですが、このノリは結構将来性あるものだと感じます。

PHP

run code
<?php
//Title of this code

    $a = explode(" ", "Hello world!" );
    foreach( $a as $value ) {
        print "{$value}\n";
    }
    
?>

Java

run code
//Title of this code
//'main' method must be in a class 'Rextester'.

import java.util.*;
import java.lang.*;

class Rextester
{  
    public static void main(String args[])
    {
        
        String[] a = "Hello world!".split( " " );

        for(String value : a){
              System.out.println(value);
        }                       
    }
}

JavaScript

run code
//Title of this code

var a = "Hello world!".split(" ");

a.forEach(
    function(value) {
        print(value);
    }
);


C#

run code
//Title of this code
//Rextester.Program.Main is the entry point for your code. Don't change it.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            
            Char[] delimiter = " ".ToCharArray();
            String[] a = "Hello world!".Split( delimiter );

            foreach(String value in a){
                  Console.WriteLine(value);
            }               
        }
    }
}



タグ:PHP java javascript C#
posted by at 2014-04-27 03:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2013年06月10日

専門ガッコの授業で、Win8 と Windows Phone と Android と PHP を同時進行しています。

Win8、Windows Phone、Android はいずれも大きな一般的データーベースに対するアクセス方法を持ちません。Windows Phone、Android はスマホだから当然ですが、Win8 も、将来を見据えてそういうのは Framework にありません。よって、データーベース部分は PHP に任せるのが簡単です。

課題として求める機能が、
1) 画面遷移
2) Http による GET 読み出し
3) Http による POST 更新処理
4) ListView(または Box)による一覧処理
5) データのインターフェイスはとりあえず XML( 後期に JSON )
6) 更新時の選択応答

ですが、以下で全て網羅されているはずです。

※ PHP の更新 API 部分はこちらが作成します

Win8 ストアアプリWin8 ストアアプリの、メモリ上にページを残す画面遷移と、前画面のコントロールの参照Windows8(C#) ストアアプリ : 複数画面を同時にメモリ上に置く画面間移動処理Windows8(C#) ストアアプリ : HttpClient で Get と Post する簡易クラスWin8 ストアアプリで、『選択肢を応答するダイアログ』を簡単に使うための MessageBox クラスWin8 ストア : リストボックス テンプレートWin8 ストア : UrlEncode と UrlDecode


Windows Phone課題用テンプレートListBox テンプレートWindows Phone から Post 投稿 と Get 読み出しWindows Phone の MessageBox


Android

Android 4.2.2 ADT : シンプルな ListView セット
Android から Post 投稿 / HttpPostAndXml extends AsyncTask
Android ADT の AlertDialog を使いやすく / MessageBox クラス
Android 4.2.2 : インターネット上の画像の表示 / AsyncTask


PHP

PHP + cURL で、Twitter API 1.1 の search/tweets を呼び出して、RSS に変換する
Twitter アプリを登録して、バッチファイルで投稿 - NAVER まとめ



posted by at 2013-06-10 23:16 | プログラマ用 | このブログの読者になる | 更新情報をチェックする

2013年06月05日

abstract class BtnClick implements OnClickListener

Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
	public void onClick(View v) {
	}
});
と、いうふうに書くのはいいかげん面倒になって来たので、abstract class BtnClick implements OnClickListener というクラスを作って
package com.example.click;

import android.app.Activity;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;

public abstract class BtnClick implements OnClickListener {

	private Activity _act;
	private int _id;
	public BtnClick(Activity act,int id) {
		this._act = act;
		this._id = id;
		click();
	}
	
	public void click() {
		this._act.findViewById(_id).setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO 自動生成されたメソッド・スタブ
				BtnClick.this.onClick(v);
			}
		});
	}

}

以下のように呼び出してみましたが、なんか問題ありますでしょうか。
package com.example.click;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        new BtnClick(this,R.id.button1){

			@Override
			public void onClick(View v) {
				Log.i("","ボタンイベント");
				
			}

        };
    }
}

というか、レイアウトの ボタンの onClick プロパティにイベント名をセットしたほうがもっと早いですけれど。
package com.example.click;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    
	public void clickEvent(View v) {
		Log.i("","ボタンイベント");
	}
    
}


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:onClick="clickEvent"
        android:text="Button" />


posted by at 2013-06-05 23:08 | プログラマ用 | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します