C言語は、学習難易度の高い言語といわれています。そのため、C言語の学習を始める前からハードルの高さを感じている方も多いでしょう。しかし、C言語は学ぶメリットが非常に大きい言語の一つでもあるのです。本記事では、そんなC言語を学習するメリット・デメリット、C言語の学習に向いている人・向いていない人について解説します。 また、C言語の学習をさらに進めたい人におすすめの本や学習サイトもまとめました。より一層、C言語について深く学びたい人は、ぜひ最後までご覧ください。
fossBytesに6月14日(米国時間)に掲載された記事「Microsoft Open Sources "Checked C" — An Extended Version Of C To Avoid Coding Errors」が、Microsoftにより開発が進められている「Checked C」と呼ばれる技術について伝えた。「Checked C」はC言語を拡張する機能で、より安全なコーディングが可能になるとされている。 Microsoftのソフトウェアの多くはC/C++で開発されている。C言語はポインタの扱いを間違えると本来アクセスしてはいけないメモリを指した操作をしてしまうことがあり、これがバグや脆弱性の原因の1つになっている。「Checked C」はこうした問題を回避することを目指してC言語の機能を拡張するもので、ポインタに対してあらかじめ範囲情報を持たせておき、ポインタの指し示す
記事の内容 以下のソースコードがコンパイル~実行されるまでに、何が行われるのかを理解する。 細かいオプションや処理の詳細は追わない。 #include <stdio.h> #define MESSAGE "hello world\n" int main(int argc, char *argv[]) { printf(MESSAGE); return 0; } ]$ uname -rm 3.10.0-957.10.1.el7.x86_64 x86_64 ]$ gcc --version gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-36) Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions
プログラミングを全くしたことのない人がプログラミングの学習を始めた場合、どこでつまずくかを考えることがよくある。小学校でプログラミング教育が始まったこともあり、プログラマー以外の人も少しはプログラミングを知っておいたほうがいいと思うからだ。 初心者がつまずく場所としてよく聞くのが「繰り返し」だ。プログラミングには、処理の流れを制御する構文として、主に「条件分岐」と繰り返しの2つがある。初心者にとって、条件分岐は理解しやすいが、繰り返しは理解が難しいのだという。 たしかに日常生活の中でも「条件によってやることを変える」という場面は多い。プログラミングを知らない人でも普段から慣れている考え方だろう。 これに対し、プログラミングにおける繰り返しは、同じことを繰り返す場合もあるが、たいていは「ルールに従って値を連続的に変えながら処理を繰り返す」というものになる。日常生活では、同じ作業を繰り返すこと
2023/06/23追記: 頂いたコメントを元にコードを修正しました。主に直した点は下記の通りです。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1.静的なメモリを用いることでMNIST全てを用いて学習が行えるようにしました。 (通常のメモリだとオーバーフローしてしまいますが、静的にメモリを取ることで大容量のデータを扱えるようになりました) 2.変数の初期化を明示しました。 3.正解率の求め方を改めました(間違った計算をしていました) その他軽微なミスを修正しました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー こんにちにゃんです。 水色桜(みずいろさくら)です。 今回はC言語を用いてニューラルネットワークを自作して、MNISTを分類してみようと思います。 今回作成したモデルの精度を以下に示します。 10回の学習で55.0%の精度を達
伊東まで開発合宿に行って、みんなでC言語のコーディングスタイルチェッカーを作ってました。 => KariyaSiesta | C 言語向けのコーディングチェッカ 配布サイトも作りました。 ルールを簡単にカスタマイズできるようになってるので、みんな使うといいでゲソ。 特徴 Eclipseのプラグインとして使える Eclipseプラグインとして実装されているので、IDEで使えます。 もちろんCDTとも組合せることができます。 簡単イントール 更新サイトから簡単にインストールできます。 もちろん自動アップデートにも対応してます。 XPathでルールで書ける ルールはXPathで書くことができます。 例えば『whileの内でbreakを使ってはいけない』というルールは以下のようになります。 こまかい書き方はマニュアルを参考にしてください。 //Stmt[@sort="While" and .//k
HOME社会基盤センター報告書・書籍・ツール・教材書籍SEC BOOKS:ESCR C++ Ver. 2.0:【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0 SEC BOOKS:ESCR C++ Ver. 2.0:【改訂版】組込みソフトウェア開発向けコーディング作法ガイド[C++言語版] Ver. 2.0
ブラウザからアセンブリ(機械語)を実行できるようにする技術 高速化手段、あるいはJavaScriptの処理系にできないことをするといった目的で提案された 2015年6月、Mozilla、Google、Microsoft、Appleが標準フォーマットとして開発することに合意した WebAssemblyが生まれた経緯 JavaScriptに実行速度が求められる時代になった 1. なぜJavaScriptは遅いか? インタプリタ言語で 動的型付けをしている → 解析に時間がかかってしまう よって、コンパイラ言語と比べると遅い😭 当初、JavascriptはHTMLに飾り付けをする程度だった さっと書いて、すぐに動く、それが売りだった しかし最近では・・・ 複雑なアニメーション WebGLなどのグラフィック処理 計算速度の遅いモバイル端末 などにも用途が広がり、実行速度が求められるようになってき
ask.fmで、面白い質問が来た。なんと、C言語にクラスを追加する提案論文が、先月末に公開されているというのだ。 N1876: Adding classes to C C言語の標準規格は追っていないのだが、なかなか興味深い。 この提案は、C言語にC++風のクラス機能を追加する提案だ。ただし、C++のクラスをそのまま持ってくるのではなく、だいぶ保守的な採用の仕方をしている。 この論文で提案されているクラス機能は、C++の文法によく似ている。クラスstructかclassキーワードで宣言する。アクセス指定子もあり、structはデフォルトでpublic、classはデフォルトでprivateなのも、C++と同じだ。 派生はあるが、多重派生は認められていない。 virtual関数やRTTIはない。 また、C++にある、自動的に呼ばれるコンストラクター、デストラクターは存在しない。 かわりに、イニ
大変ご無沙汰です。約1年半ぶりの更新です。 昨日、ブログを設置しているサーバでOSのアップデートに問題が発生したため、これを機に新サーバ・新OSに乗り換えることにしました。 現在のブログがマルチサイトのため、そのままでは新サーバの構築に苦戦すると予想されるため、他のブログの記事を統合しました。 統合内容は以下の通りです。 ・C-Production ・・・ メインサイトのため、他のブログを吸収して継続。 ・♪8thNote♪ ・・・ メインサイトに統合済みだったので、削除。 ・モバイル魂 ・・・ メインサイトに記事を引き継ぎ、並行稼働中。 ・無線のドキュメント ・・・ もともと閉鎖予定だったので、そのまま削除 外部SNSのアカウントについてはそのまま継続します。 今後ともよろしくお願いします。
C実践プログラミング 第3版 作者:Steve Ouallineオライリー・ジャパンAmazon 恩師に言われた言葉 Geek女優の池澤あやかさんに会いたいと思っている@yutakikuchi_です。 池澤さんはRubyが出来てSFCで女優さんなんて羨ましいですね〜。僕なんてRubyは得意じゃないし東京とは言えないような都心から離れた場所の地味な国立大だし、何よりお金も無いパンピーだしね〜。 僕の学生時代にもRubyはあったんですけどRailsはまだ出始めでそんなに流行っている雰囲気は無かったし、Webを書くには面倒くさいJSP/ServletかPerlかって感じでした。ApacheのModuleでWebを書ける事も学生ながら知っていたんですが、ポインタ、メモリの動的確保/解放の間違いが頻発して開発効率が落ちるから極力Javaで、どうしてもCを書かなければ行けない時はC++で逃げてました。
■編集元:ニュース速報板より「女子大生「C言語の宿題してくれたらヤってあげるよ★」」 1 ノート(東京都) :2010/02/13(土) 14:52:04.12 ID:T1xhFjZG ?PLT(12002) ポイント特典 中国で最も名門とされる清華大学の掲示板で、1人の女子大生のスキャンダルが物議を醸し出している。 韓国のブログメディア『press1.co.kr』によると、自分の代わりに宿題をやってくれる対価に一夜を共にすると約束した某女子大生が顔写真付きで公開されており、学生たちの間で非難の的になっているとのこと。「天下の恥さらし」と激しい表現での批判が相次いでいる。 事態は以下の通りだ。某女子大に通う女子学生が、C言語のプログラミングの宿題を授業で出された。しかしパソコンが苦手の彼女は男子学生に頼んで宿題を代わりにやってもらいたいと要請。その対価として、一夜を共にすると約束し
2013.10.14 追記 @kazuho さんからご指摘いただきました! mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場 - 長いタイトル…。 こないだ書いたgorepっていう検索ツール、もうちょっと速くしたいなと思ってファイル読み込みの部分をmmap()で置き換える検討中。(ちょっぱやのagもmmap()を使っている) mmap()での高速化確認用にCとGoで簡単なコード書いて実験していたら、以下のことがわかった。 ファイル読み込みをmmap()に置き換えると高速化が望めそう Goのコンパイラの最適化はなかなか優秀で、CのGCCビルドよりも速くなることがありそう LLVM-Clangは半端じゃない 処理速度比較の準備 比較用に書いたのは、open()/read()と、open()/mmap()、そしてfopen()/fread()を行うCとGoのコード
2010年12月06日23:41 一般ニュース パソコン コメント( 0 ) 「C言語すら知らなかった私が2カ月でiPhoneアプリをリリース」 はてなで話題に 1: 年越しそば(三重県):2010/12/05(日) 21:25:09.66 ID:A8WItvxGP 「言語すら知らなかった私が2カ月でiPhoneアプリをリリースするまでにやった事」と 題したブログがはてなブックマークの週間ランキング(11月20日~26日)でトップとなり、現在でも話題を呼んでいる。 同エントリーでは、それまでiPhoneのプログラミングを一切知らなかった著者が、 独学でプログラミングを学び、開始から2カ月でリリースを行ったコツを披露している。 同エントリーはツイッターやはてなブックマークで話題を呼び、ツイッターでは12月3日現在で 1,100を超えるツイートがあり、 2,700を越すユーザーがブックマークし
米Intelが並列プログラムを容易にする言語拡張「Intel Cilk Plus」をオープンソース化し、またGCCへの実装が「cilkplus」ブランチで開始されたと発表した。x86_32およびx86_64アーキテクチャでテスト済みというLinux向けランタイムのソースコードも公開されている。 Cilk PlusはIntelが2010年に発表したC/C++向けの言語拡張。1990年代にマサチューセッツ工科大学で開発されたC言語拡張「Cilk」がベースで、プログラムの並列化を容易に実装できるキーワードや関数群が含まれる。Intelは2009年にCilk技術ベンダーのCilk Artsを買収し、Cilkの権利や技術を手に入れている。Cilk PlusはすでにIntelがリリースする「Intel Compiler」に搭載されているが、GCCなどほかのC/C++コンパイラではサポートされていなかっ
上記の様に、トークンは各識別毎に作られます。オブジェクトのキーおよび値もそれぞれのトークンとして格納されます。 jsmn_parse はトークンの量が不足している場合、エラー JSMN_ERROR_NOMEM を返します。例えば、どれだけの量のトークンが JSON 文字列として与えられるか分からない場合、トークンのサイズを広げる必要があります。この場合、jsmn ではパーサを再初期化する事なしに、トークンを広げて再度 jsmn_parse を実行する事でパースを続行出来る様になっています。 ただしどれだけの量が不足していたかは分からないので、適度な増減を考慮する必要があります。 今日は試しに twitter のパブリックタイムラインをパースしてみました。 #include <assert.h> #include <string.h> #include <memory.h> #include
誰もが一度は星空を見上げながら、宇宙の神秘に思いを馳せたことがあるだろう。こうした幼いころの夢を現実にし、今ではアメリカ航空宇宙局(NASA)でロボティクスやAI分野の研究開発に携わる小野雅裕氏は、宇宙マンガで有名な『宇宙兄弟』の公式サイトで「一千億分の八」というコラムを手掛けていることでも知られている。このたび、同コラムをもとにした書籍を上梓した小野氏に、宇宙の魅力と宇宙開発の現場について話を聞いた。 大阪生まれ、東京育ちの阪神ファン。2005年東京大学工学部航空宇宙工学科卒業。2012年マサチューセッツ工科大学(MIT)航空宇宙工学科博士課程および同技術政策プログラム修士課程終了。慶應義塾大学理工学部助教を経て、現在NASAジェット推進研究所に研究者として勤務。「2007年、短編小説『天梯』で織田作之助青春賞。2014年に著書『宇宙を目指して海を渡る』を刊行。2016年よりミーちゃんの
新しいプログラミング言語を作りたいと思ったら、そのプロトタイプはCのような低級言語ではなく、高級言語で実装したほうがいいのではないでしょうか。もちろん実行時のパフォーマンスなどのために、最終的にC言語で実装するということはあるかもしれませんが(相対的な話ではありますが、C言語を低級あるいは低水準と呼ぶのが許せないという人は、K&Rの1ページ目を参照してください。日本語訳では「はじめに」のp.2です。)。 Cは比較的“低水準”の言語である。この性格付けは非難の意味を込めているのではない。これは単に、Cが普通のコンビュータで扱う種類の、すなわち文字、数、アドレスを扱えるようになっているという意味である。もちろん、これらのデータを組み合わせて、現実の機械で実行されるような普通の算術論理演算でいろいろな処理を行なうことができる。(p. 2) 以下、本題 プログラマがC言語を学ぶべきたった一つの理由
プログラミング言語は世の中にたくさんありますし、用途や好みによって自由に使えることが多いのですが、一部どうしても置き換えができない言語というものがあります。ブラウザやFlashマクロやPhotoshopマクロのJavaScript、Action Script、GPUのシェーダ言語、Visual Basic for Application、SQLなどなどです。それでもaltJSやORMなど、直接書かないという選択肢もあったりもしますが、どうしても直接書くほうが実行効率が良かったりチューニングが効いたりします。 JavaScriptを使ったコーディングを何年かやっていると、C言語で書かれたアルゴリズムをJavaScriptに移植しないといけない事態に遭遇する機会も増えてくると思いますので、それについて説明します。 整数型としてデータを扱う JavaScriptの言語仕様ではJavaScript
はじめに 昔お世話になったC Magazineの「プログラミングの禁じ手Web版 C言語編」というサイトを、後輩に教えてあげようとしたら、C Magazineの休刊後にドメインが失効してしまったようで、見る事が出来ませんでした。 幸い、InternetArchive(http://www.archive.org/web/web.php) に当時のデータがほぼ残っていたので、無許可ではありますがサルベージして転載させてもらいました。 「C MAGAZINE - プログラミングの禁じ手Web版 C言語編」 元のアドレスはこちら。 http://www.cmagazine.jp/src/kinjite/c/index.html InternetArchive http://web.archive.org/web/20070113222026/http://www.cmagazine.jp/src
2010年11月10日13:03 面白雑談 パソコン コメント( 3 ) C言語ができないのにプログラマーを名乗る馬鹿がいるらしい 1: [―{}@{}@{}-] ドクター元気(catv?):2010/11/09(火) 21:29:11.03 ID:zIC5WYSSP ソフトバンク クリエイティブは、iPad用アプリ『C言語クイック入門&リファレンス』 (2,000円)をリリースした。期間限定で発売記念価格として900円で提供される。 同アプリは、C言語などプログラミング解説書を多数手がける林晴比古氏による 初の電子書籍。iPad上でC言語の文法や機能を学習することができる。 電子書籍ビューアとしてビーワークスと共同開発した「ピクシィ ビューア」を採用。 専門書を快適に閲覧できるように、索引のプルダウン表示/ 全文検索/ 色別しおり などの機能を搭載している点が特徴となっている。 http
コンピューター:C言語講座:mmapについて 概要 mmapはファイルをメモリにマッピングするものです。わかりやすく言うと、UNIXのOSが行なっているページングやスワッピングを自プロセスで行なうようなものです。 これを使うメリットとしては、メモリ確保サイズが確保開始時に決定できない場合、簡単にはmalloc()で適当な量を確保し、足りなければrealloc()を使用して拡大することになりますが、realloc()を繰り返すとメモリ領域中に空きが出来やすく、大規模なシステムでは実際使用しているメモリより空き空間の方が数倍大きくなってしまい、メモリ不足で実行不可能になる場合があります。mmapを使用すれば、別々に拡大していくような管理が可能なので、また、スワップスペースとは別の位置に置くことにより、多数の動的メモリを必要とする場合に安全に動作することが可能になる場合があります。ただし、基本的
奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円 大きな画像(1.1M) 1987年10月にPascalを使った『コンピュータ・アルゴリズム事典』を,1991年2月にその改訂版としてANSI C言語を使った『C言語による最新アルゴリズム事典』を出版しました(いずれも技術評論社)。そのサポートページをつくろうと思いながら多忙のためなかなかできませんでした。とにかく始めなければ……というわけで,サポートページまがいのものを作ってみました。 石田晴久ほか『コンピュータの名著・古典100冊』(インプレス,2003年)に選んでいただきました。100冊といっても日本人の書いたものは20%しかなく,たいへん恐縮しています。 Frequently Asked Questions どの銘柄のC言語ですか? ほぼ当時のANSI Cドラフトに基づ
静岡大学工学部 安藤和敏 はじめに テストデータ BMPファイルの構造 ヘッダ部 データ部 BMPファイル操作のためのC言語ライブラリ 参考文献 はじめに 私の接した学生のうちの多くは, 抽象的な数学的理論を嫌う傾向にあるように思われた. ならば, 具体的で「目に見える形で」結果が得られるものを研究対象として与えてやれば, 興味を持ってくれるのではないかという推測の下に, 学生と一緒に画像処理のプログラミングを始めてみた. 画像形式としては, Windows bitmap (以下 BMP と略記) を選んだ. (基本的に)無圧縮であることが分かりやすく, Windows標準であることが親近感を与えるというのがその理由である. 既にJavaやC++で実装された, BMP形式の画像を扱うことができる関数を含んだライブラリが存在する. しかし, 本来やりたいことの量に対して, 覚えなければいけな
#define #define ディレクティブはマクロの定義を行う。C言語では数値や文字列、数式にに名前を付けて定数を定義することができます。 #define identifier #define identifier replacement #define identifier (parameter) replacement identifier マクロの識別子を指定する。識別子は大文字と小文字を区別する。マクロの識別子は慣習的に大文字で付けることが多い。 #include <stdio.h> #define DEBUG int main(int argc, char **argv) { int i = 1; #ifdef DEBUG printf("i = %d\n", i); #endif } 上記プログラムの実行結果を以下に示す。 $ gcc -o example example.
[↑質問一覧] [ホームページ] 号別リスト コンパイラの選び方 (C MAGAZINE 1995-6) 文字列 (C MAGAZINE 1995-7) ポインタ (C MAGAZINE 1995-8) malloc, free (C MAGAZINE 1995-9) 値 (C MAGAZINE 1995-10) スタイル (C MAGAZINE 1995-11) 不定と未定義 (C MAGAZINE 1995-12) 前処理 (C MAGAZINE 1996-1) 処理系依存の問題 (C MAGAZINE 1996-2) 動かないプログラム (C MAGAZINE 1996-3) 構造体 (C MAGAZINE 1996-4) ビット操作、論理演算(C MAGAZINE 1996-5) 標準ライブラリ (C MAGAZINE 1996-6) 構造体(2) (C MAGAZINE 1996
C言語は冗長なんだけど、なんか好き さっそくですが、松本さんが好きなプログラミング言語を教えてください。 今はC言語をよく使うんですけど、C言語そのものが好きなのか、手に馴染んでいるから好きなのか、もはやわからない状況になっていますね。この状況を一般的に好きって言うでしょうけど。 ただ、僕にはそれほど言語へのこだわりがないんです。そもそも昔からプログラミング言語を網羅的に学習するのが苦手で。まず作りたいものがあって、次にどの言語がベストかを考えるようにしていました。 そうすると、C言語に初めて触れたのはいつだったんですか? 今、僕は36歳で、大学に入ってから書いているので15年ぐらい前ですね。 当時はWindows95が発売され、自宅でもようやくPCが買えるようになった時代でした。ただ、それから数年経って、購入したPCだとスペック的に満足いくものがなかったので、自作していたんです。そうする
curl の実行を再現するC言語を作る、--libcurl オプション curl に libcurl オプションをつけると、C言語のソースが出力される。なにこれ楽しい。 使い方例 次のように --libcurl ファイル名 をオプションにつける. curl 'https://api.ipify.org?format=json' --libcurl get_global_ip.c # >{"ip":"103.xxx.1x2.6x"} するとCのファイルが出力されるので、コンパイルする gcc get_global_ip.c -o global_ip -lcurl で、コンパイルされたバイナリを実行する。 ./global_ip # >{"ip":"103.xxx.1x2.6x"} 何だこれ、楽しい。 もしかして、gist / gyazo のアップロード、PHPに定期的に呼び出すなど、定型文の
先に概要を書くと caseの値は連番かつ昇順(上から小さい数で下に行くほど増えていく)となるように心がける。ある程度caseが多ければあとは勝手にコンパイラがテーブルジャンプ最適化を行う。 goto文やreturn文などでswitch文途中から抜けないようにする。あるとテーブルジャンプ最適化が行われない。 MSVC(Visual Studio)でコンパイルする場合、default:の箇所に__assume(0);と記述すれば上記二つを無視して強制的にテーブルジャンプ最適化が行われる。ただし、goto・return等でのswitch抜けがあるまま実行すると例外エラーが発生する。 追記:上記の__assume(0)はC++23から「std::unreachable()」で標準化 FM TOWNSエミュレータ「津軽」を弄っていて、どうもエミュレーターの実行速度が既にあるTOWNSエミュレータの「
注意:応募期間が過ぎましたので、申し込みは締め切りました 結城浩です。2006年8月末に『新版C言語プログラミングレッスン』の入門編・文法編が刊行されます。 本書は1994年の発売以来、多くの読者の支持を受け、増刷および改訂を行ってきたC言語入門書のロングセラーです。このたび、MS-DOSが中心であった部分をWindows中心に改めたり、現在の処理系にそぐわない記述を改めるなどの修正を行いました。 日ごろの感謝を込めて、『新版C言語プログラミングレッスン』を無料プレゼントいたします。送料も無料です。 当選人数:7人(「入門編」と「文法編」とあわせて一人分、つまり当選すると2冊送られます) 応募期間:2006年8月29日(火)〜9月4日(月) 応募条件:以下の(A)(B)(C)のいずれかを実行してください。 (A) あなたのWebサイト(mixi可)に「結城浩」という文字列を含むエントリを書
C言語は使うべきではない言葉なので修正してくださいのクロスプラットフォーム言語だと思っていて、 iOSもObjective-Cの中でC言語が使えるし、 AndroidもNDKでC言語が使えるので、 UI以外のロジックはすべてC言語で書けば、それはすべてのプラットフォームで使えるのではないかと思っていました。 しかし、FireFoxOSでは、それができなくて、基本JavaScriptのAPIを呼び出すという形になってC言語が使えませんでした。 失意のどん底に陥っていたのですが、 そこの打開策に、Emscriptenがあったのです! !!! Emscriptenとは EmscriptenはC/C++言語からLLVMを生成し、それをJavaScriptに変換するコンパイラのことです。 C言語の標準ライブラリやPOSIXの一部もサポートし、OpenGL ES2.0も使えるそうです。 Emscrip
C言語を拡張して安全性を高めた「Checked C」をMicrosoftがオープンソース化した(InfoWorldの記事、 Softpediaの記事、 Microsoft Research — Checked C)。 Checked CはC言語にポインタの境界チェック機能を追加したことが名前の由来となっている。チェックに対応する新しい種類の配列型やポインタ型が追加されており、スコープを指定してチェックを強制することもできる。チェック機能を使用しない既存のCプログラムもそのまま使用できるため、後で徐々にチェックを有効にしていくことも可能だという。 現在、Checked CはLLVM/clangをフォークして実装されており、いずれはアップストリームへのマージも計画しているという。ソースコードはGitHubのChecked C clangリポジトリおよびChecked C LLVMリポジトリから
« 「便利」と「感極まってきました」だけでプログラムが書ける日本語プログラミング言語「うじひさ」を作った。 | Main | kill で立つハッカー、シェルを濁す » 追記: ほんとは怖くないよ!って話を追記してます。 夏だし怖い話しようぜ! 訳あって一部だけ C++ のコードです。 #include <stdio.h> #include <iostream> int main() { char str[256]; double a = 123.45; int b = 57; int c = 89; sprintf(str, "a=%f b=%d c=%d", a, b, c); std::cout << str << std::endl; sprintf(str, "a=%d b=%f c=%d", a, b, c); std::cout << str << std::endl; st
電卓を通じて、再帰下降構文解析を使った構文解析を行います。インタプリタ自作やコンパイラ自作の前段階として挑むとちょうど良いのではと思います。 ステップ1からステップ15まであり、最終的に括弧を使った式を解析できる電卓が出来上がります。各ステップは少しの書き換えだけで済むようになっています。 「大学に入ってからプログラミングを始めて、1年生でC言語を学んでいる」という人に向けて書きました。 「このステップは難しすぎる」「説明が分からない」「ここの説明は間違っている」等があれば、sou7まで連絡を頂けるとありがたいです。また、実装してみて「みてみて!電卓が実装できたよ!」というときにも連絡を頂けると嬉しいです。 参考実装はこちらにありますCommits · soukouki/c-calc · GitHub。ステップごとにコミットを分けてあるので、難しくて進められない場合は参考にしてください。
初出: C MAGAZINE 1996年8月号 Updated: 1996-09-21 [←1つ前] [→1つ後] [↑質問一覧] [↑記事一覧] [ホームページ] 今回は、よく知られているけどちょっと分かりにくいアルゴリズム、あるいは、 今までの連載で出てきたトリッキーなコードについて、どのような原理で動作す るのかを紹介してみようと思います。ただし、一般論として、凝ったコードより も分かりやすいコードの方が価値がある場合が多いということも頭に入れておい てください。 凝ったアルゴリズム Q 【曜日の求め方】 Comp.lang.c FAQ listを見ると、曜日を求める関数として次のものが紹介され ていた。 dayofweek(y, m, d) /* 0 = Sunday */ int y, m, d; /* 1 <= m <= 12, y > 1752 or so */ { stat
Update 12/May/2004 By Yasutaka Kumei [E-mail] [総合INDEX] [第2部INDEX] 当ホーム・ページの一部または全部を無断で複写、複製、 転載あるいはコンピュータ等のファイルに保存することを禁じます。
pointer,ポインター ポインタって実は私は躓かなかったんですけど、(良書のおかげ)結構躓くとの事ですので、ちと、簡単に説明します。 名前のとおり、指す人(変数)です。 何を指すかというと、メモリのアドレスです。 アドレス等が何なのかは 入門書等に詳しくかかれているので、そこを見てください。 では、メモリのアドレスを指すにはどうすればいいのでしょうか? 以下のプログラムを見てください。 #include <stdio.h> int main(){ int var = 0; int *pointer = NULL; int pointer_num; //varの中には0が入っているが、&をつけることによってアドレスを入れることが出来る。 //しかし、アドレスはポインタ型(ここではint *)にしか入れられない。 pointer = &var; //そして、ポインタの使い方は以下のような感
構造化プログラミングのパラダイムに対応した高水準の手続き型言語である。ハードウェアの直接的な制御ができる機能を備えつつ、機械語やアセンブリ言語(アセンブラ)のような低水準言語と比較して、ソースコードの再利用性やメンテナンス性に優れており、目的に応じたプログラムの変更や拡張が容易である。 汎用性およびプログラムの自由度が高く、リソースや性能要求の厳しい用途にも耐えうるため、アプリケーションソフトウェアの開発だけでなく、オペレーティングシステム(OS)やデバイスドライバー、ファームウェアの記述、マイコン制御・機械制御など、上位層・下位層を問わず、あらゆる分野で利用されている。 対応する機器の範囲が広い。パーソナルコンピュータやワークステーションはもちろん、自動車や家電の組み込み用マイコンからスーパーコンピュータまで、C言語を使用できるハードウェアは多様である。そのため、C言語のコード資産が蓄積
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く