Как написать программу на c с нуля

Во вступительной части был приведен небольшой список статей, которые будут в цикле учебного примера. От себя же добавлю, что некоторые статьи могут быть разбиты на части, при условии, что слишком огромны по своему содержанию, что нормально для учебных примеров.

Введение

В данной статье, под названием «Постановка проекта с нуля или как правильно начать программу», будет рассматриваться ситуация «чистого листа» в рамках данной темы и как с этим работать. А более детальное рассмотрение дилеммы «чистого листа», стоит прочесть и поискать самим в интернете, благо тема важная и про нее можно много чего узнать, коли есть желание. А мы, с вами, пойдем далее в рамках самой статьи и все, что будет не попадать в нее, упомяну.

Ну что ж, для начала сделаю маленькую ремарку о том, что данный пункт из списка будет небольшим и больше поясняющим, направляющим и т.п. Т.к. по части проектирования, более подробно можно будет прочитать из книги «Совершенный код» автора Макконел С. Книга полезная для тех, кто хочет взяться за серьезный проект или по меньше ошибаться на этапах проектирования, при этом независимо от формального языка, на котором будет применять полученные знания.

Уроки C++ с нуля / Урок #1 — Основы

Однако, на мой взгляд это одна из немногих книг, написанная американцами, которая дотягивает до уровня профессоров СССР 80-ых годов, где открыл и понятно, что куда, и каким образом. Видимо, дозрели, так что книгу стоило назвать, «Пособие по проектированию нормально работающего кода, руками растущими не из жопы» . Да-да, такова суровость русского языка, говорить более прямо и по существу вопроса. А теперь, перейдем, конкретно к теме статьи, и напомню, что пример будет описывать не с позиции знания вышеприведенной книги, а с позиции личного, накопленного опыта, т.к. это ценее. Да, и книгу, нашел год спустя после накопления своего опыта. Так что, почитал ее не с позиции утенка, а с позиции человека будучи в определенной мере в потоке.

Зеленый новичок

Самая первая проблема, любого зеленого программиста в том, что после универа или других источников обучения, есть ярая и порою детская уверенность в том, что можно спокойно собрать велосипед из трактора или наоборот. Т.к. отсутствие практического опыта на ходу заменяется самоуверенностью или самоубеждением в собственных силах. Это прямой и легкий путь, либо к разочарованию, либо к костылестроению. А как всем, «неизвестно», внутреннее часто проецируются на внешнее, а потом по обратной связи начинает взращивать в участнике такого процесса, внутренние конструкции, дающие еще большую прогрессию в этом деле. Для примера, взгляните в зеркало, и задайте себе внутренний вопрос: «А у меня не также?». Полагаю, ответ, вам сильно «понравится».

Однако, разобраться в самоопределении — это еще только часть дилеммы «чистого листа», т.к. вышеописанная проблема — это не желание принять себя новичком и постоянный уход от этого, который неизбежно создает в себе упадок. А другая проблема, в том чтобы правильно начать.

Уроки C++ / Первая программа на С++

И ответ на этот вопрос ищут все по разному, у меня например удалось найти его через описание по составлению проектов в виде документации для архитекторов. Вкратце говоря, взял сам каркас подхода остальное отбросил и вложил со сферы деятельности программистов разных мастей. И, получилось, заработало. А по части реализации исходного кода программы могу сказать, что в силу опытности написания простых программ, сложную программу начал писать с самого простого места — с середины, т.к. сложно было обозначить начало и конец. Как раз об этом моменте и поговорим, подробнее.

Середина программы — движение механики

Сделаю еще одну, маленькую, ремарку. На вопрос «движение механики чего?», для особо страждущих у меня ответ таков. Все, как в том старом китайском фильме, где рабочему-новичку дали изоленту, и сказали, примерно следующее: «Вот, это твой рабочий инструмент, им можно починить, все, тебе будет его достаточно». Так, что движение механики — это ответ на ваш вопрос и он поможет вам понять все в этом мире . И это, работающая, правда.

Читайте также:
Как сохранить видео в программе вегас про 15

Начать с середины программы — это умеренный путь и подход к написанию любых программ, и к тому же работающий подход. Однако, эту умеренность и практичность подхода проявим через учебный пример.

И как ранее говорилось, учебный пример игры «Виселица», является по сути игрой, следовательно игровой процесс — это середина программы. А начало и конец, пока отложим в сторону. В итоге, пользователь программы принимает участие в работе программы, будучи игроком.

