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

Учебное_пособие_заочное (брошюра)

.pdf
Скачиваний:
24
Добавлен:
21.03.2016
Размер:
1.92 Mб
Скачать

Функция

Назначение

Заголо

 

 

воч-

 

 

ный

 

 

файл

acos(x)

функция арккосинуса arccos x

math.h

 

(значение аргумента должно

 

 

находиться в диапазоне от –1

 

 

до +1)

 

 

 

 

atan(x)

функция арктангенса arctg x

math.h

 

 

 

clrscr()

очищает экран

conio.h

textcolor (int c)

устанавливает цвет символов

conio.h

 

по значению параметра с

 

textbackground(int c)

устанавливает цвет фона по

conio.h

 

значению параметра с

 

getch()

считывает один символ с

stdio.h

 

клавиатуры без отображения

 

 

на экране

 

getchar()

считывает очередной символ

stdio.h

 

из стандартного входного

 

 

потока

 

gets()

считывает строку из стандарт-

stdio.h

 

ного входного потока

 

puts()

выводит строку

stdio.h

 

 

 

strlen()

вычисляет длину строки

string.h

atoi()

преобразует строку в целое

string.h

 

число

 

itoa()

преобразует целое число в

string.h

 

строку

 

void srand

инициализирует генератор

stdlib.h

(unsigned x)

случайных чисел rand()

 

int rand (void)

возвращает псевдослучайное

stdlib.h

 

целое число в диапазоне от 0

 

 

до 215-1

 

void sound

вызывает звуковой сигнал с

dos.h

( unsigned f )

частотой f в Гц

 

 

142

 

Очевидно, что программирование на машинном языке представляет для разработчика значительные трудности. Кроме того, у каждого типа ЭВМ свой собственный набор инструкций. В 50-годах были разработаны символические языки Ассемблеры, в которых уже использовались не коды инструкций, а их мнемонические имена. Например,

ADDX, Y

что эквивалентно Y=Y+X.

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

Для разработки конкретного приложения используется набор инструментов:

текстовый редактор - используется для создания и редактирования исходных файлов с текстом программ;

компилятор - переводит текст исходных файлов в объектный модуль, содержащий коды машинных инструкций;

библиотекарь - используется для поддержки совокупности или библиотек объектных модулей;

компоновщик или редактор связей - связывает объектные модули компонентов программы и библиотек в исполняемый код;

загрузчик - копирует исполняемый код с диска в память ЭВМ и инициализирует его;

отладчик - используется для отладки программ на уровне отдельных инструкций;

конфигуратор - автоматизирует процессы создания и изменения компонент программы;

интерпретатор - в отличие от компилятора, непосредственно выполняет исходный код программы.

11

1.4. Основы программирования на языке Си.

Язык программирования Си является машинно-независимым процедурным языком программирования, сочетающим возможности языков высокого и низкого уровней. Создателями языка считаются американские инженеры Б.Керниган и Д.Ритчи. Первоначально язык Си (1972 г.) был разработан как составная часть операционной системы Unix, сегодня он реализован в большинстве известных ОС, и, более того, многие ОС сами написаны на языке Си.

За время своего существования язык Си прошел несколько этапов своего развития, и к настоящему времени действуют два, практически идентичных, стандарта языка:

ANSI C (разработан Американским институтом национальных стандартов в 1989г.);

ISO C (разработан Международной организацией стандартов в 1990г.).

Следуя устоявшимся традициям, приведем текст первой простой программы на языке Си.

/ Первая программа на Си /

#include stdio.h main()

{

printf( Добро пожаловать в Си!\n );

}

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

Строки, начинающиеся с символа # , представляют собой

директивы препроцессора - специальной программы,

сканирующей до компиляции исходный код программы в поисках символа # . В данном случае препроцессору дается

12

5.ПРИЛОЖЕНИЯ.

5.1. Библиотечные функции языка Си.

Функция

Назначение

Заголо

 

 

воч-

 

 

ный

 

 

файл

abs(x)

|x| - возвращает абсолютное

math.h

 

значение целого аргумента

 

fabs(x)

|x| - возвращает абсолютное

math.h

 

значение вещественного

 

 

аргумента

 

cos(x)

cos x – функция косинуса,

math.h

 

угол задается в радианах

 

sin(x)

sin x - функция синуса, угол

math.h

 

задается в радианах

 

tan(x)

tan x - функция тангенса, угол

math.h

 

задается в радианах

 

exp(x)

вычисляет значение ex

