Схема программы со структурами си. Структура простой программы
Рис.1 Структура программы на языке Си.
Внутренняя структура программы
Исполняемая программа на Си состоит из 4 частей: область команд, область статических данных, область динамических данных, область стека. см. Рис.2.
1. Область команд содержит машинные команды; инструкции, которые должен выполнить микропроцессор.
2. Область статических данных для хранения переменных, с которыми работает программа;
3. Область динамических данных для размещения дополнительных данных, которые появляются в процессе работы программы (например, временных переменных).
4. Стек используется для временного хранения данных и адресов возврата из функций.
тело функции /*тело функции*/
printf("Hello World!");
1-я строка – директива, подключающая заголовочный файл стандартного ввода-вывода. Операторов в Си мало, но есть библиотека функций. Чтобы их использовать надо их подключить, что и делает директива – 1-я строка программы. Символ # указывает, что строка должна быть обработана препроцессором языка Си.
2-я строка – имя главной функции main () , эта функция не возвращает никаких параметров (об этом буду говорить немного позже). Программа Си всегда имеет функцию main(). С нее начинается выполнение программы.
3-я строка – начало тела функции. {} определяют тело функции (в Паскале - это begin и end)
4-я строка – комментарий, он не компилируется, а только поясняет что делается.
5-я строка – библиотечная функция – печатать на экране, выражение в скобках на этой строке – параметр функции, он всегда берётся в кавычки.
; - это признак оператора Си, это часть оператора, а не разделитель операторов, как в Паскале.
Советы, как сделать программу читаемой:
1) Выбирать осмысленные имена
2) Использовать комментарии
3) Использовать пустые строки для того, чтобы отделить одну часть функции от другой
4) Помещать каждый оператор в другой строке.
БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА СИ
Рассмотрим обязательные элементы, с помощью которых должна оформляться программа на Си:
1. Комментарии – используются для документирования программы. Любая программа должна содержать комментарии: какой алгоритм применяется, что делает программа…
Ø 1 способ : /* Текст */ - в любом месте программы.
Как только компилятор встречает /**/, он их пропускает. Компилятор игнорирует /* */, так как он не в состоянии интерпретировать язык, отличающийся от языка Си. То есть, если вы хотите исключить из компиляции какую-то строку, то заключите её в /**/.
Ø 2 способ : если комментарий большой, то используем такой тип
/* Строка 1 - для комментария любой длины
строка 3*/
Ø 3 способ : // - текст до конца строки.
2. Идентификатор - это имя, которое присваивается какому-либо объекту (переменной). Используются строчные и прописные буквы, цифры и знак подчёркивания. Строчные и прописные буквы различаются. (В Бейсике не различаются). Если назвать переменную name, Name или NAME, то это будут разные переменные.
Начинаются идентификаторы с буквы или знака подчеркивания. Например, _name. Но не рекомендуется начинать с _, так как этот знак используется для глобальных имен сомого языка Си.
В современном программировании часто используется для создания идентификаторов Венгерская нотация, где используются определенные символы, характеризующие идентификатор, например:
b – байт; ch – однобайтовый символ;
w – слово; f – флаг;
l – длинное слово; fn – функция;
u – беззнаковое; p – указатель;
с – счетчик; d – разность двух пре-х
cz – строка; и т.д.
3. Служебные слова – это слова, с которыми в языке жестко сопоставлены определённые смысловые значения и которые не могут быть использованы для других целей. Это имена операторов, библиотечных функций, команды препроцессора и так далее. Этим слова нельзя использовать для создания имен своих функций, переменных…
ДАННЫЕ В ПРОГРАММЕ НА СИ
Каждая программа оперирует с данными . Они присутствуют в программе в виде переменных и констант.
Данные, которые могут изменяться или которым может присваиваться значения во время выполнения программы, называются переменными .
Данные, которым устанавливаются определенные значения и они сохраняют свои значения на всем протяжении работы программы, называются константами.
Константы
Константы - это фиксированные значения. Значение, будучи установлено, больше не меняется. Константы бывают различных типов. Типы отличаются по принципу размещения в памяти ЭВМ, а для человека по виду записи. В Си существует 7 ключевых слов, используемых для указания на различные типы данных: int, long, short, unsigned, char, float, double.
Типы констант :
a) Целые и длинные целые . Записываются в десятичной, восьмеричной и шестнадцатеричной системе счисления. Они могут быть знаковые и беззнаковые.
Десятичная система: целые константы занимают 16 бит памяти, и принимают диапазон значений: -32768 до +32767 (2 15) . Если константа беззнаковая, то диапазон удваивается: 0 до 65535 (за счет того, что 15-й разряд – знаковый используется под число). Для обозначения беззнакового числа используют суффикс u (unsigned), например 123u.
Если число больше 40000, то компилятор автоматически преобразует его в отрицательное число, поэтому суффикс u обязателен:40000u. В примере 123u компилятору все равно – есть суффикс или его нет, так как это число входит в диапазон 32767.
Длинное целое занимает 32 бита , диапазон значений
± 2147483648 (знаковое длинное – long). Если вы поставили суффикс l , то, несмотря на число, будет занято 32 бита. Например: -5326l
0 – 4294967295 беззнаковое длинное - (unsigned long). Диапазон увеличивается за счет 31-го бита. Используются суффиксы ul , например, 32659ul.
Восьмеричная система :
Если число начинается с цифры 0, оно интерпретируется как восьмиричное число
16 битов 0 ¸ 077777
0100000 ¸ 0177777u
32 бита 0200000 ¸ 01777777777l
020000000000 ¸ 037777777777ul
Шестнадцатеричная система :
Если число начинается с символа 0х, то оно интерпретируется как шестнадцатиричное
16 битов 0x0000 ¸ 0x7FFF
0x8000 ¸ 0xEFFFu
32 бита 0x10000 ¸ 0x7FFFFFFFl
0x80000000 ¸ 0xFFFFFFFFul
b) Вещественные константы . Это числа с плавающей точкой. Значение имеет дробную часть. По умолчанию все вещественные константы имеют тип двойной точности double . Занимают в памяти 8 байт (даже если 0,0). Диапазон значений ±1*10 ± 307 , можно записать и в научной форме, например: 0,5е+15 или
1,2е-3=1,2*10 -8 =0,0012.
Принудительно можно задать формат одинарной точности float . Число будет занимать 4 байта , используется суффикс f (5.7 f). Соответсвенно диапазон сужается ±1*10 ± 37
А также расширенной точности – long double – 10 байт . (3.14L)
Знак + можно не писать. Разрешается опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно (.2; 4е16). Можно не писать дробную либо целую часть, но не одновременно (100.; .8е-5)
c) Символьные константы. Это набор символов, используемых в ЭВМ.
Делятся на 2 группы: печатные и не печатные (управляющие коды). Символьная константа включает в себя только 1 символ, который необходимо заключить в апострофы и занимает 1 байт памяти.
Любой символ имеет своё двойное представление в таблице ASCII. В программе символьные константы вводятся в одинарных кавычках, при компиляции в программу подставляется числовое значение символа из ASCII. Один символ занимает 1 байт.
Символ "А" "a" " " "\n"
Его код 65 97 32 10
Как целый тип данных "A"=0101 8 , 01000001 2 , 41 16 , 65 10 . Коды запоминать не надо.
Управляющие коды начинаются с символа \ и тоже заключаются в апострофы. Наиболее распространенные управляющие коды:
\n – переход на новую строку
\t – табуляция (сдвиг курсора на некоторое фиксированное значение)
\b – шаг назад (сдвиг на одну позицию назад)
\r – возврат каретки (возврат к началу строки)
\f – подача бланка (протяжка бумаги на 1 страницу)
\’ - апостроф
\” - кавычки
Последние три знака могут выступать символьными константами, а также применяться в функции printf() , поэтому применение их в качестве символов может привести к ошибке. Например, если мы хотим вывести строку «Символ \ называется слеш», то оператор должен выглядеть так:
рrintf(«Символ \\ называется слеш»);
a) Строковые константы - содержат последовательность из 1 и более символов, заключённых в " ". Расходуется по 1 байту на любой символ + 1байт на так называемый ноль-символ - признак конца строки. Ноль-символ – не цифра ноль, он означает, что количество символов в строке (N) должно быть на 1 байт больше (N+1), чтобы обозначать конец строки (компилятор его прибавляет сам автоматически). Например: «строка текста» занимает (13+1) байт;
«Мир» -
Последнее обновление: 18.05.2017
Программа на языке Си состоит из набора директив препроцессора, определений функций и глобальных объектов. Директивы препроцессора управляют преобразованием текста до его компиляции. Глобальные объекты определяют используемые данные или состояние программы. А функции определяют поведение или действия программы. Простейшая программа на Си, которая была определена в прошлых темах:
#include
Инструкции
Простейшим строительным элементом программы на Си являются инструкции (statements). Каждая инструкция выполняет определенное действие. В конце инструкций в языке Си ставится точка с запятой (;). Данный знак указывает компилятору на завершение инструкции. Например:
Printf("Hello world!");
Вызов функции printf, которая выводит на консоль строку "Hello world!" является инструкцией и завершается точкой с запятой.
Набор инструкций может представлять блок кода. Блок кода оформляется фигурными скобками, инструкции, составляющие тело этого блока, помещаются между открывающей и закрывающей фигурными скобками:
{ printf("Hello world!"); printf("Bye world!"); }
В этом блоке кода две инструкции. Обе инструкции представляют вызов функции printf() и выводят определенную строку на консоль.
Директивы препроцессора
Для вывода данных на консоль в примере выше используется функция printf() , но чтобы использовать эту функцию, чтобы она вообще стала нам доступна в программе на Си, необходимо в начале файла с исходным кодом подключать заголовочный файл stdio.h с помощью директивы include .
Директива include является директивой препроцессора. Кроме данной include есть еще ряд директив препроцессора, например, define.
Каждая директива препроцессора размещается на одной строке. И в отличие от обычных инструкций языка Си, которые завершаются точкой с запятой ; , признаком завершения препроцессорной директивы является перевод на новую строку. Кроме того, директива должна начинаться со знака решетки #.
Непосредственно директива "include" определяет, какие файлы надо включить в данном месте в текст программы. По умолчанию мы можем подключать стандартные файлы из каталога так называемых "заголовочных файлов", которые обычно поставляются вместе со стандартными библиотеками компилятора. И файл "stdio.h" как раз является одним из таких заголовочных файлов.
Вообще сам термин "заголовочный файл" (header file) предполагает включение текста файла именно в начало или заголовок программы. Поэтому заголовочные файлы подключаются, как правило, в начале исходного кода. Кроме того, заголовочный файл должен быть подключен до вызова тех функций, которые он определяет. То есть, к примеру, файл stdio.h хранит определение функции printf, поэтому этот файл необходимо подключить до вызова функции printf.
Но в целом директивы препроцессора необязательно должны быть размещены в начале файла.
При компиляции исходного кода вначале срабатывает препроцессор, который сканирует исходный код на наличие строк, которые начинаются с символа #.
Эти строки расцениваются препроцессором как директивы. И на месте этих директив происходит преобразование текста. Например, на месте
директивы #include
Функция main
Стартовой точкой в любую программу на языке Си является функция main() . Именно с этой функции начинается выполнение приложения. Ее имя main фиксировано и для всех программ на Си всегда одинаково.
Функция также является блоком кода, поэтому ее тело обрамляется фигурными скобками, между которыми идет набор инструкций.
Стоит отметить, что в разной литературе и примерах можно встретить модификации этой функции. В частности, вместо определения выше мы могли бы написать по другому:
#include
#include
Использование этих определений не было бы ошибкой, и программа также вывела бы строку "Hello world" на консоль. И для большинства компиляторов это было бы нормально.
Далее мы подробнее рассмотрим определение функций, но здесь надо учитывать следующий аспект. Определение функции в виде int main(void) зафиксировано в стандарте языка С11. Компиляторы прежде всего ориентируются на стандарт языка, его спецификацию. Поэтому если мы используем то определение, которое дано в стандарте языка, то больше шанс, что оно будет поддерживаться всеми компиляторами. Хотя опять же повторюсь, в использовании второго варианта или int main() большой ошибки не будет.
Полностью последний стандарт C11 можно посмотреть по
Программа, написанная на C# состоит из следующих блоков:
- объявление пространства имен (своего рода контейнера);
- объявление класса (основная сущность программы);
- методы класса (подпрограммы), как минимум метод Main ;
- операторы и выражения;
- комментарии.
Пример простейшей программы
Давайте рассмотрим простейшую программу, написанную на C#. Это будет консольное приложение, выводящее строку «Hello World» (своего рода классика, для первой программы в практике программиста). Код такой программы приведен ниже, давайте рассмотрим его:
//Подключение пространства имен System using System; //Объявление пространства имен namespace ProgramStructure { //Объявление класса class Program { //Главный метод программы static void Main(string args) { //Вывод строки Console.WriteLine("Hello World!"); //Вспомогательный оператор Console.ReadKey(); } } }
Первая строка данной программы, это комментарий. Комментарии никак не влияют на работу программы, они нужны для человека, который будет сопровождать код программы (дорабатывать её, исправлять ошибки и т.п.).
Вторая строка программы (using System; ) является оператором, который подключает стандартное пространство имен System . По сути, мы получаем доступ к набору классов имеющихся в «контейнере» System . Как видно, данная строка состоит из двух слов, первое (ключевое слово using ) означает, что мы хотим подключить пространство имен, а второе System — название нужного пространства имен.
В конце второй строки стоит символ «;», который обозначает завершение оператора. Каждый оператор программы должен заканчиваться таким символом.
Четвертая строка программы снова является комментарием, ровно как и строки 7, 10, 13, 15. Комментарии в C# начинаются с символов «//» (две косые черты, два слэша), и действуют только до конца строки.
В C# есть и многострочные комментарии, иногда удобнее использовать их, мы еще столкнемся с ними.
В пятой строке (namespace ProgramStructure ) объявляется своё пространство имен, оно называется «ProgramStructure». Пространство имен является своего рода контейнером, и оно ограничивается фигурными скобками (открывающей — строка 6 и закрывающей — строка 19), следующими за его названием. Таким образом, все что находится между строками 6 и 19 принадлежит пространству имен ProgramStructure .
В строке 8 объявляется класс с именем «Program», это основной и единственный класс нашей программы. Как можно заметить, для объявления класса служит ключевое слово class за которым следует имя класса. В программе, может быть и не один, а несколько классов. Как правило, класс состоит из набора методов, которые определяют так называемое поведение класса (если хотите, функциональность). Границы класса, так же как и пространства имен обозначаются фигурными скобками (строки 9 и 18). В нашем случае, класс имеет только один метод, это метод Main .
В строке 11 как раз и объявляется метод Main . Этот метод является главным в нашей программе, так называемая точка входа в программу. Это означает, что при запуске программы, первым будет выполняться именно метод Main . Каждый метод тоже имеет границы, которые так же обозначаются фигурными скобками (строки 12 и 17).
Метод Main нашей программы содержит только два оператора. Эти операторы значатся в строках 14 и 16. Первый выводит сообщение «Hello World!». А второй, является вспомогательным, он заставляет программу ждать нажатие клавиши на клавиатуре, и не дает её до этого момента завершить свое выполнение (без этого оператора, программа бы вывела строку и быстро закрылась, так что мы даже не успели прочитать что она вывела).
А теперь попробуйте собрать и запустить это программу в Visual Studio. Для этого нужно:
- запустить Visual Studio;
- создать новый проект консольного приложения;
- скопировать строки 13-16 из приведенного выше примера;
- вставить эти строки в метод Main созданного в Visual Studio проекта;
- нажать клавишу F5.
О том как создавать проект консольного приложения в Visual Studion я подробно рассказывал в , советую прочитать его.
Лекция № 1
Тема: Знакомство с языком C++. Операторы и типы данных
План
3. Переменные и их типы
4. Операторы и математические функции
5. Операторы ввода/вывода на языке С++
6. Пример программы на С++
1. История развития языка программирования С++
Языка C++, объединяющий в себе свойства языка С и объектно–ориентированного программирования, стал один из главных языков программирования в 90–е годы и твердо продолжает оставаться таким в начале XXI века. Язык C++ получил в наследство от языка С такие качества, как эффективность, компактность, быстрота выполнения и переносимость программ. От объектно–ориентированного программирования язык C++ получил новую методологию программирования, позволяющую справиться с возросшей сложностью современных задач программирования. А такие элементы языка, как улучшенные шаблоны, привносят в язык C++ еще одну новую методологию программирования: обобщенное программирование. Это тройное наследство является для языка C++ одновременно и благословением, и проклятием. Оно делают язык очень мощным, но в то же время и сложным; а это означает, что программистам приходится больше изучать.
В последние несколько десятилетий компьютерная технология развивалась поразительными темпами. Языки программирования также претерпели значительную эволюцию. В 70–е годы такие языки программирования, как С и Pascal, помогли войти в эру структурного программирования, принесшего порядок в ту область, которая сильно нуждалась в этом. Язык С предоставил в распоряжение программиста инструменты, необходимые для структурного программирования, а также обеспечил создание компактных, быстро работающих программ и возможность адресации аппаратных средств, например, возможность управления портами связи и накопителями на магнитных дисках. Эти качества помогли языку С стать господствующим языком программирования в 80–е годы. Вместе с тем в эти годы появилась новая модель программирования:объектно–ориентированное программирование, или ООП, воплощенное в таких языках, как SmallTalk и C++.
Язык С
Сотрудник компании Bell Laboratories Кена Томпсона в 1969 году разработал язик B (би) для создания других программных систем. Однако этот язык был интерпретируемым, что не позволяло создавать на нем независимые исполняемые файлы. Тем не менее этот язык явился предшественником языка С.
В начале 70–х годов Денис Ритчи из компании Bell Laboratories занимался разработкой операционной системы UNIX. Для выполнения этой работы Ритчи нуждался в таком языке программирования, который был бы кратким, а также мог бы обеспечивать эффективное управление аппаратными средствами и создание компактных, быстро работающих программ. Традиционно такие потребности программистов удовлетворял язык ассемблера, который тесно связан с внутренним машинным языком компьютера. Однако язык ассемблера – это язык низкого уровня, т.е. он привязан к определенному типу процессора (или компьютера). Поэтому если программу на языке ассемблера необходимо перенести на компьютер другого типа, то ее приходится переписывать заново на другом языке ассемблера.
Операционная система UNIX предназначалась дли работы на разнообразных типах компьютеров (или платформах). А это предполагало использование языка высокого уровня. Язык высокого уровни ориентирован на решение задач, а не на конкретное аппаратное обеспечение. Специальные программы, которые называются компиляторами, транслируют программу на языке высокого уровня в программу на внутреннем языке конкретного компьютера. Таким образом, используя отдельный компилятор для каждой платформы, одну и ту же программу на языке высокого уровня можно выполнять на разных платформах. Ритчи нуждался в языке, который бы объединял эффективность и возможность доступа к аппаратным средствам, имеющиеся у языка низкого уровня, с более общим характером и переносимостью, присущими языку высокого уровня. Поэтому на основе имеющегося языка программирования В Ритчи разработал язык С. Принято считать, что авторами языка являются Ритчи и Томпсон.
Язык С, как и большинство основных языков программирования нашего времени, является процедурным.
Язык С++
С развитием объектно–ориентированной технологии возможностей стандартного языка С уже было недостаточно. В результате появился язык С++.
Язык C++, так же как и язык С, является детищем компании Bell Laboratories. Автор Бьярни Страуструп разработал этот язык в начале 80–х годов. По его собственным словам, «язык C++ был спроектирован главным образом так, чтобы мне и моим друзьям не приходилось программировать на ассемблере, С или различных современных языках высокого уровня. Его главная цель состояла в следующем: сделать так, чтобы отдельным программистам было легче и приятнее писать хорошие программы» .
Страуструп создал C++ на основе языка С, так как язык С был кратким, хорошо подходил для системного программировании, был широко доступен и тесно связан с операционной системой UNIX. Объектно–ориентированная часть языка C++ возникла под влиянием языка моделирования Simula67. Страуструп добавил элементы ООП в язык С, не изменяя при этом существенно сам язык С.
Название C++ происходит от обозначения оператора инкремента ++ в языке С, который добавляет единицу к значению переменной. Название C++ подразумевает, что этот язык является усовершенствованной (++) версией языка С.
Обобщенное программирование
Обобщенное программирование – это еще одна парадигма программирования, поддерживаемая языком C++. Оно имеет общую с ООП цель – упростить повторное использование кодов программ. Однако, в то время как в ООП основное внимание уделяется данным, в обобщенном программировании упор делается на алгоритмы. И у него другая область применения. ООП – это инструмент дли разработки больших проектов, тогда как обобщенное программирование предоставляет инструменты для выполнения задач общего характера, таких как сортировка данных. Термин обобщенный означает создание кода программы, независимого от типа данных. В языке C++ имеются данные различных типов – целые числа, числа с дробной частью, символы, строки символов, определяемые пользователем сложные структуры, состоящие из данных нескольких типов. Если, например, требуется сортировать данные различных типов, то обычно для каждого типа создается отдельная функция сортировки. Обобщенное программирование расширяет язык таким образом, что позволяет один раз написать функцию для обобщенного (т.е. неопределенного) типа данных и затем использовать ее для разнообразных реальных типов данных. Это обеспечивается с помощью шаблонов языка C++. (начало)
2. Структура программы на С++
Программа C++ строится из отдельных блоков, называемых функциями. Как правило, программа разделяется на ряд крупных задач, а затем для выполнения этих задач разрабатываются отдельные функции.
Большинство программ на С++ имеют следующий вид:
раздел подключения заголовочных файлов
заголовок программы (функции)
тело функции
Заголовок программы
Программа C++ состоит из одного или более модулей, называемых функциями. Выполнение программы начинается с функции, имеющей имя main(), поэтому в программе обязательно должна присутствовать функция с таким именем. Если в программе нет такой функции, то в нет и законченной программы; компилятор в этом случае указывает, что функция main() не была определена.
Описание такой функции выполняют в разделе заголовка программы и записывают в виде:
Важно учитывать тот факт, что компилятор С++ различает регистр символов. Поэтому, имя функции, набранное в другом регистре (например: Main() или MAIN()), будет распознаваться как неправильное.
Раздел подключения заголовочных файлов
При создании исполняемого кода программ C++, так же как и в случае с программами С, используется препроцессор. Это программа, которая обрабатывает исходный файл перед основной компиляцией. Чтобы вызвать этот препроцессор, не надо делать ничего особенного. Он запускается автоматически при компиляции программы.
Каждая программа на С++ вначале имеет директиву вида:
#include
Эта директива приводит к тому, что препроцессор добавляет в программу содержимое файла iostream. Это типичное для препроцессора действие: добавление или изменение текста в исходном коде перед компиляцией.
Директива
#include приводит к тому, что содержимое
файла iostream передается в компилятор
вместе с содержимым исходного файла. В
сущности, содержимое файлаiostream заменяет
в программе строку #include
Такие файлы, как iostream, называются файлами включения (поскольку они включаются в другие файлы) или заголовочными файлами (поскольку они включаются в начале файла). Компиляторы C++ поставляются со многими заголовочными файлами, каждый из которых поддерживает отдельное семейство программных средств. Заголовочные файлы в языке С по традиции имеют расширение h, это самый простой способ идентификации типа файла по его имени. Например, заголовочный файл math.hподдерживает различные математические функции языка С++.
Заголовочные файлы находятся в папке Include среды разработки Turbo C++. Если при запуске программы выдается ошибка, указывающая на отсутствие подключаемого заголовочного файла, то в среде Turbo C++ необходимо выполнить настройку. Для этого выполните команду Options – Directories, в поле Include Directoriesвведите..\INCLUDE, а в поле Library Directories введите..\LIB.
Тело функции
Тело функции содержит инструкции для компьютера, т.е. определяет то, что собственно делает функция.
Тело функции имеет следующий вид:
описание переменных;
операторы;
Как видно тело функции заключается в фигурные скобки. Описание переменных будет рассмотрено в следующем разделе лекции.
Оператор представляет собой инструкцию для компьютера. Чтобы понять исходный код, компилятор должен знать, когда заканчивается один оператор и начинается другой. В некоторых языках программирования используются разделители операторов. В языке Pascal один оператор от следующего отделяется точкой с запятой. В некоторых случаях точку с запятой в языке Pascal можно опускать, например, после оператора перед словом END, когда фактически не происходит разделение двух операторов. Но в языке C++, так же как и в языке С, применяется скорее признак (указатель) конца, чем разделитель. Признак конца – это точка с запятой, которая отмечает конец оператора; она является скорее частью оператора, чем разделителем между операторами. Практический результат заключается в том, что в языке C++ никогда нельзя опускать точку с запятой.
Инструкция RETURN 0 указывает на завершение работы функции и возврат в вызывающую программу. В главной функции main() эту инструкцию можно не указывать.
В тексте программ допускается использовать комментарии. В языке C++ комментарии обозначаются двойной наклонной чертой (//). В программах C+ + можно использовать комментарии из языка С, которые заключены между символами /* и */.
Поскольку комментарий из языка С заканчивается не символом конца строки, а символом */, его можно продолжать на несколько строк. В программах можно использовать любой из этих двух видов комментариев или оба вместе. (начало)
Структура программы на языке С.
Использование языка программирования С в решении экономических задач
Программы и данные
Достоинства языка С
1) С – современный язык, его структура побуждает программиста использовать в своей работе методы: нисходящего проектирования, структурного программирования, модульную структуру программ.
2) С – эффективный язык. Программы на С отличаются компактностью и быстротой выполнения.
3) С – переносимый или мобильный язык.
4) С – мощный и гибкий язык.
5) Программы написанные на С используються для решения задач различных уровней. С обладает рядом мощных конструкций ассемблера.
6) С – удобный язык, он структурирован и вместе с тем не слишком ограничивает свободу программистам.
7) С – язык компелирующего типа. Так как С стандартизированный, аппаратно-независимый, широко доступный язык, приложение написанное на С часто могут выполняться с минимальными модификациями или даже без них на самых различных компьютерных системах. Компьютер, несмотря на его скорость и мощность вычислений, является простым устройством, которое манипулирует с двоичными числами. Одни двоичные числа интерпретируются компьютером, как команды, другие, как данные. Чтобы заставить компьютер выполнить что-нибудь полезное, нужно составить программу.
Программирование – деятельность по составлению программы.
Программа -это описание алгоритма решения задачи, заданной на языке ЭВМ.
Команда – предписание, определяющее очередной шаг.
Пример команды : С=А+В, где А, В-операнды, +- операция.
Операция -это то, что должна сделать ЭВМ согласно каждой команде.
Операнды -участники операции, то над чем и с чем выполняется операция. Набор элементарных операций из способов их описаний образуют систему команд языка программирования.
Пример №1:
# include
{void main(void) //заголовок головной функции программы
сout << “Здравствуй, С!\ n”;
1 строка : подключение вспомогательных библиотек, ориентированных на ввод и вывод данных разных типов в поток.
2 строка: заголовок головной функции программы. Cout-оператор вывода информации << – помещение в класс данных, \n-переход к новой строке вывода.
Программа -это последовательность инструкций, реализующих алгоритм набор предписаний, однозначно определяющих содержание и последовательность выполнения операций для решения задач.
Использование С.
1. Программы и данные.
2. Схема выполнения программы на ЭВМ:
Пример №1:
# include < stdio.h>
printf ("Я учусь в БГУИР\ n");
1 строка: команда препроцессора include, включающая файл stdio.h, который описывает библиотечную функцию printf.
2 строка: определение функции с именем main, не получающей никаких аргументов. Инструкция main заключается в фигурные скобки. Функция main обращается к библиотечной ф-ции printf для печати, заданной в последовательности литер. Наклонная черта (\ n) - литера новая строка, переход к новой строке.
Для выполнения программы на ПВЭМ, необходимо сделать следующие действия:
1) Составить программу на языке программирования.
2) Транслировать ее в стандарте этого языка.
3) Связать ее с необходимыми программами и функциями.
4) Загрузить в оперативную память.
5) Выполнить и получить результат.
СХЕМА КОМПЕЛЯЦИИ
Транслятор – это компьютерная программа по переводу программы, написанной на языке программирования, в форму понятную для компьютера. На выходе компилятора получается файл с расширением obj. Исполняемый файл или загрузочный модуль представляет собой файл, содержащий откомпилированную и готовую к выполнению программу. Borland C++ является средой для разработки программ, которые включают в себя как компилятор, так и некоторые другие инструменты.
Структура программы на языке С.
Любая программа на языке С состоит из одной или более ф-ций и элементов. Различным функциям можно давать любые имена. Ф-ции содержат инструкции (команды) предписывающие действия на определенном шаге выполнения, а переменная хранит значения, используемые в процессе этих действий. Такими действиями могут быть присвоения значения переменных, проверка некоторого условия. Функция с именем main. Выполнение любой программы начинается с ф-ции main.
а) Общая структура программы на С без обращения к подпрограмме:
б) Общая структура программы на С с обращением к подпр-ме:
Аргументы являются одним из механизмов взаимодействия между функциями. Список аргументов в круглых скобках идет следом за именем функции. Фигурные скобки обрамляют начало и конец программы. Инструкции, из которых состоит тело программ из операторов и операндов. В С каждый оператор и каждая строка с обращением к функции заканчивается точкой с запятой. Исключение составляют команды препроцессора и имена функции, стоящие в начале программной единицы. Целью большинства программ является решение задачи путем различных преобразований исходных данных. Для этого необходимо.