Каркас середины программы из себя представляет отгадывание слова, которое неизвестно игроку, а известно программе, при этом отгадывается по буквам. Значит, основной каркас программы в том, что игрок отгадывает слово по буквам и для реализации этого процесса применяется вся логика, конструкция и механика программы «Виселица». И смысл не в том, что это элементарно, т.к. элементарно для меня, потому что мне понятно, о чем идет речь, вам, наоборот. Т.к. умение разбирать программу на составляющие — это одно из умений, необходимых, для создания программ разного рода и уровня сложностей, без этого можно с легкостью создавать костыли, а не программы. И не надо убеждать меня в том, что якобы не прав — это значит, что вы ни разу не то, чтобы не брались за дело, даже в некоторой мере не реализовали сложный проект, пройдя все его тернии.

А теперь, представим себе игру «Виселица», как некий механизм (чем по сути оно и является, т.е. программный механизм). У любого механизма всегда есть начало, середина и конец. Помимо этого, любой, механизм состоит из основы (это каркас), и дополняющих направлений — это дополнения, которые задают границы возможностей механизма, закладываемые в него на этапе проектирования.

То бишь, достаточно нарисовать круг и поставить в центре точку, где точка — это каркас программы, окружность — это дополнения, а пространство между ними — это конкретный алгоритм, классы, и т.д. Этот принцип построения программ применяется везде и всюду, т.к. основан на более древних принципах созидания, не только в искусстве разработки программ. А, остальное зависит от развития вашего умения высматривать и находить механику в любых местах деятельности.

И, учитывая все вышеописанное, стоит вспомнить, что игровой процесс в виде отгадывания слова по буквам — это, каркас программы. Тогда, следовательно в самом элементарном варианте, кол-во допустимых ошибок — это, дополнение программы, причем одно из многих. Но, об этом несколько позже.

Подытоживая данную пункт темы скажу что, нет смысла заниматься реализацией кода, пока не смогли полностью разложить программу на составляющие, т.к. это путь дилетанта, не желающего работать над собой, а желающего всего и сразу, да за короткое время. По собственному опыту, рекомендую, применять начало с толком, а не растрачивать его на подобную лажу, иначе никогда не научитесь своему дело. И дело не во времени, как многие заблуждаются, а в участии, можно и через неделю продолжить, важно наработать в себе умение, возвращаться в процесс деятельности, а не пытаться выжимать из себя все соки, т.к. такая практика изматывает и вызывает серое отношение к конечному результату вне зависимости от его ценности.

И натренированные умения, в конечном итоге, сокращают время на проектирование и дают доступ к новым возможностям, то бишь передвигают на новый уровень возможностей и там-то начинается то самое интересное, к чему все и идут, собственно говоря.

Исходный код

А теперь, пора бы выложить все вышеописанное в исходном коде, коим будет сама реализация нашего содержания программы. Код, разумеется прост, как дважды, два, четыре. При этом, несмотря на простую реализацию игры, данный исходный код — это нормально работающий код, который можно превратить в нормальную программу-игру «Виселица». С этого варианта и продолжим развитие темы данного учебного примера.

И для краткости, немного по коду. Сам, игровой процесс начинается со строки 84, где запускается бесконечный цикл, пока игрок, либо отгадает слово, либо не отгадает слово и истратит допустимое кол-во ошибок. Также, помимо этого, была добавлена не только проверка на соответствие символов, вводимых с клавиатуры, буквам русского алфавита, а также проверка на повторный ввод ранее введенных букв. И разумеется в самом начале, игра вежливым общением, с элементами диалога, предлагает игроку сыграть в игру, объяснив ее правила. Также дает возможность выйти из программы до старта игрового процесса.

Читайте также:
Как настроить программы на телевизоре

И как, было мною упомянуто ранее в статье, вне темы идут вопросы о wchar_t, wcin, wcout, setlocale, using, т.к. они выходят за рамки темы, поэтому объясняться не будут. И единственное, что скажу. Это то, что «L» перед кавычками ставится не просто так, это связано с кодировкой Utf8, в которой пишется файл на gedit в Линуксе. И разумеется, все ранее перечисленное применяется без создания очередных костылей. Да, и новичкам есть, что почерпнуть для своей практики из кода.

В заключение, пример того какой командой делал компиляцию после сохранения файла с исходными кодами.

Источник: andryuhan.ru

Урок 1: “Привет программисту на С++!”