math.h

 

(экспоненциальная функция)

 

log(x)

возвращает значение

math.h

 

натурального логарифма ln x

 

 

log10(x)

возвращает значение

math.h

 

десятичного логарифма lg x

 

 

pow(x,y)

возвращает значение xy , т. е.

math.h

 

х в степени у

 

sqrt(x)

возвращает положительное

math.h

 

значение квадратного корня

 

 

√x

 

asin(x)

функция арксинуса arcsin x

math.h

 

(значение аргумента должно

 

 

находиться в диапазоне от –1

 

 

до +1)

 

 

 

 

 

141

 

Тип данных

Использование

Размер

Текстовый

Текст или комбинация текста и

До 255

 

чисел, например, адреса, а также

символов.

 

числа, не требующие вычислений,

 

 

например, номера телефонов,

 

 

инвентарные номера или

 

 

почтовые индексы.

 

 

определения этого поля.

обычно —

 

 

4 байта.

140

Соединитель

Межстраничный соединитель

Комментарий

1.2. Схемы алгоритмов.

Любой алгоритм может быть представлен в виде комбинации трех элементарных алгоритмических структур:

линейной;

ветвления;

цикла.

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

(рис. 1.2.1).

Рисунок 1.2.1. Алгоритм линейной структуры.

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

Выбор ветви определяется некоторым признаком, принимающим два или более значения. Обычно это логические значения – истина и ложь (рис. 1.2.2)

7

Рисунок 1.4.1. Схема подготовки исполняемой программы.

1.4.1. Переменные и константы.

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

Имена в языке Си могут состоять из алфавитно-цифровых символов и символа подчеркивания , при этом первый символ не может быть цифрой. Компилятором распознаются только первые n символов имени (n=31), хотя его общая длина может быть и больше, при этом символы нижнего и верхнего регистров различаются.

В языке Си имеются несколько типов констант, то есть данных, не подлежащих изменению.

Константы целого типа могут задаваться в десятичной, восьмеричной или шестнадцатеричной системах счисления.

14

Тип данных

Использование

Размер

Текстовый

Текст или комбинация текста и

До 255

 

чисел, например, адреса, а также

символов.

 

числа, не требующие вычислений,

 

 

например, номера телефонов,

 

 

инвентарные номера или

 

 

почтовые индексы.

 

Денежный

Значения валют. Денежный тип

8 байтов.

 

используется для предотвращения

 

 

округлений во время вычислений.

 

 

Предполагает до 15 символов в

 

 

целой части числа и 4 - в дробной.

 

Счетчик

Автоматическая вставка

4 байта.

 

последовательных

 

 

(увеличивающихся на 1) или

 

 

случайных чисел при добавлении

 

 

записи.

 

Логический

Поля, содержащие только одно из

1 бит.

 

двух возможных значений, таких

 

 

как «Да/Нет», «Истина/Ложь»,

 

 

«Вкл/Выкл».

 

Поле объекта

Объекты (например, документы

До 1

OLE

Microsoft Word, электронные

гигабайта

 

таблицы Microsoft Excel, рисунки,

(ограниче

 

звуки и другие двоичные данные),

но

 

созданные в других программах.

объемом

Гиперссылка

Поле, в котором хранятся

диска).

До 64 000

 

гиперссылки. Гиперссылка может

символов.

 

иметь вид пути, либо адреса.

 

Мастер

Создает поле, позволяющее

Тот же

подстановок

выбрать значение из другой

размер,

 

таблицы или из списка значений,

который

 

используя поле со списком. При

имеет,

 

выборе данного параметра в

поле

 

списке типов данных запускается

подстанов

 

мастер для автоматического

ок;

 

139

 

Каждая запись таблицы содержит всю необходимую информацию об отдельном элементе базы данных (атрибуте). Атрибуты таблицы называются полями.

Каждому полю таблицы присваивается уникальное имя:

имя должно содержать не более 64 символов;

