Главная страница
qrcode

Издательство тгту


НазваниеИздательство тгту
Дата24.07.2020
Размер1.19 Mb.
Формат файлаpdf
Имя файла[Romanenko_A.V.,_Popov_A.I.]_Osnovue_programmirova(BookSee.org).
оригинальный pdf просмотр
ТипДокументы
#42681
страница1 из 8
Каталог
  1   2   3   4   5   6   7   8


А.В. Романенко, АИ. Попов ОСНОВЫ ПРОГРАММИРОВАНИЯ ДЛЯ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ И РЕШЕНИЯ ТВОРЧЕСКИХ ЗАДАЧ
ИЗДАТЕЛЬСТВО ТГТУ

УДК 681(075)
ББК я
Р Рецензенты Доцент МГТУ им. Баумана
В.А. Мартынюк Директор института информационных технологий и коммуникаций Астраханского государственного технического университета ОМ. Проталинский Профессор, доктор физико-математических наук СМ. Дзюба
Романенко, А.В. Р Основы программирования для автоматизированного проектирования и решения творческих задач : учеб. пособие / А.В. Романенко, АИ. Попов. – Тамбов : Изд-во Тамб. гос. техн. унта,
2007. – 96 с. – 150 экз. – ISBN 5-8265-0595-8 (978-5-8265-0595-3). Рассмотрены теоретические вопросы программирования на одном из широко распространенных языков – языке С. Приведены приемы и алгоритмы для обработки данных различных типов. Даны задания для самостоятельной подготовки и рассмотрены примеры решения задач повышенной сложности. Предназначено для подготовки студентов по дисциплинам, связанным с программированием, может быть использовано профессорско-преподавательским составом и инженерно-педагогическими работниками УДК 681(075)
ББК
Í
973-018я73
ISBN 5-8265-0595-8
(978-5-8265-0595-3)
 ГОУ ВПО "Тамбовский государственный технический университет" (ТГТУ), 2007
