Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги / Разработка программного обеспечения для систем управления двигателями летательных аппаратов

..pdf
Скачиваний:
5
Добавлен:
12.11.2023
Размер:
2.54 Mб
Скачать

Это первая простейшая программа, которая выводит текст «Hello world!» («Привет, мир!»). Традиционно именно такая программа используется в качестве первой программы при знакомстве с языком программирования. В случае Code::Blocks эта программа автоматически создается при создании нового проекта.

Размер шрифта в окне редактирования можно очень просто изменить. Дляэтоговращайтеколесонамыши, удерживаянажатойклавишуCtrl.

Еще можно использовать меню «Settings=>Editor» и, нажав в верхней правой части кнопку «Choose», поменять не только размер шрифта, но и сам шрифт. Только учтите, что для написания программ лучше использовать шрифты, у которых все буквы имеют одинаковую ширину. К таким шрифтам, к примеру, относятся шрифты: Courier New, Courier,

Liberation Mono, Lucida Console, Monospace и др.

Если окажется, что на экране отсутствует окно «Management» или какое-нибудь другое нужное окно, то тогда надо выбрать меню View и в появившемся менювыбрать пункт, соответствующий нужному окну.

Если вдруг проект оказался закрытым, например, при выходе и повторном заходе в Code::Blocks, то его можно заново открыть. Для этого надо выбрать меню «File=>Recent projects», где затем в появившемся списке следует выбрать нужный проект. Либо можно использовать меню

«File=>Open», послечего выбрать файл Project01.cbp.

3.2.5.2. Сборка и запуск программы

Эта программа будет детально рассмотрена чуть позже, а сейчас попробуем ее запустить.

Для этого должна быть выполнена компиляция текста программы (Compiling), и с помощью компоновки (Linking) должен быть создан исполняемый файл с расширением.exe, который и будет запускаться. Весь этот процесс компиляции и компоновки называется сборкой (Building).

Надо отметить, что процесс, обозначаемый здесь словом Compiling, также часто называют процессом трансляции. Есть разные варианты терминологии в этой области. Например, указанный выше процесс сборки может называться компиляцией, которая, в свою очередь, состоит из этапов трансляции и компоновки. Но мы сейчас не будет углубляться в вопросы терминологии и просто в качестве основы будем использовать англоязычный вариант терминов, естественно, с переводом на русский язык. Таким образом, мы будет говорить о сборке (Building), состоящей из этапов компиляции (Compiling) и компоновки (Linking). Этот вариант

111

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

Интегрированная среда разработки Code::Blocks позволяет автоматизировать сборку и запуск (Run) программы. Для сборки и запуска программы достаточно выполнить команду «Собрать и запустить»

(Build and run), нажав кнопку или клавишу F9. Еще один вариант – это выбрать меню «Build=>Build and run».

В нижнем окне (сообщений о процессе сборки) будут появляться надписи «Compiling», «Linking» и т.д., что отражает ход компилирования и компоновки программы (рис. 40).

Рис. 40. Пример сообщений о процессе сборки

В результате должно появиться консольное окно, где в верхней части будет выведено предложение, указанное в программе в кавычках, а именно предложение «Hello world!» (рис. 41).

Рис. 41. Консольное окно с текстом, формируемым при запуске программы

112

Таким образом, программа выводит на экран заданную строку. Под этой строкой будет две строки. Первая из них выдает код воз-

врата программы и время, затраченное на выполнение программа. Вторая выдает сообщение о том, что для продолжения надо нажать любую клавишу. Эти две строки вырабатываются автоматически, если программа запускается из Code::Blocks.

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

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

Появится окно настроек (рис. 42).

Рис. 42. Настройка шрифта для консольного окна

В этом окне надо выбрать нужный шрифт (например, Lucida Console). Затем для этого шрифта надо выбрать желаемый размер (например, 14). После этого надо нажать «OK», чтобы сохранить настройки.

Затем надо закрыть консольное окно, нажав любую клавишу.

113

После этого надо заново запустить программу, нажав кнопку или клавишуF9 (или выбрав меню«Build=>Build and run»).

Теперь консольное окно должно иметь новый шрифт.

3.2.5.3. Пояснение программы

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

#include <stdio.h> #include <stdlib.h> int main ()

{

printf ("Hello world! \n"); return 0;

}

В 3-й строке программы приведено слово main, с которого начинается выполнение любой программы. Это означает основную функцию, с выполнения которой все начинается. Внутри этой функции могут быть вызовы других функций, но все начинается с выполнения содержимого main. После имени этой функции идут круглые скобки, между которыми ничего нет. Это означает, что у данной функции нет никаких аргументов. Каждая функция обязана иметь круглые скобки, даже если она не имеет аргументов.

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