имя может включать любую комбинацию букв, цифр, пробелов и специальных символов за исключением точки (.), восклицательного знака (!), надстрочного символа (`) и квадратных скобок ([ ]);

не должно начинаться с символа пробела;

не должно включать управляющие символы (с кодами

ASCII от 0 до 31);

не должно включать прямые кавычки (") в именах таблиц, представлений и хранимых процедур в проекте

Microsoft Access.

Тип данных в Access указывает, как обрабатывать эти данные. Можно использовать следующие типы :

Тип данных

Использование

Размер

Текстовый

Текст или комбинация текста и

До 255

 

чисел, например, адреса, а также

символов.

 

числа, не требующие вычислений,

 

 

например, номера телефонов,

 

 

инвентарные номера или

 

 

почтовые индексы.

 

Поле MЕМО

Длинный текст или числа,

До 64 000

 

например, примечания или

символов.

 

описания.

 

Числовой

Числовые данные, используемые

1, 2, 4 или

 

для математических вычислений,

8 байтов.

 

за исключением финансовых

 

 

расчетов (для них следует

 

 

использовать тип Денежный.

 

Дата/время

Даты и время.

8 байтов.

 

138

 

Данные константы состоят из цифр и могут содержать дополнительные символы, указывающие основание системы счисления (0 – восьмеричная, 0x –шестнадцатеричная).

Например, целые константы 3478, 06626, 0xD96 представляют одно и то же число 3478 в разных системах счисления.

Вещественные константы состоят из цифр, десятичной точки и, возможно, экспоненциальной части, которая может содержать знак и символ e.

Например,

6., 923.33, 0.8, 2.1e3, 0.1e 5,… .

Символьные константы представляют собой символы, заключенные в апострофы, например,

a , q , 1 , ? ,…

Часть символьных констант воспринимается в качестве управляющих символов ввода-вывода, например,

\n – новая строка;

\t – горизонтальная табуляция; \a – звуковой сигнал;

Строковые константы состоят из символов, заключенных в двойные кавычки, например, Linux , Windows , город Москва .

1.4.2.Операции.

Вязыке Си определены следующие операции:

1)Унарные операции:

++ увеличение на 1 (инкремент)

уменьшение на 1 (декремент)

! логическое отрицание

 

- арифметическое отрицание (унарный минус)

+ унарный плюс

15

& получение адреса операнда

* получение значения операнда по его адресу

sizeof() размер операнда в байтах

2)Бинарные операции:

a) аддитивные операции

+ сложение;

–вычитание;

b)мультипликативные операции

*умножение;

/деление;

% остаток от деления целых чисел;

с) операции отношений

равно;

! неравно;

> больше;

больше или равно;

< меньше;

меньше или равно.

d)логические операции

&& и;

|| или;

e)операции присваивания

= простое присваивание

*= умножение с присваиванием

/= деление с присваиванием

+= сложение с присваиванием

-= вычитание с присваиванием

%= остаток от деления с присваиванием

Операции отношения возвращают результат целого типа. Если отношение истинно, то это целое есть 1 и 0, если отношение ложно.

16

Почтовый адрес

 

Почтовый

 

Населенный

 

Телефон

 

индекс

 

пункт

 

 

 

 

 

 

 

 

 

 

 

 

 

Юбилейная 22

 

309511

 

Старый Оскол

 

33-67-89

 

 

 

 

Губернская 1

 

309510

 

Старый Оскол

 

43-67-20

 

 

 

 

 

 

 

9)Создание многотабличного подзапроса.

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

Это можно выполнить при помощи запроса:

SELECT [Код клиента], Фамилия, [Почтовый адрес], [Почтовый индекс], [Населенный пункт], Телефон FROM Клиенты WHERE [Код клиента] IN ( SELECT [Код клиента] FROM Договора WHERE Скидка>10);

После выполнения этого запроса, мы получим следующий результат:

Код

 

Фамилия

 

Почтовый

 

Почтовый

 

Населенн

клиента

 

 

адрес

 

индекс

 

ый пункт

 

 

 

 

 

 

 

 

 

81

 

Ломоносов

 

Холмогорская 113

 

309530

 

Воронеж

 

 

 

 

 

 

 

 

83

 

Жуков

 

Космонавтов 3

 

309510

 

Рязань

 

 

 

 

 

 

 

 

 

10)Характеристика СУБД.

База данных в СУБД Microsoft Access 2003 представляет собой единый большой объект, который объединяет такие составляющие, как таблицы, отчеты, запросы, формы и т.д., и позволяет хранить их в едином файле.

Основным структурным компонентом базы данных является таблица. Каждая таблица содержит записи определенного вида.

137

SELECT [Характеристики моделей].[Код модели], Модели.Модель, [Характеристики моделей].[Заводская цена] FROM

[Характеристики моделей] INNER JOIN Модели ON [Характеристики моделей].[Код модели] = Модели.[Код модели] WHERE [Характеристики моделей].[Заводская цена] = =(SELECT MIN(Заводская цена) from [Характеристики моделей]);

После выполнения этого запроса, мы получим следующий результат:

Код модели

 

Модель

 

Заводская цена

 

 

 

 

12579

 

Corola LiftbackXL

 

35 700,00р.

 

 

 

 

 

8)Создание однотабличного подзапроса.

Допустим, необходимо выбрать все сведения о клиенте из таблицы Клиенты, который находится в том же населенном пункте, что и клиент Мирчуткина.

Это можно выполнить при помощи запроса:

SELECT * FROM Клиенты WHERE [Населенный пункт] IN (SELECT [Населенный пункт] FROM Клиенты WHERE Фамилия =“Мирчуткина”);

После выполнения этого запроса, мы получим следующий результат:

Код

 

Имя, отчество

 

Фамилия

клиента

 

 

 

 

 

 

 

 

 

 

 

79

 

Настасья Кириловна

 

Мирчуткина

 

 

 

 

 

80

 

Павел Иванович

 

Чичиков

 

 

 

 

 

136

Логические операции возвращают значения целого типа 1 или 0, соответствующие истине или лжи соответственно. Например,

if (y != 0 && x 1000) z = x / y;

здесь переменной z будет присвоено значение выражения x / y, когда одновременно y не равен нулю, а x больше чем 1000.

Кроме того, имеются еще такие операции:

Скобки (круглые и квадратные, играют роль бинарных операций)

Запятая (например, выражение (х=3, 3*х) равно 9)

Условная трехместная операция (например, (x<0? –x : x)

– абсолютная величина x)

Операции сдвига и поразрядные операции (определены только для битового представления целочисленных операндов)

Приоритет операций:

 

1)Операция скобки

 

2)Унарные операции

 

3)Мультипликативные операции

 

4)Аддитивные операции

 

5)Операции отношения ( <, <=, >, >= )

 

6)Операции отношения ( = =, != )

 

7)Логическая операция ( && и )

 

8)Логическая операция ( || или )

 

9)Условная операция

 

10)Операции присваивания.

 

Примеры:

 

1)x=2; b=2; a=x+++b; результат: a=4, x=3

(постфиксная

форма)

 

2)x=2; b=2; a=++x+b; результат: a=5, x=3

(префиксная

форма)

 

17

 

3)6>=44 результат: 0

4)7/2 результат: 3

5)7%2 результат: 1

6)5>2 || 4>7 результат: 1

7)a=1; b=1; c=a || !b && a; результат: 1

1.4.3.Типы данных.

Вязыке Си все переменные и функции перед их первым использованием типизируются посредством описаний, например,

int x, y = 0;

здесь описаны две переменные x и y целого типа, причем переменной y присваивается начальное значение 0.

ВСи используются следующие основные типы данных:

1)целый тип;

int – целый

short int – короткий целый

long int – длинный целый

unsigned int – беззнаковый целый

2)вещественный тип;

float – вещественный одинарной точности

double – вещественный удвоенной точности

long double - вещественный максимальной точности

3)символьный тип;

char – символы с кодом от -127 до 128

unsigned char –символы с кодом от 0 до 255

4)тип void - неопределенный тип, используется при определении функций, не возвращающих значения.

Значениями символьных переменных являются символьные константы, они эквивалентны целым числам, совпадающими с кодами этих символов.

18

Модель

Обивка

Заводская цена

 

 

 

 

Corola Kombi

Велюр

46 400,00р.

 

 

 

 

Corola CompactGT

Кожа

41 100,00р.

 

 

 

 

Corola LiftbackGT

Ткань

39 200,00р.

 

 

 

 

Corola CompactXL

Велюр

37 900,00р.

 

 

 

 

Corola LiftbackXL

Ткань

35 700,00р.

 

 

 

 

 

c) Использование агрегатных функций.

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

Это можно выполнить при помощи запроса:

SELECT [Характеристики моделей].Обивка, COUNT(*) AS [Количество моделей] FROM [Характеристики моделей] GROUP BY [Характеристики моделей].Обивка

ORDER BY COUNT(*);

После выполнения этого запроса, мы получим следующий результат:

Обивка

 

Количество моделей

 

 

Кожа

 

1

 

 

Ткань

 

2

 

 

Велюр

 

2

 

 

 

d) Использование агрегатных функций.

Допустим, необходимо выбрать из таблиц

Характеристики моделей, Модели код и название модели,

имеющую минимальную заводскую цену.

Это можно выполнить при помощи запроса:

135

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

Это можно выполнить при помощи запроса:

SELECT Клиенты.Фамилия, SUM(Договора.Количество) AS [Всего заказов] FROM Клиенты INNER JOIN Договора ON Клиенты.[Код клиента] = Договора.[Код клиента] GROUP BY Клиенты.Фамилия HAVING SUM(Договора.Количество)<=10 ;

После выполнения этого запроса, мы получим следующий результат:

Фамилия

 

Всего заказов

 

 

Жуков

 

10

 

 

Мирчуткина

 

10

 

 

 

b) Сортировка данных.

Допустим, необходимо выбрать сведения о моделях из таблицы Характеристики моделей с указанием наименований моделей из таблицы Модели, отсортированных в порядке убывания заводской цены.

Это можно выполнить при помощи запроса:

SELECT Модели.Модель, [ Характеристики моделей].Обивка, [Характеристики моделей].[Заводская цена] FROM [Характеристики моделей] INNER JOIN Модели ON

[Характеристики моделей].[Код модели] = Модели.[Код модели] ORDER BY [Характеристики моделей].[Заводская цена] DESC ;

После выполнения этого запроса, мы получим следующий результат:

134

Например, записи: x=’A’ и x=65 для переменной x типа char эквивалентны, так как код символа ‘A’ по таблице

ASCII равен 65.

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

1.4.4. Функции ввода-вывода.

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

В частности, функции printf() и scanf() осуществляют форматированный вывод на стандартное устройство вывода (монитор) и ввод со стандартного устройства ввода (клавиатура). Обращение к функции printf() выглядит следующим образом:

printf(format, list);

где строка format выводится без изменений посимвольно, за исключением управляющих символов ввода-вывода и спецификаций формата, начинающихся с символа «%». Последние задают тип и способ преобразования выводимых данных из списка list. Для задания типа могут использоваться следующие символы:

d, i- для целых десятичных чисел со знаком;

u - для целых десятичных чисел без знака;

19

o - для восьмеричных чисел без знака;

x - для шестнадцатеричных чисел без знака;

f - для вещественных чисел со знаком с фиксированной точкой;

e - для вещественных чисел со знаком в экспоненциальной форме;

g - для вещественных чисел двойной точности со знаком;

c - одиночные символы;

s - строки символов.

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

Так например, если i = 10, x = 1,45 и y = 123,47, то результатом работы следующей конструкции

printf( i = %d, x = %f, y = %f , i, x, y);

будет вывод

i = 10, x = 1.45, y = 123.47

Спецификации формата функции scanf() те же самые, что и для функции printf(), однако список list содержит уже не имена переменных, а их адреса. Например, функция

scanf ( %d %f , &i, &x);

осуществляет ввод с клавиатуры значений переменных i и x целого и вещественного типов соответственно.

Если же вводится строка символов, то необходимо использовать спецификацию формата «%s», но применять операцию & (адрес) уже не надо.

1.4.5. Блоки.

Любая последовательность операторов, заключенная в

20

d) Создание таблиц на основе имеющихся.

Допустим необходимо создать новую таблицу Предлагаемые модели, куда должны войти столбцы Код модели, Модель из таблицы Модели и столбец Цены без НДС, который будет состоять из суммы столбцов

Заводская цена, Транспортные издержки, Предпродажная подготовка из таблицы Характеристики моделей.

Это можно выполнить при помощи запроса:

SELECT [Характеристики моделей].[Код модели], Модели.Модель, [Характеристики моделей].[Заводская цена]+ [ Характеристики моделей].[Транспортные издержки]+ [ Характеристики моделей].[Предпродажная подготовка]

AS [Цены без НДС] INTO [Предлагаемые модели] FROM [Характеристики моделей] INNER JOIN Модели ON [Характеристики моделей].[Код модели] = Модели.[Код модели];

После выполнения этого запроса и подтверждения создания таблицы, мы получим таблицу с названием Цены без НДС:

Код модели

 

Модель

 

Цены без НДС

 

 

 

 

 

12410

 

Corola Kombi

 

47 605,00р.

 

 

 

 

12579

 

Corola LiftbackXL

 

36 755,00р.

 

 

 

 

12580

 

Corola LiftbackGT

 

40 505,00р.

 

 

 

 

12651

 

Corola CompactXL

 

39 055,00р.

 

 

 

 

12653

 

Corola CompactGT

 

42 180,00р.

 

 

 

 

 

7)Выборка данных.

a)Группировка данных.

133