Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Этапы получения программного кодаСодержание книги
Поиск на нашем сайте
Получение из исходного кода исполняемого модуля программы, проходит несколько этапов: 1) Формирование исходного кода в текстовом редакторе. 2) Предварительная обработка текста процессором. 3) Компиляция объектного файла. 4) Компоновка и сборка исполняемого файла. 5) Отладка (добавляется отладочная информация). Функциональная декомпозиция Функция – первый уровень абстракции программирования (один и тот же код работает с разными наборами данных), при этом решаются две задачи: 1) улучшается структура текста программы; 2) функция является средством, позволяющим избежать дублирования кода Основной задачей программиста является «объяснение» компилятору, каким образом компилятор должен формировать вызов по отношению к данному модулю функции. То есть, программист должен правильно задать входные данные. Пример функциональной декомпозиции изображен на следующей схеме:
В C++ функция — это фрагмент (блок) кода, оформленный определенным образом (в частности, ограничен фигурными скобками) и выполняющий некоторое законченное действие. В языках C функция принимает на вход множество значений, но возвращает всегда одно.
Алгоритм программы Основным в процессе программирования является разработка алгоритма. Это один из наиболее сложных этапов решения задачи с использованием ЭВМ. В начале обучения программированию, на наш взгляд, целесообразно не привязываться сразу к какому-либо языку, а, разрабатывать алгоритм решения задачи используя блок-схемы. После такой алгоритмизации проще перейти к записи того же алгоритма на определённом языке программирования. Основными алгоритмическими структурами (ОАС) являются следование, развилка и цикл. В более сложных случаях используются суперпозиции (вложения) ОАС. Ниже приведены графические обозначения (обозначения на блок-схемах) ОАС.
На схемах СЕРИЯ обозначает один или несколько любых операторов; УСЛОВИЕ есть логическое выражение (ЛВ) (если его значение ИСТИНА, переход происходит по ветви ДА, иначе — по НЕТ). На схеме цикла с параметром использованы обозначения: ПЦ — параметр цикла, НЗ — начальное значение параметра цикла, КЗ — конечное значение параметра цикла, Ш — шаг изменения параметра цикла. Начало и конец алгоритма на блок-схемах обозначают овалом, вводимые и выводимые переменные записываются в параллелограмме. В примерах мы будем использовать запись алгоритмов с помощью блок-схем и словесное описание. Линейные алгоритмы Простейшие задачи имеют линейный алгоритм решения. Это означает, что он не содержит проверок условий и повторений. Пример 1. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору — v2 км/ч и под гору — v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?
Для проверки работоспособности алгоритма необходимо задать значения входных переменных, вычислить конечный результат по алгоритму и сравнить с результатом ручного счета. Пример 2. Дано натуральное трехзначное число n, в записи которого нет нулей. Составить алгоритм, который возвращает значение ИСТИНА, если верно утверждение: "число n кратно каждой своей цифре", и ЛОЖЬ — в противном случае.
На приведенной выше схеме DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления. В фигурных скобках записаны пояснения (комментарии) к операторам. Развилка Достаточно часто то или иное действие должно быть выполнено в зависимости от значения логического выражения, выступающего в качестве условия. В таких случаях используется развилка. Пример 1. Вычислить значение функции
При тестировании алгоритмов с развилкой необходимо подбирать такие исходные данные, чтобы можно было проверить все ветви. В приведенном выше примере должно быть по крайней мере три тестовых набора. Пример 2. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе — оставить без изменения. Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.
Рассмотренный пример иллюстрирует неполную развилку. Также следует отметить, здесь логическое выражение, являющееся условием, содержит 2 операнда. Циклы Если какие-либо операторы необходимо выполнить несколько раз, то их не переписывают каждый раз заново, а организуют цикл. Пример 1. Подсчитать количество нечетных цифр в записи натурального числа n. Идея решения. Из заданного числа выбирать из младшего разряда цифру за цифрой до тех пор, пока оно не исчерпается, т.е. станет равным нулю. Каждую нечётную цифру учитывать.
Задача решена двумя способами. Слева решение оформлено с использованием цикла с предусловием, справа — с постусловием. Пример 2. Дана последовательность, общий член которой определяется формулой Вычислить при n>2 сумму тех ее членов, которые больше заданного числа e. При решении задачи находится очередной член последовательно и, если он больше e, добавляется к сумме.
В рассмотренных выше примерах количество повторений заранее неизвестно. В первом оно зависит от количества цифр в записи натурального числа, во втором — от числа e. В тех же случая, когда количество шагов известно из условия задачи, проще и предпочтительней использовать цикл с параметром. Пример 3. Найти произведение первых k натуральных чисел, кратных трём. При составлении алгоритма учтем, что первое натуральное число, кратное 3, есть тройка, а все последующие больше предыдущего на 3.
Другие примеры будут записаны уже на ЯПВУ. В настоящей же публикации предпринята попытка продемонстрировать, что изучение программирования разумно начинать собственно с разработки алгоритмов, не акцентируя первоначально внимания на записи алгоритма на том или ином языке программирования. В то же время автор, являясь сторонником структурного подхода к программированию, предлагает придерживаться этого подхода и при программировании на уровне блок-схем. Функция main main - основная функция языка си. Для языка си характерна следующуя специфика: 1) Каждая программа на С обязательно имеет функцию с именем main 2) Имя main может быть только у одной функции 3) Тело программы заключено в лексеммы: «{» - начало программы, «}» – выход из программы (корректный) Для различных версий компиляторов языка си могут быть применены различные виды главной функции main: - main – С, С++ - wmain и tmain – Visual Studio (с поддержкой Unicode) - WinMain –Windows программирование В языке С имеет различие написание маленьких и заглавных букв Завершение программы происходит в случаях: 1) достижения окончания функции main – лексема «}»; 2) по выполнению return – инструкции из main; 3) вызов функции exit() из любой функции программы; 4) вызов функции abort() из любой функции программы. при этом в случаях 1, 2 и 3 – имеется корректный выход, 4 – некорректный выход из программы.
Блоки кода Блок кода – несколько строк, заключённые в фигурные скобки. Если внутри блока кода содержится другой блок кода, то он называется составной инструкцией. Внутри каждого блока кода могут быть объявлены данные, локальные для данного блока. Комментарии Существуют два возможных способа создания коментариев: 1) // комментированный текст - простой комментарий (действует на 1 строку) 2) /* комментированный текст */ комментарий действует на весь блок заключенный между набором символов "/*" и "*/".
Рекомендации: - комментарии должны быть; - плохой комментарий хуже, чем его отсутствие; - не стоит комментировать очевидное; - обязательно комментировать объекты, которые используются разными единицами трансляции; - хорошим тоном считается комментировать начало файла.
Базовые понятия языка Си. Ключевые слова Cи - слова, зарезервированные только для использования компилятором языка Си. примеры: #include
Идентификаторы – используются для присвоения имён объектам.
Специфика присвоения имён. 1) Идентификатор С++ состоит из последовательности букв и цифр. [a-z], [A-Z], [0-9], _. 2) Первый символ должен быть буквой. 3) _ - подчёркивание равно букве, но имена, начинающиеся с “_”, обычно зарезервированы для специфических нужд среды или использования стандартных библиотек. 4) Компилятор различает символы в верхнем и нижнем регистре. Например, fool и FOOL – разные переменные. 5) Для некоторых компиляторов есть ограничения для количества символов в имени (С – 31 символ). В количестве имён нельзя использовать ключевые слова С. 6) В качестве имён нельзя использовать ключевые слова С 7) Чем шире область использования, тем осмысленнее должны быть имена 8) Согласно Венгерской нотации рекомендуется в имени указывать тип переменной
примеры:
Ключевые слова Си Ключевые слова- это предопределенные идентификаторы, которые имеют специальное значение для компилятора Си. Их можно использовать только так как они определены. Имена объектов программы не могут совпадать с названиями ключевых слов. Список ключевых слов: auto, double, int, struct, break, else, long, switch, case, enum, register, typedef, char, extern, return union, const, float, short, unsigned, continue, for, signed, void, default, goto, sizeof, while, do, if, static, volatile. Ключевые слова не могут быть переопределены. Тем не менее, они могут быть названы другим текстом, но тогда перед компиляцией они должны быть заменены посредством препроцессора на соответствующие ключевые слова. Понятие lvalue и rvalue. Для того, чтобы отличать выражения, обозначающие объекты, от выражений, обозначающих только значения были введены понятия lvalue и rvalue. Определение lvalue использовается для обозначения выражений, которые могли стоять слева от знака присваивания (left-value); им противопоставлялись выражения, которые могли находиться только справа от знака присваивания (right-value). Характерные случаи использования lvalue и rvalue: rvalue: - Выражения, обозначающие временные объекты. В частности, результат вызова функций, возвращающих объекты не по ссылке; результат встроенных операций +, -. *, / и т.п.; явное создание временной переменной int() или C(); преобразования не к ссылочным типам и т.д. - Результат встроенной операции взятия адреса (&) — rvalue типа указатель. - Результат встроенных постфиксных операций ++, --. - Литералы за исключением строковых. - Константы перечислений. lvalue: - Выражения, непосредственно обозначающие объект, non-modifiable в случае const-квалификации. Например, имя переменной, параметра функции и т.п. - Выражения ссылочных типов. non-modifiable в случае const-квалификации. В частности, результат вызова функций, возвращающих объекты по ссылке; выражения, состоящие из имен ссылочных переменных; операции преобразования к ссылочному типу и т.д. - Результат встроенной операции разыменования (*) — lvalue указуемого типа; non-modifiable в случае const-квалификации. - Результат встроенных префиксных операций ++, --. - Имя функции — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на функцию». - Имя массива — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на первый элемент массива». - Строковые литералы — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на char/wchar_t».
Типы данных. Типы данных. В языке Си имеются два существенно различных типа данных: int- целый и float - вещественный(с плавающей точкой). Из них можно создавать еще два типа: char - символьный, double - вещественный с двойной точности. Следует различать тип данных и модификатор типа. Имеются следующие базовые типы: - • char (символьный) – занимает 1 байт (8 бит) памяти - • int (целый) – 2 байта - • float (вещественный) – 4 байта - • double (вещественный с двойной точностью) – 8 байт - • void (пустой тип) К модификаторам относятся: - • unsigned (беззнаковый) - • signed (знаковый) - • short (короткий) - • long (длинный) Тип данных и модификатор типа определяют: - - формат хранения данных в оперативной памяти (внутреннее представление данных) - - диапазон значений в пределах которого может изменяться переменная - - операции которые могут выполняться над данными соответствующего типа Итак, к данным целого типа относятся следующие типы: char, int, long int (2 байта), short int (4 байта). Модификаторы signed и unsigned могут предшествовать любому целому типу, но они не обязательны. Они указывают, как интерпретируется старший бит переменной. По умолчанию все переменные целого типа считаются signed, т.е. левый бит интерпретируется как знак. К вещественным типам данных (с плавающей точкой) относятся: float, double, long double (10 байт).
Функции Функция - это самостоятельная единица программы, созданная для решения конкретной задачи. Функциями удобно пользоваться, например, если необходимо выполнить однотипные действия с одинаковым по типу набором данных. Функции могут возвращать значение. Это значение может быть использовано далее в программе. Использование функций позволяет: - улучшить структуру текста программы; - избежать дублирования кода.
Существует два типа функций: 1) прямые (выполняют ряд действий и передают управление вызывающей функции); 2) рекурсивные (многократно вызывают "сами себя"). Пример рекурсивной функции: int Factorial (int a)
Блоки кода служат для логического разделения областей программы. Блок кода выделяется в тексте фигурными скобками: { Блок кода } Могут содержать в себе вложенные Блоки кода. { Блок кода { Блок кода 1 } }
Можно объявить данные или переменные, и они будут локальные (нельзя использовать вне блока). Использование блоков кода позволяет графическую структуру программы сделать более читабельной. Операторы языка C. Арифметические операторы + - * … 1.1) % - остаток от целочисленного деления 1.2) Инкремент – увеличение числа на единицу. x=1; 1) Оператор присваивания Логические операторы true (!=0) (и) (или) Тернарный оператор Тернарный оператор «?:» является сокращенной формой конструкции if…else. Он получил такое имя потому, что включает в себя три операнда. Оператор вычисляет условие и возвращает одно значение в случае, если условие верно, и другое значение, если условие неверно. Синтаксис оператора: условие? значение_истина: значение_ложь Здесь условие — это выражение типа Boolean, значение_истина представляет собой значение, которое возвращается, если условие равно true, и значение_ложь возвращается в противном случае.
4) Оператор запятая “, ”
char symbol; Данные
Данные могут быть:
1) целые числа; 2) числа с плавающей точкой(арифметические типы данных). Служат для выполнения вычислений;
int float double unsigned short long 3) символы и строки; char char[] 4) логические; bool Символьные данные (литералы) – символ, пара символов или три символа, заключенные в кавычки.
ASCII (7-и битная кодировка) Строковые литералы – последовательность, заключенная в двойные кавычки символов. const char[] Перечисление. 1)enum Action { 2)enum Action
int m=7; Базовые типы данных. Типы данных базовые производные
Базовые целые char (1) int (системно зависим) Плавающая точка: Производные 1) простые - указатель, ссылка 2) составные - класс(class), структура(structure), объединение(union), массив(array) 3) sizeof(_) либо выражение, либо тип данных
y=300*sin(x)
int double Неявное приведение типов производит компилятор автоматически по правилу: Явное приведение типов.
float var1;
Файловый ввод - вывод.
1) infile = fopen(“имя”, w);
2) myfile.txt
Булевые переменные (тип BOOL). True =1 False=0
|
|||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2021-12-15; просмотров: 43; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.142.255.103 (0.013 с.) |