Алгоритмические языки программирования это
Алгоритмический язык программирования
Алгоритмический язык программирования — формальный язык, используемый для записи, реализации и изучения алгоритмов. В отличие от большинства языков программирования, алгоритмический язык не привязан к архитектуре компьютера, не содержит деталей, связанных с устройством машины.
Для изучения основ алгоритмизации применяется так называемый Русский алгоритмический язык (школьный алгоритмический язык), использующий понятные школьнику слова на русском языке.
Алголо-подобный алгоритмический язык с русским синтаксисом был введён в употребление академиком А. П. Ершовым в середине 1980-х годов, в качестве основы для «безмашинного» курса информатики.
Основные служебные слова алгоритмического языка
- алг (алгоритм)
- арг (аргумент)
- рез (результат)
- нач (начало) — начало алгоритма
- кон (конец) — конец алгоритма
- дано — исходные данные в произвольной форме
- надо — цель алгоритма
- утв
- цел (целый)
- вещ (вещественный)
- сим (символьный)
- лит (литера) — строка
- лог (логический)
- таб(таблица) — для обозначения массива
- длин (длина) — количество элементов массива
- если
- то
- иначе
- все
- выбор
- при
- знач
- нц (начало цикла)
- кц (конец цикла)
- пока
- для
- от
- до
- шаг
Логические функции и значения для составления выражений
- и
- или
- не
- да
- нет
- ввод
- вывод
Общий вид алгоритма
Часть алгоритма от слова алг до слова нач называется заголовком , а часть, заключенная между словами нач и кон — телом алгоритма .
В предложении алг после названия алгоритма в круглых скобках указываются характеристики (арг, рез) и тип значения (цел, вещ, сим, лит или лог) всех входных (аргументы) и выходных (результаты) переменных. При описании массивов (таблиц) используется служебное слово таб, дополненное граничными парами по каждому индексу элементов массива.
В записи алгоритма ключевые слова обычно подчёркиваются либо выделяются полужирным шрифтом. Для выделения логических блоков применяются отступы, а парные слова начала и конца блока соединяются вертикальной чертой.
Основные алгоритмические структуры
Подробное описание основных алгоритмических структур приведено в этой статье. Ниже приводятся шаблоны составления этих структур на алгоритмическом языке.
Неполная развилка
Общее понятие алгоритма. Управляющие конструкции алгоритмического языка. Понятие переменной
Алгоритмические языки
Программирование начиналось с записи программ непосредственно в виде машинных команд (в кодах, как говорят программисты). Позже для облегчения кодирования был разработан язык Ассемблера, который позволяет записывать машинные команды в символическом виде. Например, программисту не нужно помнить числовой код операции сложения, вместо этого можно использовать символическое обозначение ADD . Язык Ассемблера зависит от системы команд конкретного компьютера. Он достаточно удобен для программирования небольших задач, требующих максимальной скорости выполнения. Однако крупные проекты разрабатывать на языке Ассемблера трудно. Главная проблема состоит в том, что программа , написанная на Ассемблере, привязана к архитектуре конкретного компьютера и не может быть перенесена на другие машины. При усовершенствовании компьютера все программы на Ассемблере приходится переписывать заново.
Почти сразу с возникновением компьютеров были разработаны языки высокого уровня, т.е. языки, не зависящие от конкретной архитектуры. Для выполнения программы на языке высокого уровня ее нужно сначала перевести на язык машинных команд. Специальная программа , выполняющая такой перевод, называется транслятором или компилятором. Оттранслированная программа затем выполняется непосредственно компьютером. Существует также возможность перевода программы на промежуточный язык , не зависящий от архитектуры конкретного компьютера, но тем не менее максимально приближенный к языку машинных команд. Затем программа на промежуточном языке выполняется специальной программой, которая называется интерпретатором. Возможен также вариант компиляции «на лету» (Just In Time Compilation ), когда выполняемый фрагмент программы переводится с промежуточного языка на язык машинных команд непосредственно перед выполнением.
Наиболее распространенные компилируемые языки — это Си , C++, Фортран, Паскаль . Интерпретируемые и компилируемые на лету языки — это в основном объектно-ориентированные языки, такие как Java , Visual Basic и C#. Все они вначале переводятся на промежуточный язык : для Java это так называемый байткод языка Java , для Visual Basic и C# — так называемый промежуточный язык ( Intermediate Language или просто IL), являющийся одним из основных компонентов платформы «. Net » фирмы Microsoft. Промежуточный язык может интерпретироваться специальным исполнителем (например, виртуальной Java -машиной), но, как правило, в современных системах применяется компиляция на лету, что позволяет достичь большего быстродействия.
Исторически одним из первых языков высокого уровня был Фортран. Он оказался исключительно удачным — простым и в то же время очень эффективным. До сих пор большая часть научных и инженерных программ написана на Фортране. Тем не менее, в последние 20 лет программисты отдают предпочтение языку Си и связанной с ним линии объектно-ориентированных языков — C++, Java и C#.
Другой значительной вехой в истории алгоритмических языков является разработка языка Алгол -60 (расшифровывается как aлгоритмический язык — ALGOrithmic Language ). Возникновение языка Алгол -60 связано с развитием структурного подхода к программированию, в котором используется вложение конструкций языка друг в друга. Так, основная единица языка — оператор — может быть простым или составным, т.е. состоящим в свою очередь из нескольких операторов, заключенных в блок с помощью ключевых слов begin и end . Внутри блока можно описывать локальные переменные, недоступные извне блока, и даже подпрограммы или функции.
Язык Алгол -60 способствовал развитию алгоритмических языков, его наследником является, например, Паскаль и вся линия связанных с ним языков: Modula-2, Oberon и Delphi. Тем не менее, Алгол -60 оказался далеко не таким удачным, как Фортран. В нем присутствовали непродуманные решения, в частности, возможность вложения подпрограмм внутрь других подпрограмм, а также неудачный механизм передачи параметров подпрограмм. Из-за этого Алгол -60 не был реализован на практике в полном соответствии со стандартом (в отличие от языков типа Алгамс, отступавших от стандарта в сторону простоты и удобства использования). Язык Паскаль появился тоже как коррекция Алгола-60, но, к сожалению, унаследовал его главное неудачное решение — вложенность подпрограмм друг в друга. Также в первоначальном варианте языка Паскаль отсутствовала возможность разбиения программы на файлы. Эти недостатки были затем исправлены автором Паскаля, замечательным швейцарским ученым и педагогом Никлаусом Виртом, в языках Modula-2 и Oberon . Но, к сожалению, программистское сообщество проигнорировало язык Oberon , остановившись на немного улучшенном варианте языка Паскаль . В настоящее время Паскаль , как правило, используется для обучения программированию, но не в практической работе.
Наконец, самый успешный язык программирования — язык Си и связанная с ним линия объектно-ориентированных языков: C++, Java , C#. В отличие от Алгола-60, язык Си был создан не теоретиками, а практическими программистами, обладающими при этом высокой математической культурой. Язык был разработан в конце 60-х годов XX века. Он впервые позволил реально избавиться от Ассемблера при создании операционных систем. Например, практически весь текст операционной системы Unix написан на языке Си и, таким образом, не зависит от конкретного компьютера. Главным достоинством Си является его простота и отсутствие псевдонаучных решений (таких, как вложенность блоков программ друг в друга: в Си функция не может содержать внутри себя другую функцию, а переменные четко разделяются на глобальные и локальные — не так, как в Алголе, где локальные переменные подпрограммы являются глобальными для всех вложенных в нее подпрограмм). Просто и ясно описан механизм передачи параметров в функцию (только по значению). Программист, создающий программу на Си , всегда четко понимает, как эта программа будет выполняться. Понятие указателя, статические и автоматические (стековые) переменные языка Си максимально близко отражают устройство любого современного компьютера, поэтому программы на Си эффективны и удобны для отладки.
В настоящее время подавляющая часть программ пишется на языках Си и C++. Интерфейс любой операционной системы (так называемый API — Application Programming Interface ), т.е. набор системных вызовов, предназначенных для разработчиков прикладных программ, как правило, представляет собой набор функций на языке Си . Наконец, современные объектно-ориентированные языки также основаны на языке Си . Это язык C++, занимающий промежуточное положение между традиционными и объектно-ориентированными языками, а также объектно-ориентированные языки Java и C#.
В курсе будем использовать псевдокод для неформальной записи алгоритмов, а также языки Си , C++ и C# для практического программирования. Применение объектно-ориентированных языков C++ и C# значительно облегчает программирование оконных приложений в системах типа Windows , тогда как при разработке программ, не связанных с графическим интерфейсом (например, математических расчетов), можно обойтись и более простым языком Си .
Алгоритмические языки программирования это
Алгоритмические языки и программирование
кафедра теоретической механики и сопротивления материалов (СМиТМ);
лекции, семинары, лабораторные работы: к.т.н., доцент Чеканин Владислав Александрович.
О дисциплине
Дисциплина «Алгоритмические языки и программирование» реализуется в 3-4 семестрах кафедрой теоретической механики и сопротивления материалов (450Б).
Основными задачами изучения дисциплины являются:
- освоение студентами основ программирования с использованием алгоритмических языков высокого уровня;
- освоение студентами основ построения алгоритмов и разработки программного обеспечения для решения прикладных инженерных задач.
Промежуточная аттестация осуществляется в форме зачёта в 3-м семестре и экзамена в 4-м семестре.
Зачёт
- Необходимо приходить строго в указанное время .
- При себе нужно иметь зачётную книжку.
Лабораторные работы
- Шаблон отчёта по лабораторной работе (DOC)
Материалы лекций
- Программа на языке Prolog (файл .PRO)
Список рекомендуемой литературы
- Чеканин В.А., Чеканин А.В. Основы алгоритмизации и программирования на языках C и C++: учеб. пособие. – М.: ФГБОУ ВО «МГТУ «СТАНКИН», 2016. – 303 с.
(в библиотеке код 681.306 Ч-37). - Чеканин В.А., Чеканин А.В., Волков А.Э. Основы программирования на алгоритмическом языке высокого уровня: учебное пособие. – М.: МГТУ «СТАНКИН», 2011. – 136 с. (методичка в библиотеке № 651).
- Алиев Р.С. Процедурное программирование на языке С++: Конспект лекций. – М.: МГТУ «Станкин», 2007. – 113 с.
- Подбельский В.В., Фомин С.С. Программирование на языке Си. – М.: Финансы и статистика, издания 2003-2007 (издания аналогичны). – 600 с.
Особенности работы в среде Microsoft Visual Studio
(при установке необходимо выбрать опцию «Разработка классических приложений на С++»)
Примечание. Для корректного отображения текста на русском языке в среде Microsoft Visual Studio Community 2017 необходимо сохранить файл главного модуля программы (файла с расширением .cpp, содержащего функцию main) в кодировке Windows-1251. Для этого в главном меню выбрать «Файл->Сохранить *.cpp как. » (здесь символом «*» обозначено имя файла). После чего в появившимся окне справа от «Сохранить» нажать на стрелку и выбрать «Сохранить с кодировкой» и подтвердить замену файла. В окне «Дополнительные параметры сохранения» выбрать кодировку «Кириллица (Windows) — кодовая страница 1251» и нажать кнопку «OK». После чего скомпилированная программа будет корректно отображать текст на русском языке в консольном окне.
#include
#include
#include
int main(void)
<
setlocale(LC_ALL, «RUS»);
Алгоритмические языки программирования.
Компьютер может выполнять программу только в том случае, если содержащиеся в ней команды представлены в двоичном машинном коде, т.е. выражены на языке, алфавит которого состоит из логических единиц и нулей. Для первых компьютеров программы составлялись непосредственно в машинных кодах, что требовало высокой квалификации программистов и больших затрат труда, поэтому уже в 40-х годах началась разработка языков программирования, которые по своей лексике были бы максимально приближены к естественному языку человека. Такие языки программирования называются алгоритмическими.
Промежуточным шагом к разработке алгоритмических языков стал язык Ассемблер. В Ассемблере команды представляются не двоичными числами, а в виде сочетаний символов (мнемоническими кодами), по которым можно воспроизвести смысл команды, что значительно устраняет трудности и недостатки программирования на машинном языке. Однако Ассемблеру присущи и недостатки — это машинноориентированный язык, и для каждого компьютера создается свой язык Ассемблера. Программирование на Ассемблере требует от программиста хорошего знания архитектуры (устройства) компьютера и сопряжено со значительными трудозатратами, в то же время именно с помощью Ассемблера можно наилучшим образом использовать в программе ресурсы компьютера (память, быстродействие), поэтому Ассемблер по-прежнему широко распространен среди профессиональных программистов.
Первым алгоритмическим языком стал Fortran, созданный в 1957г. специалистами фирмы IBM под руководством Джона Бекуса. Сейчас существует большое множество алгоритмических языков: Pascal, C, Algol, PL1, Basic, Lisp, Prolog и многие другие.
Алгоритмические языки и ассемблеры относятся к языками символьного кодирования, т.е. к языкам, которые оперируют не машинными кодами, а условными символьными обозначениями, поэтому программы, составленные на этих языках, не могут быть непосредственно выполнены на компьютере. Чтобы такая программа заработала, ее текст нужно преобразовать в машинные коды. Для этого существуют специальные программы-переводчики (трансляторы). Различают 2 вида трансляторов- компилятор и интерпретатор. Компилятор транслирует программу сразу целиком, и лишь после этого возможно ее выполнение. Интерпретатор — это более простой транслятор, он последовательно транслирует операторы программы и так же по частям ее выполняет.
21) Структура программы на языке С/C++.
Программа на языке С++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции. Простейшее определение функции имеет следующий формат:
Как правило, функция используется для вычисления какого-либо значения, поэтому перед именем функции указывается его тип. Ниже приведены самые необходимые сведения о функциях:
- если функция не должна возвращать значение, указывается тип void:
- тело функции является блоком и, следовательно, заключается в фигурные скобки;
- функции не могут быть вложенными;
- каждый оператор заканчивается точкой с запятой (кроме составного оператора).
Пример структуры программы, содержащей функции main, fl и f2:
Программа может состоять из нескольких модулей (исходных файлов).
Несколько замечаний о вводе/выводе в C++
В языке С++ нет встроенных средств ввода/вывода — он осуществляется с помощью функций, типов и объектов, содержащихся в стандартных библиотеках. Используется два способа: функции, унаследованные из языка С, и объекты С++.
Основные функции ввода/вывода в стиле С:
int scanf (const char* format, . ) // ввод
int printf(const char* format, . ) // вывод
Они выполняют форматированный ввод и вывод произвольного количества величин в соответствии со строкой формата format. Строка формата содержит символы, которые при выводе копируются в поток (на экран) или запрашиваются из потока (с клавиатуры) при вводе, и спецификации преобразования, начинающиеся со знака %, которые при вводе и выводе заменяются конкретными величинами.
Пример программы, использующей функции ввода/вывода в стиле С:
#include
int main() <
int i;
printf(«Введите целое числоп»);
scanf(«%d», &i);
printf(«Вы ввели число %d, спасибо!», i);
return 0;
>
Первая строка этой программы — директива препроцессора, по которой в текст программы вставляется заголовочный файл, содержащий описание использованных в программе функций ввода/вывода (в данном случае угловые скобки являются элементом языка). Все директивы препроцессора начинаются со знака #.
Третья строка — описание переменной целого типа с именем i.
Функция printf в четвертой строке выводит приглашение «Введите целое число» и переходит на новую строку в соответствии с управляющей последовательностью n. Функция scanf заносит введенное с клавиатуры целое число в переменную i (знак & означает операцию получения адреса), а следующий оператор выводит на экран указанную в нем строку, заменив спецификацию преобразова-
ния на значение этого числа.
А вот как выглядит та же программа с использованием библиотеки классов С++:
#include
int main() <
int i;
cout > i;
cout >.
22) Алфавит и идентификаторы в языке С/C++.
АЛФАВИТ
• прописные и строчные латинские буквы и знак подчеркивания;
• арабские цифры от 0 до 9;
• пробельные символы: пробел, символы табуляции, символы перехода на но вую строку.
• специальные знаки:
Из символов алфавита формируются лексемы языка:
• идентификаторы;
• ключевые (зарезервированные) слова;
• знаки операций;
• константы;
• разделители (скобки, точка, запятая, пробельные символы).
ИДЕНТИФИКАТОРЫ
• В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания;
• Прописные и строчные буквы различаются;
• Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра;
• Пробелы внутри имен не допускаются;
• Длина идентификатора по стандарту не ограничена, но некоторые компиляторы и компоновщики налагают на нее ограничения;
• Идентификатор не должен совпадать с ключевыми словами;
• Не рекомендуется начинать идентификаторы с символа подчеркивания (могут совпасть с именами системных функций или переменных);
• На идентификаторы, используемые для определения внешних переменных;
• Есть ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).
Ключевые слова С++
23) Целые типы данных в языке С/C++.
Целый тип данных предназначен для представления в памяти компьютера обычных целых чисел. Основным и наиболее употребительным целым типом является тип int. Гораздо реже используют его разновидности: short (короткое целое) и long (длинное целое). Также к целым типам относится тип char (символьный). Кроме того, при необходимости можно использовать и тип long long (длинное-предлинное!), который хотя и не определён стандартом, но поддерживается многими компиляторами C++. По-умолчанию все целые типы являются знаковыми, т.е. старший бит в таких числах определяет знак числа: 0 — число положительное, 1 — число отрицательное. Кроме знаковых чисел на C++ можно использовать беззнаковые. В этом случае все разряды участвуют в формировании целого числа. При описании беззнаковыхцелыхпеременных добавляется слово unsigned (без знака).
Сводная таблица знаковых целых типов данных:
Алгоритмизация, алгоритмы, языки и программы
Курс дистанционного обучения:
«Экономическая информатика»
Модуль 1 (1,5 кредит): Введение в экономическую информатику
Тема 1.1: Теоретические основы экономической информатики
Тема 1.2: Технические средства обработки информации
Тема 1.3: Системное программное обеспечение
Тема 1.4: Сервисное программное обеспечение и основы алгоритмизации
1.4. Сервисное программное обеспечение ПК и основы алгоритмизации
1.4.2. Основы алгоритмизации и языки программирования
Алгоритм и его свойства
Решение задач на компьютере основано на понятии алгоритма. Алгоритм – это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к исходному результату.
Алгоритм означает точное описание некоторого процесса, инструкцию по его выполнению. Разработка алгоритма является сложным и трудоемким процессом. Алгоритмизация – это техника разработки (составления) алгоритма для решения задач на ЭВМ.
Изобразительные средства для описания (представление) алгоритма
Для записи алгоритма решения задачи применяются следующие изобразительные способы их представления:
- Словесно- формульное описание.
- Блок-схема (схема графических символов).
- Алгоритмические языки.
- Операторные схемы.
- Псевдокод.
Для записи алгоритма существует общая методика:
- Каждый алгоритм должен иметь имя, которое раскрывает его смысл.
- Необходимо обозначить начало и конец алгоритма.
- Описать входные и выходные данные.
- Указать команды, которые позволяют выполнять определенные действия над выделенными данными.
Общий вид алгоритма:
- название алгоритма;
- описание данных;
- начало;
- команды;
- конец.
Формульно-словесный способ записи алгоритма характеризуется тем, что описание осуществляется с помощью слов и формул. Содержание последовательности этапов выполнения алгоритмов записывается на естественном профессиональном языке предметной области в произвольной форме.
Графический способ описания алгоритма (блок — схема) получил самое широкое распространение. Для графического описания алгоритмов используются схемы алгоритмов или блочные символы (блоки), которые соединяются между собой линиями связи.
Каждый этап вычислительного процесса представляется геометрическими фигурами (блоками). Они делятся на арифметические или вычислительные (прямоугольник), логические (ромб) и блоки ввода-вывода данных (параллелограмм).
Порядок выполнения этапов указывается стрелками, соединяющими блоки. Геометрические фигуры размещаются сверху вниз и слева на право. Нумерация блоков производится в порядке их размещения в схеме.
Алгоритмические языки — это специальное средство, предназначенное для записи алгоритмов в аналитическом виде. Алгоритмические языки близки к математическим выражениям и к естественным языкам. Каждый алгоритмический язык имеет свой словарь. Алгоритм, записанный на алгоритмическом языке, выполняется по строгим правилам этого конкретного языка.
Операторные схемы алгоритмов. Суть этого способа описания алгоритма заключается в том, что каждый оператор обозначается буквой (например, А – арифметический оператор, Р – логический оператор и т.д.).
Операторы записываются слева направо в последовательности их выполнения, причем, каждый оператор имеет индекс, указывающий порядковый номер оператора. Алгоритм записывается в одну строку в виде последовательности операторов.
Псевдокод – система команд абстрактной машины. Этот способ записи алгоритма с помощью операторов близких к алгоритмическим языкам.
Принципы разработки алгоритмов и программ
Типы алгоритмических процессов
По структуре выполнения алгоритмы и программы делятся на три вида:
- линейные;
- ветвящиеся;
- циклические;
Линейные вычислительные процессы
Линейный алгоритм (линейная структура) – это такой алгоритм, в котором все действия выполняются последовательно друг за другом и только один раз. Схема представляет собой последовательность блоков, которые располагаются сверху вниз в порядке их выполнения. Первичные и промежуточные данные не оказывают влияния на направление процесса вычисления.
Алгоритмы разветвляющейся структуры
На практике часто встречаются задачи, в которых в зависимости от первоначальных условий или промежуточных результатов необходимо выполнить вычисления по одним или другим формулам.
Такие задачи можно описать с помощью алгоритмов разветвляющейся структуры. В таких алгоритмах выбор направления продолжения вычисления осуществляется по итогам проверки заданного условия. Ветвящиеся процессы описываются оператором IF (условие).
Циклические вычислительные процессы
Для решения многих задач характерно многократное повторение отдельных участков вычислений. Для решения таких задач применяются алгоритмы циклической структуры (циклические алгоритмы). Цикл – последовательность команд, которая повторяется до тех пор, пока не будет выполнено заданное условие. Циклическое описание многократно повторяемых процессов значительно снижает трудоемкость написания программ.
Существуют две схемы циклических вычислительных процессов.
Особенностью первой схемы является то, что проверка условия выхода из цикла проводится до выполнения тела цикла. В том случае, если условие выхода из цикла выполняется, то тело цикла не выполняется ни разу.
Особенностью второй схемы является то, что цикл выполняется хоты бы один раз, так как первая проверка условия выхода из цикла осуществляется после того, как тело цикла выполнено.
Существуют циклы с известным числом повторений и итерационные циклы. При итерационном цикле выход из тела цикла, как правило, происходит при достижении заданной точности вычисления.
Языки программирования
Языки программирования – это искусственные языки записи алгоритмов для исполнения их на ЭВМ. Программирование (кодирование) — составление программы по заданному алгоритму.
Классификация языков программирования. В общем, языки программирования делятся на две группы: операторные и функциональные. К функциональным относятся ЛИСП, ПРОЛОГ и т.д.
Операторные языки делятся на процедурные и непроцедурные (Smalltalk, QBE). Процедурные делятся на машино — ориентированные и машино – независимые.
К машино – ориентированным языкам относятся: машинные языки, автокоды, языки символического кодирования, ассемблеры.