JavaRush /وبلاگ جاوا /Random-FA /مطالب اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4)
Masha
مرحله

مطالب اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4)

در گروه منتشر شد
cs50 در مواد اضافی روسی وظایف هفته 1

اهداف هفته اول

  • با دستورات اولیه لینوکس آشنا شوید
  • سینتکس اولیه C را یاد بگیرید و چند مشکل را حل کنید
  • روشن تر فکر کن =)
IDE CS50
برای تکمیل وظایف، CS50 یک IDE (محیط توسعه یکپارچه) در فضای ابری ارائه می دهد. برای استفاده از آن، یک حساب کاربری در پلتفرم edX ایجاد کنید و برای دوره اصلی ثبت نام کنید . پس از آن:
1. به cs50.io بروید، edX را از لیست انتخاب کنید، لاگین و رمز عبور خود را وارد کنید، روی Submit کلیک کنید 2. اطلاعات حساب edX خود را وارد کنید، روی Return to ID.CS50.NET کلیک کنید . cs50.io 3. منتظریم: فضای مجازی شما در حال ایجاد است. فضای مجازی cs50 4. تمام شد! cs50 ide
خط فرمان و راه اندازی CS50 IDE
در پایین پنجره CS50 IDE، در تب Terminal، یک پنجره ترمینال یا پنل خط فرمان وجود دارد. می‌توانید دستورات رشته‌ای را در اینجا وارد کنید: می‌توانید همان کاری را که با رابط پنجره انجام می‌دهید، به عنوان مثال، راه‌اندازی برنامه‌ها، حذف و ایجاد فایل‌ها، نصب نرم‌افزار انجام دهید. اگر هرگز با خط فرمان کار نکرده اید، این روش احتمالاً دست و پا گیر به نظر می رسد: باید دستورات را به خاطر بسپارید و به جای کلیک بر روی نمادها و دکمه ها، آنها را تایپ کنید. تا حدودی این درست است، سپس رابط پنجره اختراع شد. با این حال، خط فرمان در همه سیستم عامل ها موجود است و مدیران آن را دوست دارند. و همه به این دلیل که گاهی اوقات نمی توانید بدون آن زندگی کنید. در پنجره IDE در ترمینال، یک خط مرموز خواهید دید: username:~/workspace $ به جای "username" یک نام به طور خودکار تولید می شود (بر اساس داده های ثبت نام شما). روی پنجره ترمینال کلیک کنید، تایپ کنید: update50 Enter را فشار دهید. دستور از سیستم می خواهد که به روز شود. خطوطی را خواهید دید که در ترمینال مراحل نصب را توضیح می دهند. CS50 IDE را نبندید تا زمانی که به‌روزرسانی کامل شد! . پس از این، خط پیش فرض دوباره ظاهر می شود، خطی که نام شماست.
کار در IDE
بیایید یک پوشه ایجاد کنیم که فایل های شما در آن ذخیره می شوند. روی ~/workspace (دایرکتوری ریشه خود) در گوشه سمت چپ بالای CS50 IDE کلیک راست کنید ، New Folder را انتخاب کنید . نام پوشه pset1 را تغییر دهید (اگر نام را اشتباه نوشتید، روی پوشه خود کلیک راست کرده و تغییر نام را انتخاب کنید ). سپس بر روی پوشه pset1cs50 ide تغییر نام پوشه کلیک راست کرده و New File را انتخاب کنید . فایل Untilted ظاهر می شود، بیایید نام آن را hello.txt تغییر دهیم . روی hello.txt دوبار کلیک کنید. در CS50 IDE یک برگه جدید و یک فیلد در سمت راست می بینید که می توانید تایپ کنید. اگر این کار را انجام داده اید، به علامت ستاره (*) که قبل از نام فایل در برگه ظاهر می شود توجه کنید - نشانگر این است که تغییراتی در فایل ایجاد شده است، اما ذخیره نشده است. فایل را با رفتن به مسیر *File > Save یا با استفاده از دستور + S (در دستگاه های اپل) یا Ctrl + S (در رایانه های شخصی) ذخیره کنید. ستاره باید ناپدید شود. بیایید بررسی کنیم که آیا فایل در جایی است که باید باشد. بیایید این کار را با استفاده از خط فرمان انجام دهیم، وقت آن است که به آن عادت کنیم :). مانند قبل، خط فعال در ترمینال به این صورت است: Workspace - دایرکتوری کاری فعلی (آنی که در محیط کار باز است). tilde (~) دایرکتوری ریشه را نشان می دهد (فضای کاری در آن قرار دارد). توجه داشته باشید که فضای کاری در ترمینال مانند نماد ~/workspace در گوشه سمت چپ بالای CS50 IDE است. بیایید تمرین کنیم. روی هر نقطه از ترمینال کلیک کنید و در خط فرمان تایپ کنید و Enter را فشار دهید. این دو حرف کوچک - مختصر "list" - لیستی از فایل‌ها و پوشه‌های موجود در فهرست فضای کاری فعلی را نمایش می‌دهند. در میان چیزهای دیگر، pset1 را که ایجاد کرده اید خواهید دید ! حالا بیایید پوشه خود را با استفاده از دستور باز کنیم. ما یا بیشتر به صورت واضح تایپ می کنیم: دستور cd (تغییر دایرکتوری) دایرکتوری فعال را تغییر می دهد، در مورد ما به خط فعال به تغییر کرده است. پوشه ای که در پوشه ریشه قرار دارد و با ~" نشان داده شده است) حالا تایپ کنید فایل hello.txt را می بینید ! اگر روی نام در ترمینال کلیک کنید، هیچ اتفاقی نمی افتد: متن است و یک فعال نمی دهد. لینک، اما تایید می کند که hello.txt جایی است که باید باشد. تایپ کنید اگر فقط خود دستور cd را بنویسید، اما آرگومان ارائه نکنید (یعنی نام پوشه ای که باید به آن برود)، شما را برمی گرداند. به دایرکتوری ریشه پیش فرض، بنابراین تصویر زیر را در خط فعال خواهید دید: برای بازگشت به پوشه pset1، شماره گیری کنید cs50 ideمواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace و Enter را فشار دهید. سپس cd pset1 دوباره Enter کنید. همچنین می توانید این دو دستور را با یک فرمان معتبرتر جایگزین کنید: cd workspace/pset1
سلام سی!
بالاخره این لحظه فرا رسید! بیایید برنامه نویسی را شروع کنیم. در داخل پوشه pset1 ما در IDE، فایلی به نام hello.c ایجاد کنید (پسوند مورد نیاز است)، آن را در یک برگه جدید باز کنید (فکر می کنیم نحوه انجام این کار را از پاراگراف قبلی به یاد داشته باشید). مهم! حروف باید کوچک باشند، لینوکس به حروف بزرگ و کوچک حساس است. Hello.c و hello.c فایل های مختلفی هستند. در سمت راست پنجره CS50 IDE، دقیقاً همان متنی را که در زیر می بینید تایپ کنید. بله، می توانید آن را کپی کنید، اما تایپ آن مفیدتر است. حروف رنگ های متفاوتی دارند زیرا CS50 IDE دارای برجسته سازی نحو است. بلوک های متن را با رنگ برای خوانایی بهتر برجسته می کند. رنگ ها در خود فایل ذخیره نمی شوند، فقط در IDE قابل مشاهده هستند. اگر آن‌ها وجود داشته باشند، IDE C را می‌فهمد، و شما در پسوند فایل (*.c) C است. اگر همان فایل را hello.txt صدا بزنید، متن یک رنگ خواهد بود. اطمینان حاصل کنید که همه چیز را دقیقاً مانند مثال تایپ کرده اید، در غیر این صورت اولین باگ =). باز هم توجه شما را به تفاوت حروف کوچک و بزرگ جلب می کنیم. کاراکتر \n مکان نما را به خط بعدی منتقل می کند و متن وارد شده بعدی با خروجی برنامه به هم نمی چسبد. اوه بله، و نقطه ویرگول (;) را فراموش نکنید. این یک جداکننده مهم برای دستورات برنامه است؛ C نمی خواهد بدون آنها کار کند. روی File > Save (یا command- یا Ctrl-s) کلیک کنید . توجه داشته باشید که ستاره جلوی نام فایل ناپدید شده است؟ اگر بله، پس تغییرات ذخیره شده است. روی هر نقطه از پنجره ترمینال زیر کد خود کلیک کنید و مطمئن شوید که داخل ~/workspace/pset1 هستید (اگر نیستید، روی cd کلیک کنید و Enter، سپس cd workspace/pset1 و دوباره Enter را فشار دهید). خط فعال شما باید به این شکل باشد: بیایید مطمئن شویم فایل hello.c دقیقاً همان جایی است که باید باشد. تایپ کرده و Enter را فشار دهید. hello.c را هم می بینید؟ اگر نه، چند مرحله به عقب برگردید و دوباره فایل را در دایرکتوری مورد نظر ایجاد کنید. ... اکنون لحظه رسمی فرا می رسد: انگشتانمان را روی هم می زنیم و ... تایپ می کنیم: و با انگشتان روی هم زده Enter را فشار می دهیم. دقیقا سلام نه hello.c. اگر تنها چیزی که بعد از این عمل در مقابل خود می بینید، دومین خط فعال است که دقیقاً شبیه خط قبلی است، پس همه چیز در حال کار است! کد منبع شما به کد ماشین یا شی (یعنی به ترتیب 0 و 1) ترجمه شده است. حالا این کد را می توان اجرا کرد (یعنی برنامه را می توان اجرا کرد!). برای انجام این کار، تایپ کنید: در خط فرمان، Enter را فشار دهید. اگر متن محصور شده بین "" ها را تغییر ندهید، در زیر خواهید دید: اگر اکنون دستور را تایپ کرده و Enter را فشار دهید، یک فایل hello جدید به همراه hello.c و hello.txt خواهید دید. سلام اول باید یک ستاره بعد از نام داشته باشد که نشان می دهد این یک فایل اجرایی است، یعنی فایلی که با آن برنامه را اجرا می کنید. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
اشکالات؟
اگر بعد از دستور make خطاها را مشاهده کردید، نوبت اولین اشکال زدایی است! کتیبه هایی مانند "اعلام مورد انتظار" به این معنی است که شما در جایی اشتباه تایپی کرده اید. کد بالا را دوباره بررسی کنید، فقط در مورد تمام جزئیات بسیار مراقب باشید. توجه! توضیحات خطا به زبان انگلیسی ارائه شده است. اگر واضح نیست، از موتور جستجو، گوگل ترنسلیت استفاده کنید یا در نظرات سوال بپرسید. هنگامی که خطاها را تصحیح کردید، فراموش نکنید که کد خود را با استفاده از File > Save (یا دستور- یا Ctrl-s) ذخیره کنید، دوباره روی داخل پنجره ترمینال کلیک کنید و تایپ کنید make hello (فقط مطمئن شوید که در ~ هستید. /workspace/pset1 first ). اگر خطای دیگری وجود ندارد، برنامه را با تایپ دستور اجرا کنید. ./hello در تئوری، عبارت ارزشمند باید در جلوی شما ظاهر شود که در داخل علامت نقل قول عملگر printf قرار دارد که دستور "print" را می دهد. اگر پنجره ترمینال خیلی کوچک به نظر می رسد، روی نماد دایره ای به علاوه (+) در کنار hello.c کلیک کنید.
بررسی صحت
برنامه check50 در CS50 IDE تعبیه شده است. از خط فرمان کار می کند و برخی از برنامه ها را برای خطا بررسی می کند. اگر هنوز آنجا نیستید، با اجرای دستور در ترمینال به دایرکتوری ~/workspace/pset1 بروید: cd ~/workspace/pset1 اکنون اجرا کنید ls حداقل یک فایل hello.c را خواهید دید. مطمئن شوید که نام فایل به این شکل باشد و مثلاً Hello.c یا hello.C نباشد. می توانید با اجرای دستور mv source destination منبع - نام فایل فعلی، مقصد - نام فایل جدید، نام یک فایل را تغییر دهید. mv (از انگلیسی move) یک ابزار تغییر نام است. اگر اشتباهاً نام فایل را Hello.c گذاشتید، این خط را تایپ کنید: mv Hello.c hello.c پس از اطمینان از اینکه فایل دقیقاً hello.c نام دارد، برنامه check50 check را فراخوانی می کنیم. لطفاً توجه داشته باشید که 2015.fall.pset1.hello یک شناسه منحصر به فرد برای مشکل "سلام جهان" است. check50 2015.fall.pset1.hello hello.c اگر برنامه به درستی اجرا شود، خواهید دید: مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 2 صورتک های سبز رنگ به معنای قبولی در آزمون است. شما همچنین می توانید URL را در پایین خروجی check50 مشاهده کنید، اما فقط برای کارمندان است (با این حال، اگر علاقه دارید، آن را بررسی کنید!). check50 3 تست را اجرا می‌کند: آیا فایل hello.c وجود دارد، آیا hello.c کامپایل می‌شود یا نه، و اینکه آیا برنامه خطی تولید می‌کند که می‌گوید "hello, world\n". اگر شکلک های قرمز غمگین می بینید، به این معنی است که شما یک اشکال دارید. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down در اینجا check50 hello.c را پیدا نکرد و شکلک قرمز نشان می دهد که شما یا در نام اشتباه کرده اید یا فایل را در جای اشتباه آپلود کرده اید. شکلک های زرد "خنثی" به این معنی است که تست ها اجرا نشدند. و اگر برنامه فایلی که باید بررسی شود را پیدا نکرد از کجا شروع کنند؟ در اینجا گزینه دیگری وجود دارد که اگر متنی را که تابع printf() باید خروجی کند تغییر دهید ظاهر می شود: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 گزارش می دهد که خط hello, world\n انتظار می رفت، اما چیز دیگری ظاهر شد. check50 امتیازی را برای تکمیل دوره محاسبه نمی کند، اما بررسی می کند که آیا نتیجه تکلیف با آنچه مورد انتظار بود متفاوت است یا خیر. و به شما امکان می دهد قبل از تأیید صحت کار در دوره، این موضوع را تأیید کنید (ما بعداً به شما خواهیم گفت که چگونه این کار را انجام دهید).
C مبانی: مقایسه با Scratch
سلام دنیا در اسکرچ و سی:
مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 4عملکردی را نشان می دهد که "کلمات" یک sprite را در یک حباب کمیک در Scratch چاپ می کند، یک تابع printf در C وجود دارد که همین کار را فقط بدون کارتون انجام می دهد.
  • اصلی - به انگلیسی - "اصلی". نقطه ورود به برنامه مثل مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 5.
