
- •Содержание
- •1.Введение
- •Рекомендуемая литература
- •1.1Этапы решения инженерных задач с помощью эвм.
- •1.2Алгоритмы решения задач.
- •1.2.1Понятие алгоритма, его свойства.
- •Свойства алгоритма
- •1.2.2Обозначения элементов алгоритмов (блоки).
- •1.2.3Базовые управляющие конструкции.
- •Основные блочные символы.
- •Базовые алгоритмические структуры.
- •1.2.4Некоторые стандартные приемы алгоритмизации.
- •1. Поменять местами содержимое двух переменных (три ведра).
- •Определить, имеют ли две переменные один знак.
- •Проверить делимость числа на 3.
- •Алгоритм обработки массива.
- •Найти сумму элементов массива.
- •Найти максимальный элемент массива.
- •Использование флага наступления события.
- •Построить таблицу значений функции на отрезке и найти ее максимальное значение.
- •1.3Системы программирования.
- •1.3.1Состав.
- •1.3.2Язык программирования, алфавит, синтаксис, семантика.
- •1.3.3Реализация языка.
- •1.4Характеристики языков программирования.
- •1.5Целевое назначение систем программирования.
- •1.5.1Машинно-ориентированные.
- •1.5.1.1Системы символического кодирования.
- •1.5.1.2Ассемблеры.
- •1.5.2Машинно-независимые.
- •1.5.2.1Процедурно-ориентированные.
- •1.5.2.2Проблемно-ориентированные.
- •1.6Этапы обработки программы машиной.
- •2.1История создания.
- •2.3Алфавит, структура программы.
- •2.3.1Алфавит.
- •2.3.2Структура программы.
- •2.4Типы данных Си. Константы. Переменные. Описания переменных.
- •2.5Выражения в языке Си.
- •2.5.1Арифметические операции и выражения.
- •2.5.2Логические операции и выражения.
- •2.5.3Некоторые другие операции в языке Си.
- •2.5.3.1Операция присваивания.
- •2.5.3.2Условная операция.
- •2.5.3.3Операция последовательного вычисления (запятая).
- •2.5.3.4Специфические формы операции присваивания.
- •2.5.3.5Приоритет выполнения операций.
- •2.5.4Стандартные функции.
- •2.5.4.1Правила записи.
- •2.5.4.2Основные математические функции.
- •2.6.2.2Оператор бесформатного ввода с клавиатуры.
- •2.6.2.3Функция форматного вывода на экран.
- •2.6.2.4Функция ввода символа с клавиатуры.
- •2.6.3Составной оператор.
- •3.Операторы управления.
- •3.1Условные операторы.
- •3.1.1Оператор if-else.
- •3.1.2Оператор else-if.
- •3.2Оператор-переключатель. Оператор break.
- •3.3Операторы для организации цикла.
- •3.3.1Оператор цикла с предусловием (while).
- •3.3.2Оператор цикла с постусловием (do).
- •3.3.3Оператор цикла с параметром (for) или пошаговый.
- •3.3.4Вложенные циклы.
- •3.3.5Операторы break и continue.
- •3.3.6Оператор безусловного перехода.
- •4.Использование массивов. Указатели.
- •4.1Массивы.
- •4.1.1Понятие массива. Описание массива.
- •4.1.2Инициализация массивов.
- •4.1.2.1Инициализация массивов при их объявлении.
- •4.1.2.2Инициализация массивов вводом с клавиатуры.
- •4.1.3Вывод массивов.
- •4.1.4Работа с массивами.
- •4.2Указатели.
- •4.2.1Адреса и указатели.
- •4.2.2Массивы и указатели.
- •4.2.3Строки и указатели.
- •5.Функции пользователя в языке Си.
- •5.1Назначение функций. Описание функции.
- •5.2Обращение к функции. Прототип функции. Область видимости и время жизни переменных.
- •5.3Правила соответствия формальных параметров и фактических аргументов.
- •5.4Передача данных по значению и по адресу. Функция scanf().
- •5.5Использование массивов в качестве аргументов функции.
- •Int na, nb; // количества введенных элементов этих массивов
- •Vvod_mas1(&na,a) // Ввод количества элементов na и массива a
- •Vvod_mas1(&nb,b) // Ввод количества элементов nb и массива b
- •If password("Мой пароль")
- •6.Работа с внешними файлами в Си.
- •6.1Файловый указатель. Открытие файла.
- •6.2Чтение данных из текстового файла.
- •6.3Запись данных в текстовый файл. Закрытие файла.
2.1История создания.
Си - универсальный язык программирования с компактным способом записи выражении, современными механизмами управления структурами данных и богатым набором операторов. Си не является языком "очень высокого уровня", ни специализированным языком для какой-то предметной области. Но благодаря отсутствию ограничений и универсальности он удобнее и эффективнее для многих задач, чем предположительно более мощные языки.
Самым первым в ряду предшественников Си следует считать язык Алгол-60, разработанный в 1960 г. Международным комитетом. В Алголе впервые большое внимание было уделено модульной структуре программы. На базе Алгола в 1963 году возник язык CPL (Conbined Programing Language - комбинированный язык программирования) - совместная разработка Кембриджского и Лондонского университетов.
Язык BCPL, созданный Мартином Ричардом в 1967 г., был получен выделением из CPL его основных свойств. Ещё большее упрощение представлял собой язык В (1970 г Кен Томпсон, Bell Laboratories). Но экономия средств языков BCPL и В привела к тому, что они стали ограниченными, пригодными только для узкого круга задач.
Язык Си был создан в 1972 г Денисом Ритчи (Bell Laboratories) как инструментальное средство операционной системы UNIX. Достижением при разработке языка Си было восстановление потерянной общности за счёт удачной системы типов данных, но без потери простоты, что и было целью разработки языка CPL.
Язык Си предназначен для системного программирования. Дело в том, что, во-первых, это относительно низкоуровневый язык, который для достижения максимальной эффективности использования ЭВМ позволяет определить каждую деталь в логике программы, а, во-вторых, это относительно высокоуровневый язык, скрывающий подробности архитектуры ЭВМ и, таким образом, повышающий эффективность программирования
В языке Си нет никаких средств ввода-вывода и каких-либо методов доступа к файлам, т.к. всё это - механизмы высокого уровня, которые в Си должны быть обеспечены исключительно с помощью явно вызываемых функций.
2.2
2.3Алфавит, структура программы.
Программа - это рассказ машине о тех действиях, которые ей нужно совершить. Как любой рассказ, она состоит из предложений или инструкций, записанных в некотором алфавите.
2.3.1Алфавит.
Предложения любого языка пишутся на основе некоторого алфавита, т.е. набора символов, используемых для записи инструкций языка, которые компилятор переводит в машинный код. В С++ к алфавиту относятся все буквы латинского алфавита, цифры от 0 до 9, символы кириллицы и специальные символы, а именно все, которые есть на клавиатуре ЭВМ, в частности: . , ; : ' " ? / * + - _ ! @ & { } ( ) [ ] и др. Необходимо отметить, что компилятор языка С++ отличает большие и маленькие буквы латинского алфавита.
2.3.2Структура программы.
Программа на языке C++ может состоять из одного или нескольких программных модулей (файлов), которые компилируются отдельно, а затем собираются компоновщиком в исполняемый файл. Программа состоит из операторов и комментариев.
Комментарии в C++ предназначены для удобства чтения программы и содержат пояснения к тексту инструкций. Они игнорируются транслятором и обозначаются в программе следующими символами:
// в любом месте строки, действителен до конца строки
/* в начале комментария и */ в конце, действителен в любом месте текста
Операторы языка делятся на исполняемые и неисполняемые. Неисполняемые содержат дополнительные инструкции компилятору для перевода текста в машинный код. Эти инструкции отсутствуют в exe-модуле. Исполняемые операторы непосредственно переводятся в машинный код.
Операторы состоят из лексем - наименьших единиц языка, несущих смысловую нагрузку. В Си существует 6 классов лексем: идентификаторы, ключевые слова, константы, строковые константы, операции и разделители (пробелы, табуляции и некоторые другие).
Основными видами операторов, определяющих структуру программы, являются:
директивы препроцессора;
объявления функций;
описания переменных - (для хранения данных);
описания (определения) функций - (описывают вычисления);
Сразу напишем пример программы.
Пример 1. Программа, вычисляющая площадь треугольника:
#include <iostream.h> // Директива препроцессора
float pl(float a, float b); //Объявление (прототип) функции pl()
// Описание функции main
v
имя
oid
main() //
Заголовок описания функции main
{
float katet1,katet2; // описание переменных
cout << "Введите катеты (в см): "; // Инструкции,
cin >> a,b; // описывающие
cout << "Площадь треугольника =" // действия
<< Pl(katet1,katet2) << "см*см\n";
}
// Описание функции pl()
/**** Расчет площади прямоугольного треугольника ***********
****по его катетам a и b . Возвращает площадь ********/
f
Список
пар-ров
Тело
функции
pl()
s=a*b/2; // Инструкции,
return s; // описывающие
} // действия
Рассмотрим указанные выше типы операторов.
Препроцессор - программа, которая выполняется до компиляции. Она читает текст программы, преобразует его и выдает компилятору. Директивы препроцессора предназначены для того, чтобы писать более читаемые исходные тексты без потери эффективности.
Описания (или определения, definition) функций следуют одно за другим в произвольном порядке и имеют вид (синтаксис)
Тип имя([список параметров]) -заголовок
Тело
функции
исполняемые операторы (инструкции,
описывающие действия)
}
(квадратные скобки в наших правилах записи операторов, т.е. в синтаксисе, будут означать необязательные параметры).
Имя (идентификатор) - последовательность латинских букв и цифр, начинающихся с буквы, символ "_" - тоже буква. Строчные и прописные буквы различаются. Длина имени - не больше 32 символов.
Имена функциям дает программист, однако одна из них должна иметь имя main(), поскольку именно с нее всегда начинается выполнение программы. В примере описаны 2 функции - main() и pl(). Выполнение начинается с функции main(), из которой вызывается функция pl().
Тип указывает на тип вычисляемого (возвращаемого) функцией значения. Если функция ничего не возвращает, то в качестве типа пишется слово void.
Любая функция должна быть описана до обращения к ней (до вызова), чтобы компилятор мог понять, правильно ли это обращение. Если описание указано после обращения, в начале программы (до функции main() ) должен быть указано объявление этой функции (прототип, declaration) в виде ее заголовка с ";" в конце.
Для стандартных функций прототипы уже имеются в специальных header-файлах, которые поставляются вместе с другими файлами пакета Си++ и имеют расширение ".h". Чтобы не указывать самостоятельно прототипы используемых стандартных функций, можно с помощью директивы препроцессора #include включить этот файл в текст программы. Например, прототипы стандартных потоков ввода и вывода cin и cout находятся в файле iostream.h . При выполнении директивы
#include <iostream.h>
препроцессор вставит на место этой строки содержимое файла iostream.h, не изменяя нумерацию строк в тексте. Таким образом соответствующие прототипы появятся в тексте программы.