Перед именем main используется слово int, которое задает тип значения, возвращаемого функцией. В данном случае это целочисленный тип (в дальнейшем разные типы данных будут рассмотрены отдельно). Функция main (то есть, по сути, основная программа) возвращает код выхода из программы. Обычно считается, что при нормальном выполнении программа должна возвращать значение 0. Возврат этого значения делается с помощью return 0 перед закрывающей фигурной скобкой.

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

114

аргументы. Здесь единственным аргументом является строка, заключенная в двойные кавычки. Именно эта строка и выводится на экран функцией printf. Но при этом на экран не выводится сочетание символов \n. Это сочетание обозначает символ перехода на новую строку, который не печатается на экране, но означает, что в данном месте должен быть выполнен переход на новую строку.

Чтобы понять смысл символа перехода на новую строку, попробуйте убрать из строки сочетание \n, запустить программу и посмотреть результат. Также попробуйте поставить сочетание \n несколько раз подряд, запустить программу и посмотреть результат. Потом верните исходный вариант программы.

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

Остается понять, для чего нужны первая и вторая строка в этой программе. Не вдаваясь в подробности, можно сказать, что первая строка нужна для того, чтобы стало возможным использовать функцию printf, так как эта строка дает возможность получить информацию об этой функции. Эта строка подключает файл stdio.h, имя которого указано в скобках в виде знаков < и >. Команда #include обозначает подключение этого файла. Такое подключение позволяет использовать функции, объявленные этом файле, в частности, функцию printf. Строка #include <stdlib.h> в этой программе вообще-то не нужна, но ее принцип действия аналогичен, только здесь подключается другой файл (stdlib.h).

3.2.5.4. Изменение программы

Теперь можно обратиться к редактированию файла main.c.

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

Содержимое файла main.c было создано автоматически. Но подобную программу можно записать чуть более кратко, а также немного изменить выводимыйтекст, добавив восклицательных знаков.

115

#include <stdio.h> int main ()

{

printf ("Hello world!!! \n"); return 0;

}

Теперь эту программу надо перенести в окно редактирования с помощью обычного копирования. Для этого надо выделить текст программы и скопировать в буфер обмена выделенный текст, например, нажав правую кнопку мыши и выбрав в меню «Копировать». Затем надо переключиться в окно редактирования Code::Blocks, выделить имеющийся там текст и вставить текст из буфера обмена, например, выбрав меню «Edit=>Paste» или выбрав, после нажатия правой кнопки мыши, меню «Edit=>Paste». В окне редактирования должен появиться данный вариант программы.

Сохраните новый вариант программы. Для этого достаточно нажать Ctrl-S (или выбрать меню «File=>Save file»). Приучите себя сохранять файл после каждого, пусть даже небольшого изменения текста программы. Иначе при «зависании» может быть потерян некоторый объем работы.

Попробуйте запустить этот новый вариант программ.

Контрольные задания

1. Поменяйте текст «Hello world!!!» на какой-нибудь другой, например, используя кириллицу. Если в вашей системе нет соответствующих настроек, то кириллица может отображаться некорректно. В этом случае используйте латинские буквы. Запустите программу, чтобы проверить изменения.

2.Поменяйте значение 0 после return на какое-нибудь другое числовое значение, например на 5. Запустите программу и проверьте, что после «Process returned» в консольном окне выводится новоечисловое значение.

3.Сделайте так, чтобы при запуске программы перед выводом строки «Hello world!!!» происходило смещение на одну строку вниз на экране. Для этого поставьте сочетание \n в самом начале строки, используемой

вкачестве аргумента для функции printf. Запустите программу несколько раз, чтобы убедиться в правильности выполнения задания.

4.Сделайте так, чтобы при запуске программы перед выводом строки «Hello World!» происходило смещение на несколько строк вниз на экране. Для этого поставьте сочетание \n несколько раз подряд в самом на-

116

чале строки, используемой в качестве аргумента функции printf (подразумевается строка, расположенная внутри скобок в кавычках). Запустите программу, чтобы убедиться в правильности выполнения задания.

5. Выведите строку «Hello world!!!» трижды в трех последовательных строках на экране (по одному экземпляру в строке), расставив

внужных местах сочетание \n.

6.Сделайте так, чтобы при запуске программы строка «Hello world!!!» выводилась точно по центру экрана. Для этого надо сместить строку вниз и вправо, используя \n и пробелы.

7.Выведите одновременно три разных слова в трех местах на экране: в верхних углах и в центре экрана. Используйте подряд два вызова printf с разными строками в виде аргументов, используя в каждом случае особым образом \n и пробелы.

