コースの一覧 このサイトは、これからプログラミングを学ぶ初心者に、C++言語を1週間で身につけてもらうためのサイトです。 C++言語は、C言語を拡張した言語で、基本的なC言語の知識を必要とします。C言語の基礎に関しては、一週間で身につくC言語の基本の基本編の知識を前提としています。この個所を読む前に復習することをお勧めします。 内容は以下のようになっています。
コースの一覧 このサイトは、これからプログラミングを学ぶ初心者に、C++言語を1週間で身につけてもらうためのサイトです。 C++言語は、C言語を拡張した言語で、基本的なC言語の知識を必要とします。C言語の基礎に関しては、一週間で身につくC言語の基本の基本編の知識を前提としています。この個所を読む前に復習することをお勧めします。 内容は以下のようになっています。
開発者にとって必須のツール「GitHub.com」と「Git」 前回までに、ソースコードのバージョン管理サービスとしてGitHub.comを利用するための準備を行うとともに、Windows 10にGitコマンドをインストールして使う方法を取り上げた。これにより、Windows 10からGitコマンドを使ったGitHub.comサービスの利用が可能になったはずだ。 GitHub.comはソースコードの公開が不要なプライベートリポジトリを作成することができる。試験的に取り組む開発などはまずプライベートリポジトリを使うとよいだろう。会社のPCからも、サテライトオフィスに持ち込んだノートPCからも、自宅のPCからも、同じようにソースコードにアクセスして開発を再開できる環境は、一度慣れてしまうともうそれまでの世界に戻れないほどの便利さだ。 一人だけで使うだけでもこれだけ便利なのに、チーム開発でも同等
テクマトリックスは、C言語/C++言語のコーディング標準に対応したテストツール「C++test 2022.2」の販売を開始した。 テクマトリックスは2023年3月9日、Parasoft Corporationが開発した、C/C++言語対応テストツール「C++test 2022.2」の販売を開始したと発表した。 C++testは、コーディング規約チェックやフロー解析などの静的解析、単体テスト、カバレッジ計測、実行時メモリエラー機能などを搭載したC言語/C++言語対応のテストツールだ。 最新版では、C言語のガイドラインで2022年3月発行の「MISRA C:2012 Technical Corrigendum 2」と、2022年10月発行の「MISRA C:2012 Amendment 3」に完全対応した。また、C++コーディング標準の新版となる「MISRA C++:202x」のドラフト版の一
お元気さまです。わくワークの義(ヨシ)です。 C言語のスキルアップを目指して、プログラミング学習を進めています。 問題は、次のリンクから確認できます。 paiza.jp 二次元配列の理解を試す問題と思います。 正解できました。 #include <stdio.h> int main(void){ char str[1000]; char buf[25][25]; int h,w,i,x,y; fgets(str, sizeof(str), stdin); sscanf(str,"%d %d",&h,&w); for(i=0;i<h;i++){ fgets(str,sizeof(str),stdin); sscanf(str,"%s",buf[i]); } for(y=0;y<h;y++){ for(x=0;x<w;x++){ if( y==0 && buf[1][x]=='#'){ pri
導入:クロージャーについて 昨今ではクロージャーを使えるプログラミング言語は珍しくなくなった。クロージャーとは、関数の引数だけではなく、外のスコープにある変数を参照できる関数のことである。 例えば、次のJavaScriptコードでは、関数を返す関数 f を定義している。 f の中で定義された無名関数は、外側の変数 x を参照できている。 function f(x) { return function(y) { return x + y; }; } JavaScriptではネストした関数を使わなくても、bindメソッドによって同等の処理を記述することができる: function g(x, y) { return x + y; } function f(x) { return g.bind(null, x); // gの第1引数を束縛する } 残念ながらC言語にはクロージャーはない。関数の中に
●はじめに こんにちは。 今回は、C言語で皆さんが最もつまずくとされているポインタで配列変数と組み合わせたプログラムの説明をしていきたいと思います。 私もポインタは概念が難しく理解するのに時間がかかりましたがわかりやすく解説していきます。 「え、そもそもC言語とか初めてなんだけど。。。」 「プログラミングの基礎がわからない。」 という方向けの記事ではないので以下のサイトの基本編を学んでからこの記事を読んでください。 →一週間で身につくC言語の基本 「C言語の関数くらいまでならできるよー」 って方でポインタにつまずいている方は是非、読んでください。 また、前回はポインタ変数と配列変数の関係性を説明したので読んでいない方はこちらをご覧ください。(今回も配列変数を扱いますが微妙にプログラムが異なり、前回が基礎です) →【C言語】難解なポインタに挑む「忍法写し身の術!」その2 ●ポインタ変数として
●はじめに こんにちは。 今回は、C言語で皆さんが最もつまずくとされているポインタについて説明していきたいと思います。 私もポインタは概念が難しく理解するのに時間がかかりましたがわかりやすく解説していきます。 「え、そもそもC言語とか初めてなんだけど。。。」 「プログラミングの基礎がわからない。」 という方向けの記事ではないので以下のサイトの基本編を学んでからこの記事を読んでください。 →一週間で身につくC言語の基本 「C言語の関数くらいまでならできるよー」 って方でポインタにつまずいている方は是非、読んでください。 ●アドレスとは ポインタを理解するためにアドレスから理解する必要があります。 「アドレスといえば住所でしょ」 そうです、その通りです。普段、変数には値を格納しますがコンピュータのメモリの中にあるため、その位置を表す数値であるアドレスが存在します。例えば、aという変数があるとき
Textrade運営事務局はインターネットアンケートにて200名を対象として調査・分析をおこない、学んでみたいプログラミング言語ランキングを作成しました。 アンケート概要 調査概要:学んでみたいプログラミング言語ランキング 調査対象:日本全国の男女 対象人数:200名 調査方法:インターネットアンケート調査 調査媒体:クラウドワークス 調査期間:2023年9月29日 *アンケートの調査結果の詳細はこちらの記事に公開しています。 https://wagtechblog.com/programing/press-release04 学んでみたいプログラミング言語ランキングの調査結果 学んでみたいプログラミング言語ランキングの結果は以下のようになりました。 それではプログラミング言語ごとに詳細を解説していきます。 1位:Python Pythonはシンプルで読みやすいプログラミング言語で、多用途
crisp-game-lib-portableのポータビリティを検証するために、Playdate用実装を作ることにした。実機を持ってないのに。 Playdateは黄色い筐体と横についたクランクがキュートなコンパクトなゲーム機だ。日本からもプレオーダーできるが今から頼んでも届くのは2023年となかなか手に入らない。でもSDKはあるので、シミュレータを使った開発はできる。 Arduinoではないデバイスでもcrisp-game-lib-portableが動くかどうかを確かめるにはちょうど良い。 まずC言語でPlaydate用ゲームを作る環境を整える。オフィシャルページにやり方が載っているが、Visual Studio入れて、 GNU Arm Embedded Toolchain compiler入れて、CMake入れてと結構面倒。以下のページの情報が役に立つ。 SDKの中にあるサンプルなどを参
基本編 これからプログラミングを学ぶ初心者に、C#を1週間で身につけてもらうための内容です。内容は以下のようになっています。
前回(OpenSSLのBIGNUM関連の関数群に関するメモ)から引き続きOpenSSLです。暗号です。 C言語でOpenSSLを使ってAES暗号を扱ってみたので、テストコードを公開します。 EVPとかいうもので抽象化されていて、ちょっと煩雑な手続きが必要。 とはいえおかげで別の暗号化方式に切り替えるのは楽だから、まあ良し悪しだね。 暗号化 Copyunsigned char* Encrypt(const char* key, const char* data, const size_t datalen, const unsigned char* iv, unsigned char* dest, const size_t destlen) { EVP_CIPHER_CTX en; int i, f_len=0; int c_len = destlen; memset(dest, 0x00,
はじめに 諸般の流れからC言語を使う機会が増えてきたので、あらためてVSCodeでC言語プログラミングができる環境構築を再確認しておきます。諸般の事情でWindows+MSCです。今回はmakefileを使ってHelloWorldがビルドできる状況を確認します。HelloWorld単体をビルドするのにmakefileを使うことはあまり意味のないことかもしれませんが、シンプルな環境でなにか見えてくるものもあるかもしれないということで。 前提条件 VSCodeはなんらかのバージョンが既にインストールされていることが前提です。 MSCもなんらかのバージョンのVisualStudioのVisualC++がインストールされていることが前提です。 今回は具体的には下記のバージョンを想定してお話が進みます。前回の記事でtasks.jsonとlaunch.jsonを生成して通常の[実行とデバッグ]からデバ
Windows 10でC言語開発をしよう! Build Tools for Visual Studio 2019編 CコンパイラにはOS側の準備も必要 前回は、Windows 10にLLVM/ClangとWindows Terminalをインストールする方法を紹介した。LLVM/Clangが実行できることは確認できたはずだ。 Windows 10で動作するLLVM/Clang Cコンパイラ ただし、このままではC言語のソースコードからWindows 10で動作するバイナリをコンパイルして生成することはできない。C言語を使うには、コンパイラを用意するだけではなく、オペレーティングシステム側にもそれを受けるセットアップが必要だからだ。これはWindowsに限った話ではなく、多くのオペレーティングシステムでそうなっていることが多い。 UNIX系プラットフォームの場合、最初からセットアップを済ませ
ちょうどApple][を使い始めた頃、ASCII誌では毎月のようにTinyBASICを移植する記事があふれていました。その中でTinyBASICをBASICとして移植するのではなく、多くの予約語を記号で表し独自の仕様で作り直したGAMEⅢという言語が発表されました。最初のバージョンは6800を対象としたインタプリタで、6502ユーザとしては指をくわえて見ていることしかできませんでしが、程なく6502仲間であるPET向けや8080へも移植され、さらにコンパイラも開発されました。 「GAME」という名のプログラミング言語 主な仕様をざっくりと説明すると 変数はA-Zのみ。 型としては16ビットの整数なのだが、ポインタとしても使える。 プログラムカウンタは”#”。#={行番号}でGOTO。!={行番号}でGOSUB。 ループ変数に”@”。”?”を使って入出力。 他にも”=”、”>”、”*”、”’
Fossbytesは1月18日(米国時間)、「Why TIOBE Awarded C Programming Language Of The Year 2019?」において、TIOBE Softwareの2019年プログラミング言語・オブ・ザ・イヤーにC言語が選ばれた理由を伝えた。TIOBE Softwareが挙げている理由「IoTに対する需要の高まり」について、掘り下げて説明している。 TIOBE Index for January 2020 - January Headline: Programming Language C awarded Programming Language of the Year 2019 C言語が2019年のTIOBEプログラミング言語・オブ・ザ・イヤーに選ばれた主な理由として挙げられているのは以下のとおり。 IoT (モノのインターネット)需要の大規模な成
はじめに この記事を書いたきっかけ こんにちは,私は社会人2年目の組み込みエンジニアの下積みです.さほど詳しくなかったC言語を本格的に業務で使うようになって約9ヶ月,C言語って宣言が難しいな〜と思うようになりました.特に関数ポインタやダブルポインタ,その配列…などと考えるといくらでも複雑になります.例えば以下の画像のようなC言語の宣言に関する有名なジョークがありますね. これは勿論行き過ぎですが,多少複雑な宣言でも軽々と読めたらな,と調べる中で知ったのが表題の"Clockwise / Spiral Rule"です.これを使うと複雑な宣言でも結構簡単に読めてしまいます. しかしながら,調べてみると案外日本語で解説された記事が無いんですね.そこで折角面白いルールなので記事にして投稿しようと思った次第です. (日本語記事が周知の事実だから?それとも,あまり推奨されないような方法だから…?) この
ポインタ(おさらい) 前述の通り、”ポインタのポインタ” を理解するためには、まずはポインタについて理解しておいた方が良いです。 ということで、”ポインタのポインタ” について解説する前に、おさらいとして、ポインタとはどのようなものであるかについて簡単に説明しておきたいと思います。 ポインタの理解はバッチリという方は、この章はスキップして次のポインタのポインタまで進んでいただければと思います。 ポインタとは ポインタは他の変数を指す(他の変数のアドレスを格納する)ことができる変数ですね! このようにポインタが変数を指すことができるのは、変数が「メモリ上に配置」され、その変数に対して「アドレスが割り振られる」からです。 実際には、ポインタは変数でなくてもメモリ上に配置されているものなら指すことができます(関数など)。
このページではC言語でのソケット通信の仕方について解説していきたいと思います! 今や「通信」は生活になくてはならないものになりましたよね! ウェブページやスマホのゲーム、SNS なども「通信」があってこそ成り立つ物ばかりです。 このページでは、その通信をC言語で行うための「ソケット通信」について解説していきたいと思います! このページはC言語向けの解説になりますが、ソケット通信は他の多くのプログラミング言語でも用意されています。 ソケット通信をする際の処理の流れはどの言語でも同じになりますし、使用する関数(メソッド)もほとんど同じですので、他のプログラミング言語を利用されている方でも役に立つ内容になっていると思います! また、紹介する関数は MacOSX のものを紹介していますが、おそらく Linux でも同じものが使用できると思います。 Windows の場合はちょっと関数名が違ったり、
C言語がTIOBE Indexで1年間(2019年1月~2020年1月)に最もシェアを伸ばしたプログラミング言語「Programming Language of the Year 2019」になった(InfoWorldの記事)。 2020年1月のTIOBE Indexで2位のCは前年から2.44ポイント増加して15.77%となっており、5位のC#が2.07ポイント増の5.35%で続く。2018年のProgramming Language of the Yearだった3位のPythonは2019年2月を除いて常に増加幅トップだったが、2020年1月は1.40ポイント増の9.70%にとどまった。Cの増加についてTIOBEでは、パフォーマンスが重視される小型デバイスによる需要増や学習が容易な点、どのようなプロセッサーでもコンパイラーが利用できる点を挙げている。 このほか、トップ20で増加したのは
COLUMN 組み込みエンジニアの戸惑い PythonからC言語を呼び出してみる①(Python/C APIを使った場合) # Python # エンジニア # 組み込みエンジニアの戸惑いシリーズ Python編 # 言語 2019-07-26 FSI Embedded 組み込みソフトウェアエンジニアがPythonを始めてみました。そして、第5の戸惑い、今回は組み込みとは切っても切り離せない「C言語」に関しての話題です。 Pythonを扱っていて課題となり得る、処理速度の改善や過去資産の流用など、そんなときに役立つかもしれない、PythonからC言語を呼び出す方法についてのご紹介です。 PythonからC言語、またはC++を呼び出す方法には様々なものがあります。以前の記事でもPython/C API (Python.h)やSWIG、boost.pythonなどを使うことで実現可能とご紹介し
先史時代 昔のC言語には標準的なbool型はありませんでした。比較演算子は int を返しますし、 isspace みたいな述語関数も int を返します。 環境(プラットフォーム・ライブラリ)によっては独自のbool型を定義していることがありました。Windowsでの BOOL 型[1]とか、Objective-Cの BOOL [2]とか。 このようなオレオレbool型の欠点は、0/1以外の値を取れることです。また、下手にインクリメントとかするとオーバーフローします。 C99でのbool C99では標準的なbool型が導入されました。しかし、互換性に配慮して bool ではなく _Bool という奇妙な名前で導入され、 bool という名前や true, false などの名前つき定数を使うには <stdbool.h> を #include する必要があります。 // stdbool.h
数独の解法 今回は皆さんお馴染みのパズル「数独 (ナンバープレース)」の解法プログラムを作ってみましょう。 ●数独とは? 数独は 9×9 の盤を用いて、縦 9 列、横 9 行のそれぞれに 1 から 9 までの数字をひとつずつ入れます。また、太線で囲まれた 3×3 の枠内にも 1 から 9 までの数字をひとつずつ入れます。ただし、縦、横、枠の中で、同じ数字が重複して入ることはありません。 パズルの解き方 [*1] ですが、基本的には次の条件を満たすマスを探して数字を確定していきます。 置くことができる数字がただひとつしかない場合 縦、横、枠の中で、数字を置くことができるマスがひとつしかない場合 (1) は簡単ですね。(2) は次の例をみてください。 置くことができる数字 -------------------------- 8 A [4,5,7,9] B [4,5,7] 6 2 C [3,5
現在のソフトウェア開発において、GitHub.comは外すことができない。ソースコードの共有やバージョン管理にGitHub.comを使い、開発中のコミュニケーションにもGitHub.comを使い、開発者間のリアルタイムコミュニケーションにSlackを使うというのが、最近の一般的な開発スタイルだ。C言語で開発を始めるにあたっても、GitHub.comは避けることはできない。最初の設定は煩雑だが、ここは最初に設定してしまおう。 GitHub.comを使う 開発を行う場合、ソースコードの管理を行うために何らかのバージョン管理システムを使うことが多い。それは社内に導入された製品だったり、オープンソースソフトウェアだったり、クラウドサービスだったりする。最近最も広く使われているのはクラウドサービスのGitHub.comだ。開発に必要になるさまざまな機能が提供されており、もはやソフトウェア開発のエコシ
C言語向けのユニットテスト・フレームワークは数多く存在するため、どれを使ったら良いか迷ってしまいます。そこで、2019年5月現在のおすすめのフレームワークを3つご紹介します。この中から選べば間違いありません。 選定にあたっては、重要と思われる下記の4要件を満たすものから選びました。 使い方がわかりやすいこと 今も開発が継続していること モック対応していること 自動テストディスカバリ機能があること この条件に当てはまるものフレームワークとして、Unity、CppUTest、Google Testの3つがあります。まずは、順番に簡単な紹介からしていきましょう。 Unity http://www.throwtheswitch.org/ ゲームエンジンのUnityと混同してしまいそうですが、これは別物です。C言語用に作られたユニットテスト・フレームワークで、テストコードもモックも全てC言語です。
================================ 【お詫び】 いつもTechStockマガジンのご利用、誠にありがとうございます。 この度、C言語に関する解説記事の内容に誤りがございました。 当件について、お客様の信頼を損ね、ご迷惑をおかけしましたことを深くお詫び申し上げます。 当記事につきましては記事全体の再調査と修正を行い、再公開をいたしました。 今後は再発防止に向けて、記事の品質向上により一層努めてまいります。 今後もご愛顧を賜りますよう、何卒よろしくお願い申し上げます。 2023.6.16 TechStock編集部 ================================ さまざまな現場で製品開発に活用されてきたC言語は、誕生から50年以上が経過した今も、多くのエンジニアによって使われ続けています。これから新しくプログラミング言語を学ぶにあたって、C言語に興
さて、C言語を使い慣れた人には常識ですが、C言語初心者にとって少し難しいのが、変数の宣言です。 例えば、初心者にとって、関数ポインタの配列へのポインタを返す関数の宣言を書くのはあまり簡単ではありません。 C言語の初心者には、以下のようなコードを書くのは少し難しく、また、C言語にあまり慣れていない人は、typedefなどを使ってしまいがちです。 typedef int (*func_t)(int); typedef func_t func_arr_t[10]; extern func_arr_t *x[40]; int (*(*x[40])[10])(int); int (*(*func(int i))[10])(int) { return x[i]; } そのようなことでは、いつまでたってもC言語の初心者を脱出することはできません。この章では、変数の宣言について詳しく勉強することにしましょ
これまで9回にわたり、Windows 10でC言語開発を行うための環境をセットアップする方法を紹介してきた。どのようなツールがなぜ必要なのか、基本情報を一通り説明してきたつもりだ。実際には、これまで取り上げてきた作業は一気に行う。そこで、後から読み返した時に作業がしやすいように、今回は一旦開発環境をセットアップする方法をまとめておく。作業をする際の参考にしてもらえれば幸いだ。 Wingetをインストール 開発環境をセットアップするためにWinget (Windows Package Manager)を用意する。将来的にはデフォルトで使えるようになる見通しだが、本稿執筆時点では手動でセットアップが必要。 Microsoft Storeから「アプリインストーラー」をインストールする。 Microsoft Storeから「アプリインストーラー」をインストール GitHub.comのWinget
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く