چرخه بی پایان
مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 6 ترجمه شده به C: while (true) { printf("hello, world\n"); } while (true) همین کار را می کند: حلقه به کار خود ادامه می دهد در حالی که (در حالی که) مقدار درست است (عبارت بولی "true" یا "one"). این حلقه به طور بی پایان اجرا خواهد شد.
حلقه ای که یک عبارت را 10 بار روی صفحه نمایش می دهد
Scratch مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 7 C for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i یک متغیر شمارنده است، مقدار آن توسط عملگر افزایشی i++ تغییر می‌کند و در هر تکرار حلقه آن را 1 افزایش می‌دهد. در ابتدا با استفاده از عملگر انتساب = به i مقدار 0 اختصاص داده می شود. توجه! همانطور که در جاوا، در C برابری با ==، عملگر انتساب = نشان داده می شود. یعنی a = 5 به این معنی است که به متغیر a مقدار 5 اختصاص داده شده است و (a = =5) به معنای عبارت بولونی است (اگر a برابر با 5 باشد، آن عبارت درست است، اگر مساوی نباشد نادرست است). . حلقه متوقف می شود زمانی که من به 9 "رشد" می کنم. محاسبه آن آسان است، حلقه 10 بار اجرا می شود. بنابراین، اگر نیاز دارید چیزی را چند بار تکرار کنید، در C یک حلقه for تعریف می‌کنید (int i = 0؛ i < 10؛ i++). مثال دیگر: مواد اضافی برای سخنرانی ها CS50: هفته 1 (سخنرانی 3 و 4) - 8 و همان چیزی که به C ترجمه شده است: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • شمارنده مقدار را در C و Scratch ذخیره می کند. در C به جای int counter = 0 قرار می دهیم Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • نوع متغیر را به عنوان int برای روشن شدن علامت گذاری می کنیم: i یک عدد صحیح است (از عدد صحیح انگلیسی، کل).
  • %i که در printf در خط چهار استفاده می‌کنیم یک مکان‌نما است که به ما می‌گوید عدد صحیح اعشاری را چاپ کنیم، همانطور که به printf می‌گوییم جای جای‌بان را با مقداری که متغیر شمارنده می‌گیرد جایگزین کند.
عبارات بولی
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 همان است که (x < y) ((x < y) && (y < z))
شرایط
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 و معادل “گِه”: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 اولین عبارت نامفهوم چطور؟ در ادامه، در بخش "کتابخانه ها" در این مورد بیشتر توضیح دهید. #include
اظهارات مشروط
این افراد بررسی می‌کنند که آیا برخی از شرط‌ها (یک عبارت منطقی، سؤالی که فقط با «بله» یا «نه» می‌توان به آن پاسخ داد) درست است یا خیر، و اگر چنین است، برخی از اقدامات مرتبط با این شرط را انجام می‌دهند. مثالی از زندگی: اگر باران ببارد (با فرض اینکه باران ببارد) و من بیرون باشم (وقتی باران می بارد بیرون هستم) چترم را باز می کنم. if (condition) { //исполнить, если meaning истинно } یک گزینه پیچیده تر: اگر شرط برآورده شد، اقدامی انجام دهید، اگر نه، اقدام دیگری انجام دهید. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } مثال: اگر بالای 18 سال دارید، دسترسی را تأیید کنید. اگر کمتر باشد تایید نمی شود. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
اپراتور انتخاب
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } به عنوان مثال: اگر n = 50، چاپ "CS50 is Introduction to Computer Science I"، اگر n = 51، "CS51 is Introduction to Computer Science II" را چاپ کنید، در غیر این صورت "ببخشید، من با آن کلاس آشنا نیستم!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
چرخه ها
while: شرط را بررسی می کند، سپس عمل را در حالی که شرط true است اجرا می کند while (condition) { // выполнять, пока истина } do/while متفاوت است به این صورت که اولین بار عمل را بدون بررسی شرط انجام می دهد و سپس فقط آن را بررسی می کند. اگر شرط درست باشد، عمل را تکرار می کند تا شرط نادرست شود. do { ) // выполнять, пока истина } while (condition); حلقه for یک عمل را چند بار مشخص تکرار می کند Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 . در این حالت در هر مرحله از حلقه بیرونی، حلقه داخلی به طور کامل اجرا می شود. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
انواع داده های پایه در C
основные типы данных в C
کتابخانه ها ج
احتمالاً قبلاً از خود پرسیده اید که خط اول یک برنامه C به چه معناست: نقش آن چیست و آیا می توان بدون آن انجام داد؟ خط #include یک کار بسیار مهم را انجام می دهد: شامل کتابخانه هایی از کدهای قبلاً نوشته شده در برنامه شما می شود. نام کتابخانه متصل در پرانتزهای زاویه ای (<>) محصور شده و پسوند (.h) دارد. اگر کتابخانه‌ای وجود نداشت، هر اقدامی، حتی ابتدایی‌ترین اقدام، باید بارها و بارها شرح داده شود. کتابخانه ما متصل شدیم#include شامل توابع ورودی/خروجی است. این همان چیزی است که به ما امکان می دهد از تابع printf() برای چاپ روی صفحه استفاده کنیم. یعنی اگر خط #include را نمی نوشتیم ، اما تابع printf() را در بدنه برنامه رها کرد؛ وقتی می خواستیم آن را اجرا کنیم، با خطا مواجه می شدیم! زیرا بدون این کتابخانه کامپایلر نمی داند printf() چیست. کتابخانه های استانداردی وجود دارد، آنها واژگان زبان را تشکیل می دهند. تابع printf() در رایانه تعبیه نشده است، اما در کتابخانه استاندارد زبان C گنجانده شده است. یعنی قبلاً یک برنامه نویس آن را نوشته و در کتابخانه قرار داده است. اکنون دیگران می توانند بدون اختراع مجدد چرخ از آن استفاده کنند. برای اینکه کامپایلر آن را "درک" کند، ما متصل می شویم . کتابخانه های استاندارد دیگری نیز در فرآیند CS50 استفاده می شود. به عنوان مثال، یک کتابخانه از رشته ها، که عملیات با رشته ها (تعیین طول، جمع و غیره) را توصیف می کند. در مقایسه با سایر زبان های برنامه نویسی محبوب، تعداد کتابخانه های استاندارد C بسیار کم است. اما کتابخانه های خودنویس و اغلب بسیار تخصصی تر وجود دارد. بله کتابخانه به طور خاص برای دانش آموزان CS50 ایجاد شده است. وقت آن است که یک نکته مهم را ذکر کنیم: یک توسعه دهنده خوب علاوه بر نوشتن برنامه ها و حل مشکلات با استفاده از کد خود، مهارت مهم دیگری نیز دارد: دانش ابزارهایی که قبلاً نوشته شده اند و توانایی استفاده از آنها (کتابخانه های دیگران) زمان را برای اختراع مجدد "چرخ" تلف نکنید. بنابراین، اگر در حال حل یک مشکل خسته کننده یا پیچیده هستید که کاملاً رایج به نظر می رسد، یاد بگیرید که این سؤال را از خود بپرسید: "آیا شخص دیگری راه حل را نوشته است؟" به احتمال زیاد این مورد خوب است و شما می توانید این تابع را در یک کتابخانه موجود پیدا کنید. در اصطلاح فنی، یک کتابخانه یک فایل باینری است که از ترکیب مجموعه ای از فایل های شی با استفاده از یک پیوند دهنده تولید می شود. فایل های شی آن دسته از فایل هایی با پسوند (*.o) هستند که هنگام کامپایل برنامه ها دریافت می کنید.
ساختار کتابخانه های C
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION