- •Содержание
- •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Запись данных в текстовый файл. Закрытие файла.
1.4Характеристики языков программирования.
Поскольку ЭВМ - это автомат, являющийся формальным исполнителем алгоритмов, поэтому для решения какой-либо задачи с помощью ЭВМ ей необходимо задать соответствующий алгоритм. Поскольку этот алгоритм предварительно надо ввести в память машины, а затем он должен интерпретироваться (т.е. восприниматься и исполняться) аппаратным путем, то этот алгоритм должен быть записан на специальном языке, понятном машине - такой язык принято называть машинным языком, а запись алгоритма на таком языке называется машинной программой. При этом разные типы ЭВМ могут иметь разные языки, так что программа, написанная на языке одной ЭВМ, может не быть машинной программой для другой ЭВМ. Таким образом, каждая ЭВМ способна непосредственно выполнять только программы, записанные на ее собственном машинном языке.
Необходимость аппаратной реализации алгоритма, подлежащего выполнению, особенности элементной базы ЭВМ, вопросы их экономичности и т.д. приводят к тому, что язык машины довольно неудобен для человека. Например, любая машинная программа в конечном счете должна быть записана с помощью всего двух различных символов - цифр 0 и 1, так что выразительные возможности машинных языков чрезвычайно бедны.
Кроме того, каждая ЭВМ может непосредственно выполнять весьма ограниченный набор операций, зафиксированный ее аппаратурой. В этот набор, для избежания чрезмерного усложнения аппаратуры, включается сравнительно небольшое число достаточно простых операций. Важно лишь, чтобы этот набор обеспечивал универсальность ЭВМ, т.е. чтобы с помощью этих операций можно было реализовать любой процесс обработки данных (хотя для решения некоторых задач ресурсов данной ЭВМ, например емкости ее памяти, может оказаться недостаточно). Бедность набора машинных операций вынуждает программиста разрабатывать алгоритм решения интересующей его задачи до весьма высокого уровня детализации, доводя ее до планирования соответствующей последовательности машинных операций.
Ограниченные возможности аппаратуры приводят к тому, что каждая законченная фраза на машинном языке (называемая командой) может содержать в себе весьма ограниченный объем информации. Как мы видели в прошлом семестре, каждая машинная операция задается ее цифровым кодом и адресами операндов. Такой способ задания информации в командах приводит к тому, что машинная программа получается очень ненаглядной и трудно понимаемой для человека - даже в том случае, если он является автором этой программы.
Для устранения этих трудностей, а значит для облегчения работы программиста и повышения надежности создаваемых программ (т.е. для уменьшения вероятности допущения в ней ошибок), были созданы специальные языки для записи алгоритмов, более удобные для человека, которые получили название алгоритмические языки или языки программирования высокого уровня (по сравнению с машинным языком, который тоже является языком программирования).
Основные отличия алгоритмических языков от машинных языков со стоят в следующем:
алгоритмический язык обладает гораздо большими выразительными возможностями, т.е. его алфавит значительно шире алфавита машинного языка, что существенно повышает наглядность текста программы;
набор операций, допустимых для использования, не зависит от набора машинных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;
формат предложений достаточно гибок и удобен для использования, что позволяет с помощью одного предложения задать достаточно содержательный этап обработки данных;
требуемые операции задаются в удобном для человека виде, например с помощью общепринятых математических обозначений;
для задания операндов операций используемым в алгоритме данным присваиваются индивидуальные имена, выбираемые программистом, и ссылка на операнды производится главным образом путем их имен;
в языке может быть предусмотрен значительно более широкий набор типов данных по сравнению с набором машинных типов данных.
Таким образом, алгоритмический язык в значительной мере является машинно-независимым.
Языки программирования характеризуются двумя основными параметрами:
Мощностью, которая определяется разнообразием задач, решение которых может быть достигнуто с помощью этого языка.
Уровнем, который определяется легкостью решения сложных задач с помощью этого языка. Чем проще реализуются в синтаксисе языка сложные операции и понятия, тем меньше объем получаемых на этом языке программ.
Можно сказать, что чем мощнее язык, тем ниже его уровень. Самым мощным языком является машинный код.
Существуют универсальные языки программирования, позволяющие решать задачи из различных прикладных областей. К таким можно отнести не только языки низкого уровня, таких как машинный код, ассемблер, но и языки высокого уровня, например, Паскаль, Бейсик, Си.
Специализированные языки предназначены для решения задач в какой-либо одной области. Например, Кобол - для решения экономических задач, а Лисп - для обработки данных списковой структуры.
Указанные выше признаки - мощность и уровень определяют следующие свойства языка:
Надежность - обеспечивает низкий уровень ошибок при написании программ, позволяет большинство ошибок выявить на этапе трансляции (Паскаль).
Простота - легкость понимания семантических конструкций языка (Паскаль, Бейсик).
Гибкость - легкость выражения необходимых действий (Си).
Полнота - способность обеспечивать решение класса задач предметной области.
Мобильность - независимость от аппаратных средств (Си).
Эффективность - эффективные коды реализации (Фортран, Си).
