@wywm@z[y[W
ŏIXVF2025N11
@q㖖ɋgcDɂ菑ꂽMukRv̖`ɁA
ÂȂ܁TɁA炵ɌЂāASɂ䂭悵ȂƂ͂ƂȂtA₵قB
ƏĂ܂Bv܂܂ɂ͂ƂȂAGfB^Ƀ\[XEvOłŁÂ܂܁Avʂ̎dĂΌƂ͂Ȃ̂łAŏɏꂽ\[XEvÔ܂܂ŊҒʂ̓ĂAƂƂ܂BȂɁAƌςݏd˂ĐɓȂƁAJɗ\O̎ԂAƎvĂۂɉ^pĂ݂ƃ{{AQƂɑΏs\ɂȂAƂ悤ȂƂN܂B\tgEFÁAقڈȉ̂悤ȗŁAJi߂܂A̒ŁA悭ĊmȎ菇Ői߂Kv܂B
(1) VXev
@vOJ̍ŏɁAuVXevvƌĂH܂BvOJ_ł́AȂȂAvȎSeɂăC[WNȂ̂ʂłAŎ蔲Đɐił܂ƁAɋƂŊJi߂ꍇɑ卬Ɋׂ܂B
(a) \tgEFA̖ړǏ
@܂A\tgEFAȂ̂mFĂKv܂BƂōŝł͖cȍƗʂɂȂĂ܂ʓ|ȂƂȗ͉E킯łA
̂A
̂߂ɂ̂A
ǂĎ̂A
v͂ǂ̒x̂̂A
mFĂƂKvłB\tgEFA̖ړIlĂA쎞Ԃ̌Ă݂疳ӖAƂ悤ȂƂN܂B
@ႦAVC\̃VXeJ悤ƂƂɁAen̂P̋C≷xȂǂ̃f[^Ď̓̓VC\̂ɕKvȏԂ10AƂ̂ł́A\tgEFASӖłBVC\oOɎ̓ɂȂĂ܂܂Bn[hEFA10{ȏ㍂Ȃ̂ɂ邩AvZASYHv邩A炩̃u[NX[KvɂȂ܂BȂA\tgEFA̓eȗȂ̂ɂ邱Ƃl܂AOĂ̓VC\ł͂͂薳ӖłB
(b) \tgEFA̓\̌
@ɁAړIB邽߂ɕKvȍƂׂAǂ菇ōs܂B茟ĂȂƁAR[fBOƂɓĂ炤܂i܂AVXev̂蒼AƂԂɒǂ܂܂B
@vÓAKP̃CE[`(Cł́Amain()Ƃ)ŋLq̂ł͂ȂACE[`ɂ́ÃTu[`ׁAe̍Ƃ̓Tu[`SAƂɂȂ܂BeTu[`܂̍Ƃɕ邩m܂BꂽƂAvO~OՂ`ɐzA݊WAʂĎgׂf[^EeADxAȂǂڍׂɌ܂BƂ`sĂłȂƍƂasłȂAƂb͍Ƃ`EƂǎʂ𗼕ƂgAƂ悤ȊWĂ܂BꍇɂẮAf[^ǂݎ聨f[^ʏóAƂ悤Ȉ{ł͏ŁAf[^ǂݎ聨ɕKvȊݒ聨ݒɊÂAf[^ǂݎyюʏóAƂ悤ɁAf[^ǂݎQJԂKvAƂ悤ȏꍇoĂ܂B܂sȂƁAf[^ŝɁAKvȊ{f[^ĂȂ߂ɃR[fBOłȂAƂ悤ȂƂN܂B
@ႦA̓VC\ŌƁAf[^Ŋen͂̕vẐɗאڒn̋C߂ĂȂAƂAn̉xExɂ̉_̏vZłĂȂ̂Ɏ̎_̒n̉x߂ȂAƂAvZ̏܂ݒ肷Kv̂łB
(c) SʓIES̍\̌
@ɁAׂꂽƂ̊eǂ̂悤ɃvO~O邩܂BKvȃf[^Af[^\Af[^i[L̈AvZēf[^̏Af[^̌ʂ̎[̎菇Aʏo͂邽߂̃f[^̕ێ̎dAȂǂڍׂɌ܂B̏ŁAeƂǂ̂悤Ȋɂ܂Ƃ߂邩Ae̒łǂ̂悤ɏi߂邩A菇Et[`[ǧ`Ő܂B̐lŊJsꍇɂ́Ae菇EeƂNǂ̂悤ɒS邩S߂܂B
@SʓIȗ̒ɂ͌ȂĂAe̍sƂ̒ŋʁE邢͗ގ̏soăTu[`܂B܂ATu[`Ăяoł̑OATu[`̈ATu[`ǂ̂悤ȃf[^ǂ̂悤ɕԂAAAƕAʂȍƂdAOdɍsƂȂ悤ɂ܂Bdɍŝł͂ȂĂA̒gGȏꍇATu[`đS̓Iȏ̗ꂪGɂȂȂ悤ɂꍇ܂B
@t[`[głȀɏĂƁAƂTu[`łӊOɏꏊƂAv悤ɏȂm܂Bŋ߂́u^R[hvƂl邻łBCvO̍\̃y[Wɂ̈Ă̂ŎQlɂĂBCvȎ̍قƂAڍׂ̃R[fBOł͂ȂeĂAƂ̂łB
(d) \tgEFA̓ԗľ
@xvO̓emɂȂĂAs߂ɃvOɓ͂f[^̌`Ȃǂ܂Bf[^͂lōsꍇɂ́AGɂȂȂ悤ɁA~X荞܂Ȃ悤ɁA~XĂxł悤ɁAvO̓e܂BꍇɂẮAz肷ƃvO܂ΉłȂꍇoĂāAvO̎菇ČȂȂȂꍇoĂ܂B
@tsvZ|o@ŃvO~OĂAۂ̃f[^Ă݂ƁAs{bg[邢͐ΒlɏlɂȂĂ܂āAʂ[ȐxœȂA邢̓vOrœ~Ă܂˂ȂAƂƂAẢ@ɍHvȂȂȂAŜ̗ɉełĂ܂AƂ悤ȂƂN܂B
@ƂA炩ߎOɂłƂ]܂̂łBsKȏꍇɂ́AR[fBOAfoOA邢͉^pJn_Ŕo_̂߂ɁAŜ̗̏ꎩ̂č\ȂȂ炸AvWFNgŏ蒼ɂȂ(Ȃǂ̂łAvWFNg~EJsƂƂ蓾܂)AƂ悤ȂƂN܂B
@܂Ao͌`A[U[ʂՂՂ`ŏo͂ł悤ɁA܂̂悤ɏo͂邽߂̓f[^̕ێ̎dȂǂKv܂B
@ȏ̓eA͎dlAo͎dlAŜ̗Lq{dlAlŊJꍇɕKvƂȂTu[`̌Ăяo@ڍdlȂǂ̌`ł܂Ƃ߂܂B
(2) R[fBO
@łAꓖIɓDꎮɃR[fBOi߂̂ł͂ȂAbIȕ珇foOs悤ɁAJɕKvƂȂTu[`QɂāAR[fBOǂꂭ炢iłǂꂭ炢foOiŃeXgĂ邩AƂƂH\čƂ̐iǗ邱Ƃ]܂܂BlŊJsꍇɂ́Ai̒xɐl͂𓊓Kv܂B
@R[fBOɓẮA\[XER[hATABȂǂpāA
int sub1(int j1, char *p1) {
int j2, ret;
char c1;
while (c1 = *p1++) {
for (j2 = 0; j2 < j1; j2++) {
if (ret = sub2(c1, j2)) return ret;
}
}
return 0;
}
Ƃ悤ɁA'{'oĂxɁAE1TAB(LTAB1ŋ4ɂĂ܂BTAB1ŋ8ʂłAGfB^łsӂNÂ炭Ȃ܂)ssA菇ՂȂ悤ɋLq̂AlŋƂƂ̃G`PbgłB
int sub1(int j1, char *p1){int j2,ret;char c1;while(c1=*p1++){for(j2=0;j2<j1;j2++){if(ret=sub2(c1,j2))return ret;}}return 0;}
Ƌl߂ďĂARpCē삳邱Ƃ͂ł܂Ał́Åǂ̂悤ɓ삵Ă̂AĂ邾ł͂킩܂B\tgEFAA^pɏQNQׂ邽߂ɁȂO҂\[XER[h߂ƂƂ͂悭邱ƂȂ̂ŁAΗǂAƂ킯ɂ͍s܂BAAL͎Ȃ̏ŁÂ悤ȎLq̕@lɂقȂ܂BŊJȂAŒ߂ėłΗǂłAl̃vWFNg̏ꍇɂ́Ao[ԂœꂵĂȂƍ̂ƂɂȂ܂B
@܂AvO~O@ŁA\vO~Oƌ̂łA\̂ݐɋLqāA̒gɗ͊ƂċLqAƂvO~O̎d܂B܂AlɂẮAgoto֎~AƂl܂Bl̍lłAՂ邱ƂŁApĕɂȂ̂ɎȋK͎̂ꎩŋtʂł͂ȂAƎv܂B́A\̒ɁAƂȂĂXƏA˂邱Ƃ邵AgotoϋɓIɎg܂BAAgotoHv͂܂BႦAgotogāA
for (j1 = 0; j1 < limit; j1++) {
if (strcmp(array[j1], "normal") goto error_process;
}
return 0;
error_process:
return -1;
Ƃ悤ɂȂꍇɁA
j2 = 0;
for (j1 = 0; j1 < limit; j1++) {
if (strcmp(array[j1], "normal") j2 = 1;
}
if (j2) return -1;
else {
}
return 0;
ƂAgoto邱Ƃł܂BłAgotogȂƂŋpČɂȂ̂łAKɔF߂Ăgoto̎gp͉獷xȂƁA͎v܂B
@܂AwhileAifAforgꍇAR[fBOɁA
while () {}
Ƃ
if () {}
else {}
ƂA
for () {}
ƐɁA()A{}yAɂĐɏĂ܂ƂNZ悤ɂ܂傤B
while (c1 = *pc1++) {
Ƃ܂܁A̎̍s珈eĂ܂ƁAwhile[vI'}'YĂ܂~XՂ̂łBeꍇA'{'ɑΉ'}'Ȃ߂ɁARpC_ŕsvcȃG[oČ߂J邱ƂɂȂ肩˂܂B@\ȃGfB^AႦΎ̎gĂMIFESƂGfB^ł́A
while (
ƃ^CvC_ŁAyAƂȂ')'tāAI
while ()
ƂĂ܂B܂A
while (c1 = *pc1++) {
}
ƂȂĂƂɁA'}'̂ƂɃJ[\ĂƁAO'{'ŕ\āAΉJbRĂĔɕ֗łBłAAWORDȂǂŁA\[XER[hłޏꍇɂ́A֗ȋ@\͂Ȃ̂ŁA[ɒӂĂB
(3) foO
@R[fBOƂIARpCɈڂ܂B삵G[̗ʂɑނm܂Błwǂ^CvE~XŐ[ȃ~X͂ނ܂łBЂÂčsA͏I܂B̌oł́ARpCEG[ŕɂG[́A'{''}'ΉĂȂƂɂ̂łBΉĂȂAƂbZ[Wł͂ȂAƕIȍɂG[EbZ[WԂ̂ŁAȂȂ߂ȂAƂƂ悭܂BRpCC邽тɈXA
gcc -c new_project.c
gcc -c subroutines1.c
gcc -c subroutines2.c
gcc -c subroutines3.c
ƃ^CvĈł͖ʓ|łBCł́AmakeƂ֗ȋ@\pӂĂ܂BmakefileƂeLXgEt@CɁAsvOnew_project.exe邽߂ɉKvAƂƂLqĂƁAmakeƃ^CvC邾ŁAKvȍƂsĂ܂Bmakefile͊{Iɂ́A
^[Qbg: ^[Qbgˑt@C
R}h
Ƃ`ŋLq܂B^[QbgA^[Qbgˑt@C̕VƁA̍sɏꂽR}hs܂BR}h́A[TAB]ă^[Qbg牺ċLq܂Bnew_project.cCsubroutines1.cCsubroutines2.cCsubroutines3.cʂ̃CN[hEt@Ccommon_inc.hCN[hĂāAꂼRpC邱ƂɂAnew_project.oCsubroutines1.oCsubroutines2.oCsubroutines3.oƂ܂BɁAnew_project.oCsubroutines1.oCsubroutines2.oCsubroutines3.oN邱ƂɂAst@Cnew_project.exeƂ̂łAmakefile̓éA
new_project.exe : new_project.o subroutines1.o subroutines1.o subroutines3.o
gcc -o new_project.exe new_project.o subroutines1.o subroutines2.o subroutines3.o 2>newl.log
new_project.o : new_project.c common_inc.h
gcc -c new_project.c 2>newc.log
subroutines1.o : subroutines1.c common_inc.h
gcc -c subroutines1.c 2>sub1.log
subroutines2.o : subroutines2.c common_inc.h
gcc -c subroutines2.c 2>sub2.log
subroutines3.o : subroutines3.c common_inc.h
gcc -c subroutines3.c 2>sub3.log
ƂȂ܂BgccR}h́Agcc -cƂRpCsAgcc -oƂƃNs܂Bmakefile̓eÂ낢Ƃł܂A{Iɂ́ALŏ[łBeR}h̃XgɁA2>newc.logƂ悤Ȃ̂Ă܂ARpCAÑG[EbZ[WWG[oɏo͂̂ŁA>̌ɏt@C_CNgďo͂ƂӖł(C̎vQ)BŁAǂ̃\[XEvOCĂAmakeƃ^CvC邾ŁARpCENs܂BG[oƂɂ́A_CNgt@CJAG[emFł܂B
@RpCʂAst@C(gqexẽt@C)łA삳Ă݂܂BϐPATHɁAst@CʒufBNgo^Ă̂łȂAst@C̈ʒutpXŎw肵Ďst@C^CvCċN܂BLnew_project.exe/home/user/newproɒuĂƂ́AJgEfBNg/home/user/newprołĂACYGWIÑR}h҂̂Ƃ납A
home/user/newpro/new_project.exe
Ɠ͂Kv܂Bۂɓ삳ĊҒʂ̌ʂfoOłAӐ[쐬ĂĂAȂȂҒʂɂ͓Ă܂Bprintf()\[XEvOɓāAvO̐iseϐ̒lj^邱ƂɂAvOCĂ͓mFƂƂJԂ܂BłAvO̖_łȂꍇ́AfoKgdb𗘗p邱ƂɂȂ܂Bڍׂ́AC̃foOQƂĂB @foOƒAɁA߂ȂoÔƂɂ͐_IɂȂ܂A̍ƂAhs̊jSƌƂȂ̂ŁAɂ́AX|[c≹yŋC炵撣蔲܂B̌oŌƁAoOނ̂1AƂ悤ȂƂ܂BoÔ̂AoOׂ@l̂ɒԂ̔EςƍHvKvAƂƂ܂B嗝n̐w̓l̂ƓłB
(4) ^peXg
@foOƂAlXȓ̓p^[lXȃ^C~OʼnĂȂ삷悤ɂȂAۂɉ^pēmF܂Bő傫ȃguNĂ܂ƁAJsƂȂ肩˂Ȃ̂ŁAfoOƂ͊ɍsĂKv܂BAłĂAzs\Ȕȃ^C~ÔȂǂɂāAVXeNbVĂ܂Ƃ܂BsVXê悤ȖcȊJpƐlKvƂ鋐VXełĂA2023N10Ao[WEAbvɁAԂ̍Ɨ̈sNđs̐U荞݂łȂȂA傫ȖNAƂႪ܂B
@肵ē삵Ă悤ɌĂA댯Ȍ܂蔲ēĂ邾AƂƂ蓾܂Bܘ_AQNƂɁA^ɑΉ邱ƂdvłA(1)(d)ŏqׂ悤ɁAڍׂȎdlcĂƂA}ȑΏsAڋq̐M邱ƂɂȂ܂B
(5)
@vO̓AfoOEeXg̓eȂǂɊւďڍׂɋLqc悤ɂ܂傤BꍇɂẮAVXeJA̕ɒԂ邩m܂BЉɒĎgĂ炤VXełȂAlIɎĝłĂAQꍇɂ́AȂグɂȂ܂BAǂȁAƂԂ悤ɂĂB
@foỎߒŁAoǑǂƂŁAǂΏ̂AƂƂXVL^ɎcĂ̂AguNƂ̑Ώ̖ɗ܂BΏ̕@̂ɔAႢACCɂȂĂȂAƂƂ̂łBoOłĂA[U[ɃguwEꂽꍇA邢́A@\lj̍XVꍇɂ́ANAgueAłǂΏAƂXVc悤ɂ܂B
yLz@LłB̊F܂̂x肽A낵肢܂B
yLz@L͂܂łłB