Если честно, о С++ я не хотел писать вообще. Слишком много в сети есть различных ресурсов, посвященных этому языку. Кроме того, имеются отличные учебники.

Однако, столкнувшись с тем, что мой напарник по игрописанию не владеет C++, я придумал курс, который должен максимально быстро и качественно помочь освоить программирование на С++. В данном курсе мы разучим основы С++, затем будем программировать в Windows на C++ Builder и VC++, напишем несколько игр, и когда у вас будет солидная теоретическая база, изучим программирование для Linux (сейчас это направление особенно актуально).

Думаю, план вам ясен. Теперь приступим.

Язык С++ объектно-ориентированный. То есть он оперирует некоторыми сущностями –объектами, описанными с помощью классов. В то же время он является низкоуровневым языком, позволяющим обращаться к ячейкам памяти и изменять значения в регистрах процессорах. С++ одинаково подходит как для написания операционных систем и драйверов, так и для прикладных программ типа MS Office.

Ну и для вашего развития скажу, что его написал Бьярн Страупструп, взяв за основу язык С. Фактически, С++ это расширение С. В этом его сила и его слабость. Все это мы рассмотрим в дальнейшем.

Для программирования на С++ нам понадобиться какая-нибудь IDE (интегрированная среда разработки). На сайте Microsoft можно скачать бесплатную версию MS Visual C++ Express, которой хватит на половину наших уроков. Кроме VC++ можно использовать Code Gear C++ Builder (когда-то он был борландовским), CodeBlocks (бесплатная), NetBeans c расширением C++ (бесплатная) или BloodSheed Dev C++ (бесплатная). В наших уроках я буду использовать VC++ Express, но вы вольны выбрать любую на ваш вкус.

Итак, запустим нашу IDE и создадим проект Win32. В настройках выберем ConsoleApplication. Назовем проект lesson1.

Программирование на С++ для новичков

В появившемся окне набьем такой текст:

#include «stdafx.h» #include //содержит объекты ввода-вывода #include //настройки локализации using namespace std; int _tmain(int argc, _TCHAR* argv[]) < setlocale (0,»»); //установим язык по-умолчанию (русский) char name [20] ; // статический массив для имени, хотя //дальше вместо него будем использовать тип string cout>name; //вводим имя cout

Нажмем клавишу F9. Произойдет компиляция вашей первой программы.

Поздравляю, вы написали свою первую программу.

Немного объясню текст

#include iostream> (смотреть по аналогии с другими) указывает компилятору включить в текст программы заголовочный файл с необходимымии функциями и классами. Заголовочный файл – это специальный файл C++, представляющий по сути отдельный модуль, содержащий директивы препроцессора, функции либо еще какие-либо данные. Если вам пока не понятно, пропустите это.

#include locale.h> содержит функции для работы с локализацией программы. Если вы не включите этот файл и не используете функцию setlocale с параметрами (0,””), то русские надписи будут выводиться в виде нечитабельных иероглифов.

Далее мы указываем на использование пространства std – using namespace std, в котором хранятся нужные нам объекты cout и cin.

Далее используется функция main, являющая точкой входа в вашу программу. Без нее программа просто не запустится. Подробнее мы рассмотрим позже. Объект cout с переопредленным оператором cin>> — считать инофрмацию с клавиатуры. В С для этих целей применялись функции printf () и scanf ().

Мы рассмотрим их в других уроках, но они нам мало пригодятся.

char name [20] означает символьный массив. Пока примите это к сведению. Более подробно мы рассмотрим это в уроке 3.

system (“pause”) –специальная функция, предназначенная для работы с системой. У нее есть и другие параметры, но нам пока нужен этот для торможения системы.

Читайте также:
Почему компьютер не тянет программу

Ну вот, вы написали первую программу, которую тут же разобрали. Теперь можно переходить к уроку 2.

Источник: www.programbeginner.ru

Начинаем программировать на с++ с нуля, полного и абсолютного

baton's picture