Министерство образования и науки Российской Федерации
ГОУ ВПО "Тамбовский государственный технический университет"
А.В. РОМАНЕНКО, АИ. ПОПОВ ОСНОВЫ ПРОГРАММИРОВАНИЯ ДЛЯ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ И РЕШЕНИЯ ТВОРЧЕСКИХ ЗАДАЧ Допущено Учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по направлению 230100 "Информатика и вычислительная техника, специальности 230104 "Автоматизированные системы проектирвоания" Тамбов Издательство ТГТУ
2007
Учебное издание
РОМАНЕНКО Александр Васильевич ПОПОВ Андрей Иванович
ОСНОВЫ ПРОГРАММИРОВАНИЯ ДЛЯ АВТОМАТИЗИРОВАННОГО ПРОЕКТИРОВАНИЯ И РЕШЕНИЯ ТВОРЧЕСКИХ ЗАДАЧ Учебное пособие Редактор З.Г. Черно в а Инженер по компьютерному макетированию МН. Рыж ко в а Подписано в печать 14.05.2007 Формат 60
× 84/16. 5,58 усл. печ. л. Тираж 150 экз. Заказ № 343
Издательско-полиграфический центр Тамбовского государственного технического университета
392000, Тамбов, Советская, 106, к. 14
ВВЕДЕНИЕ Современные техника и многие технологии немыслимы без использования вычислительной техники. Специализированные ЭВМ и компьютеры общего назначения находят широкое применение практически во всех направлениях человеческой деятельности. Одним из таких направлений является разработка новых технических устройств и систем, в процессе создания которых широко применяется человеко-машинный комплекс, называемый системой автоматизированного проектирования (САПР). Однако, сами САПР являются сложными системами обработки информации, для создания и эксплуатации которых необходимо присутствие грамотных специалистов в этой области. В настоящее время для создания программных комплексов различной сложности часто используется язык программирования С. Язык С задумывался как язык программирования "среднего" уровня вследствие наличия некоторых особенностей, целью которых было предоставление программисту удобного инструментального языка, заменяющего язык ассемблера и обеспечивающего легкий доступ к аппаратным средствам ЭВМ. Он был разработан впервой половине х годов XX века сотрудниками фирмы Bell Laboratories Д. Ритчи и Б. Керниганом. Популяризации языка С способствовало написание на этом языке текстов операционной системы Unix. В результате ОС Unix получила максимальную переносимость на разные типы ЭВМ, что способствовало приобретению ею огромной популярности, а язык С стал ее базовым языком программирования. Распространению языка долгое время препятствовало отсутствие полного и однозначного его описания. Вследствие этого в
1983 году в Американском Национальном Институте Стандартов (ANSI) был образован комитет по стандартизации языка Си в 1989 году стандартна язык программирования Сбыл утвержден и началось беспрепятственное распространение языка Св программистской среде. Данное учебное пособие предназначено для выработки у студентов навыков программирования задач различной сложности с помощью одного из широко распространенных языков программирования – языка С. Компоненты языка Св пособии выделены жирным шрифтом, а фрагменты, на которые следует обратить внимание – курсивом. Во второй части пособия приведены практические задания, которые будут полезны для самостоятельного закрепления изучаемого материала. Часть ОСНОВЫ ЯЗЫКА С Любой язык программирования образуют три составляющие части алфавит, синтаксис и семантика. Алфавит – фиксированный для данного языка набор основных символов, из которых должен состоять любой текст на этом языке. Никакие другие символы для записи текстов не допускаются. Синтаксис – система правил, определяющих допустимые конструкции из букв алфавита. С помощью этих конструкций представляются отдельные компоненты алгоритма и алгоритм в целом, записанные на данном языке программирования. Семантика – это система правил истолкования отдельных языковых конструкций, позволяющих однозначно воспроизвести процесс обработки данных по заданной программе. Выделяют основные понятия языков программирования.
ƒ
Операторы. Понятие оператора является ключевым для любого языка программирования. Оператор представляет собой законченную фразу языка, содержащую полностью оформленный этап обработки информации. Операторы разделяют на две группы основные (не содержащие других операторов) и производные (составные. В алгоритмических языках операторы обычно отделяют друг от друга точкой с запятой.
ƒ
Идентификаторы В процессе обработки информации, алгоритму необходимо различать программные объекты. Для обозначения имен переменных, их свойств и атрибутов используются идентификаторы. Идентификатор представляет собой сочетание букв и цифр, которое начинается с буквы и не превышает заданной для языка программирования длины. В любом языке программирования существуют стандартные идентификаторы, произвольное использование которых запрещено.
ƒ
Переменные Переменные представляют собой объекты, способные принимать различные значения. Они обладают следующими свойствами в один момент времени переменная хранит не более одного значения переменная имеет постоянный тип переменная хранит текущее значение до записи в нее нового значения вначале выполнения программы значение переменных считается неопределенными.
1 АЛФАВИТ И ИДЕНТИФИКАТОРЫ ЯЗЫКА С Алфавит языка С включает следующие символы
• латинские буквы строчные и прописные
• цифры от 0 до 9;
• специальные знаки " { } , | [ ] ( ) + – / % \ ; ' : ? < = > _ ! & #

^ *. Из символов алфавита формируются лексемы языка идентификаторы, ключевые слова, константы, знаки операций, разделители.
В качестве идентификаторов в языке С допускаются любые сочетания символов, начинающиеся с буквы. Длина идентификатора не должна превышать тридцать два символа. Буквы верхнего и нижнего регистров считаются различными. Запрещено использование идентификаторов, совпадающих с ключевыми словами. Ключевыми словами считаются идентификаторы, имеющие специальное значение для компиляторов языка Сих использование ограничено предопределенным смыслом.
1 Ключевые слова языка С auto break case char const continue default do double else enum extern float long register return short signed sizeof static struct switch typedef union unsigned void volatile while Помимо этого некоторые компиляторы языка С считают ключевыми слова cdecl, far, huge, near, interrupt. Текст, заключенный между знаками /**/ или стоящий в строке после знаков //, считается комментарием.
2 ТИПЫ ДАННЫХ В ЯЗЫКЕ С Типы данных служат для описания переменных. Имени переменной соответствует адрес участка памяти, выделенного для хранения значения переменной, а длина этого участка определяется выбранным типом данных. Тип переменной помимо этого определяет множество допустимых значений, которые может хранить переменная, а также набор операций, для которых переменная может служить операндом. Множество допустимых значений обычно совпадает с множеством допустимых констант того же типа. Существуют символьные, целочисленные и вещественные переменные. Причем, символьные переменные в языке Смогут рассматриваться как целочисленные. Переменные типизируются на основе определений и описаний. Определение, в отличие от описания, не только вводит программный объектно и дает указание компилятору выделить участок памяти для его размещения в памяти ЭВМ. Для определений и описаний переменных используются следующие ключевые слова char, short, int, long, float, double. Помимо этого как отдельно, таки с другими ключевыми словами могут использоваться слова signed и unsigned. Они обозначают знаковый или беззнаковый вид хранения целого числа.
2 Простые типы данных языка С Тип Размер, бит Диапазон значений char 8 -128...127 unsigned char
8 0...255 enum 16
-32768...32767 short 16
-32768...32767 unsigned short
16 0...65535 int 16
-32768...32767 unsigned int
16 0...65535 long 32
-2147483648...2147483647 unsigned long
32 0...4294967295 float 32 3.4e-38...3.4e+38 double 64 ее long double
80 е Особенностью типа int является то, что его длина в байтах соответствует ширине шины данных компьютера, для которого разработан используемый компилятор. Типы данных float, double и long double считаются неупорядоченными. Для описания типа возвращаемого функцией значения может быть использовано ключевое слово void, обозначающее отсутствие результата. В этом случае функция ничего не возвращает.

3 КОНСТАНТЫ В ЯЗЫКЕ С Константа представляет собой языковую конструкцию, обозначающую изображение фиксированного числового, строкового или символьного значения. Они разделены на пять групп целые, вещественные, перечислимые, символьные, строковые. Перечислимые константы обычно относятся к целочисленному типу данных. Целая константа может быть десятичной, восьмеричной или шестнадцатеричной. Десятичная константа представляет собой набор десятичных цифр, начинающийся с цифры, отличной от нуля, если это не ноль. Отрицательные константы представляют собой константы без знака, к которым применена операция изменения знака. Восьмеричные константы всегда начинаются с нуля. В их записи недопустимо использование цифр 8 и 9. Шестнадцатеричная константа начинается с сочетаниях. В ее состав могут входить цифры от 0 дои буквы латинского алфавита от A до F (обозначающие числа от 10 до 15). По умолчанию целочисленные константы относятся к типу int. Можно явным образом повлиять на выбор типа данных для константы. Для этого служат суффиксы L, U и UL. Суффикс L – соответствует типу long, U – типу unsigned int, UL определяет тип unsigned long. Вещественная константа имеет другую форму представления, использующую арифметику с плавающей точкой. Константа с плавающей точкой может иметь семь частей знак, целая часть, десятичная точка, дробная часть, признак экспоненты е или Е, показатель десятичной степени, суффикс L или F. При отсутствии суффиксов вещественная константа относится к типу double. Суффикс F относит константу к типу float, а суффикс L – к типу long double. Перечислимые константы вводятся с помощью служебного слова enum. По существу это обычные целочисленные константы, которым приписаны уникальные идентификаторы, не совпадающие с другими программными объектами и служебными словами. Каждой такой константе присваивается целочисленное значение. Первому идентификатору в списке присваивается значение нуля, а значение каждого следующего увеличивается на единицу. Пример Это правило действует ив том случае, когда идентификаторам явно присвоены значения (enum{ten = 10, three = 3, four, five}). Имена констант должны быть уникальными, однако к значениям констант это не относится, одно значение могут иметь несколько констант. Значения перечислимых констант могут быть заданы выражениями (enum {two = 2, four = two * 2}). Для перечислимых констант может быть введено имя соответствующего типа. Пример Строка представляет собой последовательность символов, заключенных в кавычки. Размещая строку в памяти, компилятор автоматически добавляет в ее конец нулевой код ('\0'). Символьные константы представляют собой один или два символа, заключенные в апострофы. Односимвольные константы относятся к стандартному типу char. Запись кодов и символов ', \, ?, " должна начинаться с символа '\'. Последовательности, начинающиеся с символа '\', называются последовательностями.
3 последовательности
\0 Null
\v Табуляция вертикальная
\a звонок) \\ Обратный слэш
\b Возврат на шаг \’ Апостроф
\f Перевод страницы \” Двойная кавычка
\n Перевод строки \? Знак вопроса
\r Возврат каретки \000
Восмиричный код
\t Табуляция горизонтальная \xhh Шестнадцатиричный код
4 ЗНАКИ ОПЕРАЦИЙ Знаки операций обеспечивают формирование и последующее вычисление выражений. Один и тот же знак операции может употребляться в различных выражениях и по-разному восприниматься компилятором в зависимости от ситуации. Все знаки операций по количеству операндов делят на унарные, бинарные и трехразрядные. Бинарные операции бывают следующих видов аддитивные, мультипликативные, сдвигов, поразрядные, операции отношений, логические, присваивания, адресной арифметики, операция "запятая. Унарные операции (операции с одним операндом
& получение адреса операнда
* обращение по адресу (операндом должен быть адрес
-/+ унарные операции изменения знака операнда ('+' – сделать операнд положительным
поразрядное инвертирование внутреннего кода скалярного операнда
! логическое отрицание значения операнда (применяется к операндам скалярных типов, результат – 0 (если операнд отличен от нуля) и 1 (если операнд равен нулю в качестве логических значений в языке С используются целые числа
0 – ложь,
≠0 – истина
++ увеличение скалярного операнда на 1 (инкремент префиксная операция – увеличение значения операнда до его использования, постфиксная операция – увеличение операнда после его использования операнд не может быть константой
-- уменьшение скалярного операнда на 1 (декремент правила оформления аналогичны инкременту
Sizeof
(операнд)
вычисление размера в байтах для объекта того типа, который имеет операнд тип) операнд операция явного преобразования типа операнда. Бинарные операции Аддитивные операции+ арифметическое сложение операндов
- арифметическое вычитание операндов. Мультипликативные операции умножение операндов
/ деление операндов для целочисленных операндов возвращается только целая часть от результата деления
% получение остатка отделения целочисленных операндов. Операции сдвига сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого целочисленного операнда
>> сдвиг вправо (аналогично. Поразрядные операции поразрядная конъюнкция битовых представлений значений целочисленных операндов
| поразрядная дизъюнкция битовых представлений значений целочисленных операндов
^ поразрядное "исключающее или" битовых представлений значений целочисленных операндов. Операции отношения, >, <=, >=, == (равно, != (неравно. Логические бинарные операции
&& конъюнкция арифметических операндов или отношений
|| дизъюнкция арифметических операндов или отношений. Операции присваивания
=, *=, /=, %=, +=, -=, <<=, >>=,&=, |=, ^=. Операции адресной арифметики играет роль операции адресной арифметики при прямом выборе компонента структурного объекта
-> косвенный выбор компонента структурного объекта
[ ] играет роль операции адресной арифметики при индексировании элементов массива
( ) играет роль операции адресной арифметики при вызове функций. В некоторых случаях в качестве знака операции может выступать запятая несколько выражений, разделенных запятыми, будут вычисляться последовательно слева направо. Условная (трехразрядная) операция операнд ? операнд : операнд – если значение операнда истинно, то результат – операнд, иначе – операнд. Для того, чтобы получить возможность однозначно вычислять результат при объединении в сложную операцию множества простых операций, введено понятие приоритета выполнения операций. Приоритет операции объясняет порядок ее выполнения в составе некоего выражения.
4 Приоритеты выполнения операций Уровень приоритета Операции Порядок выполнения
1
[ ] . -> ( )

2
& * + – ++ -- sizeof() (тип)


3
* / % (мультипликативные)

4 +
– аддитивные)

5
<< >>

6
< <= > >=

7
== !=

8 &

9 ^

10 |

11 &&

12 ||

13
? : (условная операция)

14 операция присваивания

15 ,

5 РАЗДЕЛИТЕЛИ В ЯЗЫКЕ СВ составе языка программирования С присутствуют знаки пунктуации, использование которых позволяет изменять смысл выражения.
[ ] – ограничивают индексы массивов и индексированных элементов
( ) – группируют выражения, используются в оформлении операторов, используются при оформлении функций, преобразовании типов, при оформлении макроопределений
{ } – обозначают границы составного оператора или блока
, – разделяет элементы списков
; – завершает все операторы, все определения и все описания
: – отделяет метку от помечаемого оператора
... – обозначает переменное число параметров у функции при ее определении и последующем описании
= – отделяет переменную от списка инициализации
# – обозначает директивы препроцессора.
6 ОПЕРАТОРЫ ЯЗЫКА С Оператор представляет собой законченную фразу языка, содержащую полностью оформленный этап обработки информации. Любое выражение, заканчивающееся ';' воспринимается компилятором как оператор. В языке С представлены следующие виды операторов простые – в состав которых не входят другие операторы (оператор присваивания, пустой оператор и операторы изменения порядка выполнения программы, а также сложные – составной оператор, оператор ветвления, переключатель, циклы.
ƒ
Оператор присваивания предназначен для оформления процесса обработки информации. Он имеет формат







=
,
,
,
функции
вызов
выражение
переменная
константа
переменной
имя
  1   2   3   4   5   6   7   8

перейти в каталог файлов


связь с админом