3.2.6. Сообщения опредупреждениях иошибкахвпрограмме

При сборке программы (при попытке ее запуска после изменений) может происходить вывод предупреждений и ошибок. Как это происходит, рассмотрим на примере. Попробуйте запустить следующую программу:

#include <stdio.h> int main ()

{

printf ("Hello world!!! \n");

}

Эта программа не содержит return, но она будет запущена. Попробуйте ее запустить.

Однако в процессе компиляции будет выдано предупреждение, связанное с тем, что нет оператора return. При запуске программы это предупреждение исчезает, так как оно не влияет на запуск программы. Но его можно прочитать, если выполнить только построение файла (без запуска приложения). Для этого надо сформировать команду «Собрать» (Build),

нажав Ctrl-F9 или нажав кнопку , иливыбрав меню«Build=>Build». Но если с предыдущей сборки или запуска программа не менялась,

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

до делать для этой команды («Target is up to date. Nothing to be done.») (рис. 43).

117

Рис. 43. Сообщение о том, что сборка уже является самой свежей

В таком случае надо собрать заново. Для этого надо сформировать

команду «Собрать заново» (Rebuild), нажав Ctrl-F11 или нажав кнопку , или выбрав меню «Build=>Rebuild». После формирования этой команды появляется окно для ее подтверждения. Чтобы подтвердить эту команду, надо нажать «Yes» в указанном окне.

Тогда в нижнем окне (рис. 44) можно увидеть строку с предупреждением (синего цвета), а также сообщение о наличии одного преду-

преждения (1 warnings).

Рис. 44. Пример вывода предупреждения

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

В дальнейшем оператор return для функции main можно не использовать для краткости, как это сделано в программе, представленной в начале п. 3.26. Но надоучитывать, чтоиз-за этогопоявляется предупреждение.

Теперь попробуйте запустить следующую программу:

#include <stdio.h> int main ()

{

printf (Hello world!!! \n);

}

118

Заметьте, что программа не будет запущена. Вместо этого в нижнем окне появятся строки, выделенные красным шрифтом, которые сообщают обошибках(рис. 45).

Рис. 45. Пример вывода сообщений об ошибках

Строка в программе, где имеется ошибка, подсвечивается красным квадратом (рис. 46).

Рис. 46. Пример индикации ошибки в тексте программы

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

Анализируя сообщения об ошибках и текст программы, нетрудно понять, что ошибка возникает из-за того, что в строке «printf (Hello world!!!\n);» не указаны кавычки. Соответственно, выводится ошибка

«'Hello' undeclared». Слово «undeclared» означает «не объявлено», то есть компилятор пытается понять, что обозначает слово «Hello» и что при этом надо делать. Он не может найти это слово среди известных слов, поэтому выдает ошибку. Если же это слово находится в двойных кавычках, то тогда оно воспринимается как некоторая строка, внутри которой может быть что угодно. Строку можно выводить на экран. Поэтому после исправления программы (добавления кавычек, где надо) все должно быть нормально.

Исправьте программу и проверьте правильность ее выполнения.

119

Контрольные задания

1.Попробуйте убрать последнюю фигурную скобку и запустить программу. Заметьте, что ошибка отмечается в строке, содержащей printf, то есть в предыдущей строке. Восстановите правильную программу.

2.Попробуйте убрать две круглые скобки после слова «main». Заметьте, что ошибка отмечается в строке, содержащей фигурную скобку, то есть в следующей строке. Восстановите правильную программу.

3.Попробуйте убрать первую круглую скобку после main. Заметьте, что ошибка отмечается в строке, содержащей main, то есть в этой же строке. Восстановите правильную программу.

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

При выходе из Code::Blocks могут появляться окна с кнопками «Да», «Нет» (или «Yes», «No»). Там, как правило, спрашивается о необходимости сохранения измененного файла (или проекта) либо измененных настроек среды разработки. Нажимайте «Да» («Yes»), если желаете эти изменения сохранить.

Таким образом, мы выполнили базовое знакомство с интегрированной средой разработки Code::Blocks.

3.3. СРЕДСТВА ОТЛАДКИ

Сейчас разберем, как происходит отладка программы. В частности, рассмотрим пошаговое выполнение. Этот процесс помогает:

1)найти ошибки при выполнении программы (особенно, когда сообщения об ошибках не выводятся, а программа дает неправильный результат);

2)понять процесс выполнения программы.

В качестве примера программы возьмите следующую программу:

#include <stdio.h> main ()

{

int x=0; double y=10.0; /* x=0 y=10.0 */ printf ("x= % d y= %.1f \n",x,y); x=y*2; /* x=20 y=10.0 */

120

Соседние файлы в папке книги