ЛИРИЧЕСКОЕ ВСТУПЛЕНИЕ.
есть на ФКНе такой предмет: ЯСиТП (язык си и теория программирования). иситовцы изучают его на третьем курсе и особых проблем с ним, как правило, не имеют. а несчастные студенты с мкн вынуждены именно с него начать изучение программирования — с первых недель пребывания в универе. все бы ничего — если студент в школе хоть немного учил информатику и хорошо знаком с паскалем — выучит синтаксис и дальше будет загоняться матаном и дискретой. а если не учил и не знаком? то есть даже совсем?
тогда ваше дело трубадряньплохо.
первое: на лекциях Хлебостроева не спать. нет труднее задачи, чем не прикорнуть под его размеренный голос на четвертой паре, но. все зависит от вас.
второе: начните читать книжку, например http://www.ph4s.ru/bookprogramir_1.html там найдете книгу Богатырева «руководство полного идиота по программированию» или что-то другое по вкусу.
третье и пожалуй самое главное: ПРАКТИКА. о чем я и поведу речь.
прежде чем пытаться что-либо писать дома, надо установить правильную студию. по опыту почти всего мкн2012 года набора вижул студио 2010 с++ экспресс — нерабочая. то что ИДЕАЛЬНО написано на компах в универе, она читает с ошибкой без возможности исправления. почему — не наше дело, мы ищем вижуал студио 2010 (2012) ултимайт (Visual Studio Ultimate 2012). например здесь:http://www.microsoft.com/visualstudio/ru. . устанавливаем пробную версию, после чего можно уже приступать к практике.

(примечание1:
файл — дополн.параметры сохранения — кирилица doc. тогда консоль будет нормально читать русские буквы.

ПРИМЕЧАНИЕ2: для того чтобы получить полноценную программу из представленного кода необходимо создать новый проэкт в вижуал студио, выбрать пункт «пустой проэкт», указать имя проэкта, в папке «файлы исходного кода» правой клавишей мыши добавить новый элемент «файл с++», скопировать в образовавшееся окно мой код и скомпилировать (клавиши контрол+ F5), после чего попробовать написать что-то подобное самостоятельно.)

ПРАКТИКА.
программирование классически начинается с написания элементарной программы «привет мир!».
на форуме есть несколько тем об этой программе на разных языках, кроме с++, поэтому вот код:

#include «stdio.h» #include «conio.h» int main(int argc, char* argv[])

полезно написать так же пару тройку простейших программ такого типа ( например эта выводит результат уравнения с известными заранее данными):

// tytytyty.cpp : Defines the entry point for the console application. // #include «stdafx.h» int _tmain(int argc, _TCHAR* argv[])

затем посложнее(эта программа считывает два вводимых значения и дает результат уравнения с введенными значениями):

#include «stdio.h» void main()

следующая программа, заданная преподом после «привет мир!», у меня выглядела так:
условие: дан квадрат и вписанный в него круг. найти половину площади квадрата, оставшуюся за пределами круга, если будет известна сторона квадрата.
решение:

#include «stdio.h» #include «math.h» #define PI 3.1415926535897932384626433832795 void main() < double x; printf(«введите значение стороны квадрата x = «); scanf(«%lf», double y = x / 2; double f = x * x; double z = PI * y * y; double s = (f — z) / 2; printf(«%lfn», s); >

как вариант с использованием библиотеки констант:

#define _USE_MATH_DEFINES #include «stdio.h» #include «math.h» void main() < double x; printf(«x = «); scanf(«%lf», double y = x / 2; double f = x * x; double z = M_PI * y * y; double s = (f — z) / 2; printf(«%lfn», s); >

программа номер пять из таск два. условие: решить квадратное уравнение с задаваемыми коэфицентами.
реализация:

#include «stdio.h» #include «math.h» #include «conio.h» int main() < float x , x1, sq, a, b, c; printf(«Vvedite znachenija a, b, c: «); scanf(«%f, %f, %f», b, if (a == 0) < x = — c / b; printf(«%f», x); >else < float k; k = b * b — 4 * a * c; if (k < 0) < printf(«Kornei net!»); >else if (k == 0) < x = — b / (2 * a); printf(«%f», x); >else < sq = sqrt(k); x = (-b + sq) / (2 * a); x1 = (-b — sq) / (2 * a); printf(«%f, %f», x, x1); >> getch(); return 0; >

(ВНИМАНИЕ!! при указании библиотек вместо знаков больше меньше везде указаны кавычки)

ПОСЛЕСЛОВИЕ: позднее будут добавляться остальные задачи.

Key Words for FKN + antitotal forum (CS VSU):

  • неофициальный форум фкн
  • ФКН ВГУ Воронеж
  • программирование Воронеж
  • ВГУ информатика
  • ВГУ компьютерных наук
  • Log in to post comments
  • 17074 reads

Источник: fkn.ktu10.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru