関数

関数への引数は引数の値のコピーとして渡されるから、呼ばれた関数側で呼出側の実引数の値を変えることは出来ない。
参照による呼び出しを行いたいときはポインターをそのまま渡し、渡された(関数)側でそのポインターの指すデータを変える。
なお、配列の名前が引数として渡される場合は、実際には配列の起点の位置(先頭アドレス)が渡される。そこで、関数側ではこの値に添え字をつけて、配列要素にアクセスしたり、変更したりする。
#define MAXLine 1000

main()
{
char line[MAXLINE];

while((len = getline(line, MAXLINE)) > 0 )

}

getline(s, lim)
char s[]; /* 配列sの長さはmainで決定されているのでgetline側では指定しない。 */
int lim;
{

s[i] = c;

}

関数の引数は局所変数(実際にはスタックにとられている)であり、その形が分かるように宣言が必要で、関数名の次の行、引数並びと最初の左{の間で行い、後ろにセミコロンをつける。
power(x, n)
int x, n;
{
……
return( p );
}
関数は値をmainに返す必要は無いが、return文で式を記述し処理結果を返すことが出来る。

カテゴリー: C | タグ: , , | コメントする

文字定数

文字定数は単一の引用符で囲う。 ’A’
エスケープ文字も文字定数として定義できる ’/n’は復改コード ’\t’はtabコードなど

一方、”a”はたまたま1文字だけを含む文字列

カテゴリー: C | タグ: | コメントする

入出力 getchar putchar

入出力はgetcharとputchar

入力を出力へコピーするプログラム
#define EOF 0
main ()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}

Cの特徴である圧縮記法の一つ:テストの中に代入文を埋め込むと、
#define EOF 0
main ()
{
int c;

while ((c = getchar()) != EOF)
putchar(c);
}

ここでc = getchar()を括弧で囲うのは必須。
なぜなら!=は=よりも評価優先度が高いので()で囲わないと
c= (getchar() != EOF)となってしまい、Cには0か1がセットされるだけになる。

カテゴリー: C | タグ: , , , | コメントする

記号定数

コードの中に定数値を書き込む代わりにプログラムのはじめに#define文で記号定数として記述するのが良い。

#define STEP 20 /* ステップサイズ */

記号定数は定数なので型宣言は不要。
記号名は変数と区別する為に大文字で書く。
定義の後にセミコロンは不要。

カテゴリー: C | タグ: | コメントする

whileとfor

forの方が、whileよりコンパクトで、ループを制御する文が一箇所にまとめられるので、初期化と再初期化が一つの式であり、論理的に関係のあるループではforのほうが適している。

for (a=0; a<=300; a=a+20) printf(....); a=0; while(a<=300) { printf(....); a=a+20; }

カテゴリー: C | タグ: , | コメントする

printf

引数で渡す書式指定は
%f 不動小数点数(floatもdoubleにも対応)
%d 10進数
%ld 10進long変数
%o 8進数
%x 16進数
%c 文字

%6.1f 6文字幅で小数点以下1桁
%6f 数は少なくとも6文字幅
%.2f 小数点以下2桁、文字幅指定なし
%f 浮動小数点印字指定、文字幅、小数点以下桁指定なし
%.0f 存在しない小数部の印字抑止

カテゴリー: C | タグ: , | コメントする

変数と算術

5/6と5.0/6.0は答えが違う
整数の割り算は切り捨てられるので、前者は0、後者は0.83333
なお、型宣言されている変数で演算する場合は、演算の前に型変換が行われる。
従って、
float c, a, b;

a = 5;
b = 6;
c = a/b;
の解は0.83333

カテゴリー: C | タグ: , | コメントする

コマンドプロンプトからのビルド

MS Visual C++ Expressを起動
[Tools] – [VS command prompt]
Pathを適切に設定

cd /d C:\tem
/d オプションはドライブが異なっても移動できるようにするためのオプション

コンパイル
/c   コンパイルのみ行いリンカを起動しません。

コンパイル時にデフォルトで INCLUDE 環境変数で指定されたディレクトリは検索されます。自分の環境で、環境変数を確認するためには set コマンドが利用できます。
以下のように findstr コマンドと共に使うと便利でしょう。
> set | findstr INCLUDE
INCLUDE=C:\Program Files\Microsoft Visual Studio 9.0\VC\INCLUDE;C:\ProgramFiles\Microsoft SDKs\Windows\v6.0A\include;

リンク
test.cpp では G etUserName AP I を使っているので、ライブラリファイル a dv a pi32.lib を指定してリンクする必要があります。、どのライブラリを指定すればよいかわからない場合は、dumpbin コマンドを使って、インポートしている関数 (API) を調べます。
> dumpbin /SYMBOLS test.obj | findstr External
00C 00000000 SECT4 notype () External | _main
00D 00000000 UNDEF notype () External | _printf
00E 00000000 UNDEF notype External | __imp__GetLastError@0
00F 00000000 UNDEF notype External | __imp__GetUserNameA@8
010 00000000 UNDEF notype External | ___security_cookie
011 00000000 UNDEF notype () External | @__security_check_cookie@4

名前の頭に付く、’_’ や ‘__imp__’ は無視してください。また名前のサイトに付く、’@<数字>‘ も無視してください。 パラメータの指定で、内部的に使用されているだけです。
A は、Non-Unicode ビルド用の関数であることを示します。ANSI ビルドなどと言われます。 W は Unicode ビルド用の関数です。DLL や EXE ファイルのサイズが気にならないなら、常に Unicode ビルドを行うと良いでしょう。

/OUT   実行可能ファイル名の指定
実行可能ファイル (EXE) のファイル名は、 ひとつのファイルだけの場合は、デフォルトの オブジェクトファイル名.exe でしたが、 複数ファイルがあるとわかりにくいので、明示的に実行可能ファイル名をつけると良いでしょう。
> link advapi32.lib test.obj username.obj /OUT:test.exe
Microsoft (R) Incremental Linker Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.

コードの最適化
よく使うオプションには次のものがある。
– 最適化オプション (/O1 コンパイラオプション)
– 警告レベルの指定 (/W<警告レベル> コンパイラオプション)
より望ましいコーディングができることをコンパイラが検出した場合、それを警告として出力させる(/w4)
– Unicode ビルド (/DUNICODE, /D_UNICODE)
/DUNICODE を指定することによって GetUserName はコンパイラによって GetUserNameW として解釈され、指定しなければ GetUserNameA として解釈される
– デバッグ情報の生成
PDB (プログラム・データベース, シンボルファイルとも言います) 及び map ファイルを生成。ビルドを作ったら、EXE ファイルと共に PDB ファイルも保管。
– ターゲット Windows バージョン指定
 Windows API の中には Windows のバージョンによって使えるもの、使えないものがあので、ターゲットバージョンの指定が必要になる事がある。
> cl /c /D_WIN32_WINNT=0x0600 test.cpp
Windows Server 2008 0x0600
Windows Vista 0x0600
Windows Server 2003 SP1, Windows XP SP2 0x0502
Windows Server 2003, Windows XP 0x0501
Windows 2000 0x0500

リンクオプションまとめ
プログラムの開発中
C:\Temp> cl /c /W4 /Zi /DUNICODE /D_UNICODE test.cpp
リリース時には最適化オプションも有効に
C:\Temp> cl /c /W4 /Zi /O1 /DUNICODE /D_UNICODE test.cpp

カテゴリー: C++ | タグ: , , | コメントする

要素情報を確認し、要素を変形する

[ウインドウ] – [変形]で要素ウインドウが表示され、要素の基準位置の場所と基準位置のx,y座標、要素の幅、高さ、要素の配置角度が表示される。
これらの値はそれぞれの数値ボックスに新たな値を書き込むことにより変更でき、その結果要素はその値によって変形する。

カテゴリー: Adobe イラストレータ | タグ: , | コメントする

ラスターtoベクター

How to convert PDF to Vector file in Illustrator & AutoCad
by adinaroth

Below is the procedure for converting your pdf file to a vector file in Illustrator:

Open your pattern in illustrator
Ctrl+A (Select All)
— Right click
— Release clippling mask
Delete background (may have to do this twice)
Default Fill and Stroke
Select None for Fill
Object
— Ungroup (if grouped)
Unclick/ deselect everything
Select All
Window
— Pathfinder
— Divide
Select All
Make sure there is no Fill
Ungroup
Select lines outside of the bounding box
Delete
Select All
Choose weight (3 pt.)
Object
— Expand
— Uncheck Full
— Ok
Window
— Pathfinder
— Unite
To get outlines alone for the Cadd File go to:

Window
— Pathfinder
— Outline
Export file as .dwg or .dxf
When you open it is your Cadd program, there will be no hatches.

カテゴリー: Adobe イラストレータ | コメントする