АЛГОРИТМЫ. ОСНОВНЫЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ ПАСКАЛЬ
ЛАБОРАТОРНАЯ РАБОТА №3.
Цель работы: Изучить виды алгоритмов, их свойства и классификацию, получить навыки практической реализации алгоритмов. Изучить основные возможности языка программирования Паскаль. Ознакомиться со структурой, синтаксисом и семантикой программы на языке Паскаль.
Краткие теоритические сведения.
1.1 Алгоритм- точное и понятое предписание исполнителю совершить последовательность действий, направленных на решение поставленной задачи.
1.2 Свойства алгоритма:
· Понятность;
· Конечность;
· Определенность;
· Результативность;
· Массовость;
· Эффективность.
1.3Основные виды функциональных блоков
Название символа | Обозначение и пример заполнения | Пояснение | ||||||||||
Процесс |
| Вычислительное действие или последовательность действий | ||||||||||
Решение | да нет
| Проверка условий | ||||||||||
Модификация |
| Начало цикла | ||||||||||
Предопределенный процесс | Вычисление по программе, стандартной подпрограмме | |||||||||||
Ввод-вывод | Ввод-вывод в общем виде | |||||||||||
Пуск-останов | Начало, конец алгоритма, вход и выход в подпрограмму | |||||||||||
Документ | Вывод результатов на печать |
Соотношение сторон функциональных блоков должно быть как b=2*a, где a=10,15,20.
1.4 Язык программирования - это формальная знаковая система, предназначенная для описания алгоритмов в форме, которая удобна для исполнителя.
Синтаксис языка программирования – набор правил построения конструкции языка.
Семантика языка программирования – совокупность значений (смысл) всех конструкций языка.
1.5Языки программирования :
1. Машинно - ориентированные (языки низкою уровня). В них типы и структуры данных, операции над данными и порядок выполнения операторов определяются организацией и функционированием ЭВМ.
Характеризует:
a) высокое качество создаваемых программ (компактность и скорость выполнения);
b) возможность использования конкретных аппаратных ресурсов;
c) предсказуемость объектного кода и заказов памяти;
d) для составления эффективных программ необходимо
e) знать систему команд и особенности функционирования данной ЭВМ;
f) трудоемкость процесса составления программ плохо защищенного от появления ошибок;
g) низкая скорость программирования;
h) невозможность непосредственного использования программ, составленных на этих языках, на ЭВМ других типов.
2. Машинно - независимые языки (языки высокого уровня). Они базируются на концепции абстрактных типов данных и абстрактных операциях, что обеспечивает независимость языка от организации и функционирования ЭВМ и даёт возможность разработчикам программного обеспечения объявлять новые типы данных в разрабатываемых программах.
Подразделяются на:
a) проблемено-ориентрированные языки;
b) универсальные языки;
c) диалоговые языки;
d) непроцедурные языки.
1.6 Транслятор – программа – переводчик, которая преобразует программу написанную на одном из языков высокого уровня, программу состоящую из машинных команд. Трансляторы реализуются в виде компиляторов или интерпретаторов, которые различаются по принципу работы.
Компилятор – читает всю программу целиком, делает ее перевод и создает законченный вариант программы на машинном языке, который затем и выполняется.
Интерпретатор – переводит и выполняет программу построчно.
1.7 Схема процесса разработки программ в Турбо Паскаль.
|
|
Прогон программы
|
|
|
|
1.8Структура программы на языке Паскаль имеет следующий вид:
Program Test;
{раздел описаний}
begin
{раздел исполняемых функций}
end.
1. Зарезервированное слово Program означает, что данная программная единица является программой (еще бывают модули, процедуры, функции). Test это название программы и может быть любым.
2. В разделе описаний должны содержаться описания всех идентификаторов. используемых и разделе исполняемых операторов, объявляются идентификаторы типов, объектов, констант, переменных, а также метки, процедуры и функции.
3. Описание типов и объектов должно начинаться зарезервированным словом type, описание констант - const, переменным – var.
1.9 В качестве констант могут использоваться целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов, констрикторы множеств и признак неопределенного указателя NIL.
1. Целые числа записываются со знаком или без него и могут иметь значение от -2147483648 до +2147483647.
2. Вещественные числа записываются со знаком или без него с использованием десятичной точки или экспоненциальной части.
3. Шестнадцатеричное число состоит из шестнадцатеричных цифр, которым предшествует знак $. Диапазон от $00000000 до $FFFFFFFF.
4. Логическая константа - это либо слово false (ложь), либо слово true (истина).
5. Символьная константа - любой символ заключенный в апострофы (‘а’).
6. Строковом константа - любая последовательность символом заключенная в апострофы.(‘Добрый день’).
С помощью знаков операций и скобок из константы, переменные и обращения к функциям можно составлять выражения, которые фактически представляют собой правила получения новых значений. Значение такого выражения имеет тот же тип, что и элемент.
Операции языка Паскаль:
· унарные операции: not @;
· мультипликативные операции: * / div mod and shl shr;
· аддитивные операции: + - or xоr;
· операции отношения: = < > < > <=> = in.
В Паскале определены следующие логические операции:
· not - логическое НЕ;
· and - логическое И;
· or - логическое ИЛИ;
· хоr - исключающее ИЛИ.
1.10 Типы данных.
Тип данных определяют множество допустимых значений, которые может иметь тот или иной объект, а так-же множество операций, применимых к этому типу.
Существует несколько основных типов данных:
1. простые:
a) вещественные (real);
b) порядковые;
c) целые (integer);
d) логические;
e) символьные;
f) перечисления;
g) тип-диапозон;
2. объекты;
3. процедурные;
4. строки;
5. указатели;
6. структурированные:
a) массивы;
b) множества;
c) записи;
d) файлы;
1.11 Оператор присваивания – один из наиболее часто используемых операторов обработки данных. Выглядит следующим образом переменная:=выражение. И переменная и выражение должны быть одного и того же типа.
Составной оператор – это группа операторов ограниченная зарезервированным словами begin (в начале группы) и end (в конце). В данном случае эти зарезервированные слова называются операторными скобками.
1.12 Для вывода информации на экран используется процедура Write и модификация Writeln. Например:
Writeln (‘сообщение’,имя переменной 1,’сообщение 2’,выражение 1);
WriteLn отличается от Write тем, что после вывода на экран всех своих аргументов переводит курсор на следующую строку, и следующий вывод на экран будет осуществлён с начала следующей строки.
В списке вывода процедур Write и WriteLn могут встречаться сообщения, заключённые в апострофы (выводится на экран без изменения), имена переменных (выводится значение переменной), выражения (выводятся значения выражений).
Примеры:
WriteLn(’Дискриминант квадратного уравнения равен’,b*b-4*a*c);
Write(‘x1=’,x1,’x2=’,x2);
Допускается использование WriteLn без аргументов. Тогда вывода на экран не происходит, а курсор переводится на следующую строку.
Для ввода информации в программу с клавиатуры используется процедура Read либо его модификация Readln. Например:
Read(переменная);
Отличие этих 2-х процедур проявляются при работе с файлами, при вводе с клавиатуры всегда используется Readln.
Пример:
Readln (a, b, c, d);
1.13 Формат числа – определяет в каком виде будет выводится число на экран. Форма записи следующая:
(а:7:3) где, 7-это количество позиций отводимое под число, 3 –количество позиций для дробной части. Одну позицию всегда занимает запятая.
Пример:
Writeln(‘i= ’,i:4:2);
Это свидетельствуем о том, что какое бы число я не ввела, например, 809,123445, на экран будет выводиться число 809, т.к под число отведено 4 позиции.
Лабораторные задания.
2.1Задание 1. Укажите, какие из перечисленных идентификаторов содержат ошибки и поясните их.
1. а – ошибок нет.
2. 1Program –ошибок нет.
3. ALPHA- ошибок нет.
4. block#1 – ошибка есть, т.к содержит спец символ.
5. MyProgramIsBestProgram –ошибок нет.
6. Date_27_step_39 - ошибок нет.
7. My Prog – ошибка есть, т.к содержит пробел.
8. beta – ошибок нет.
9. mod – ошибка есть, т.к является зарезервированным словом.
2.2 Задание 2. Укажите, какие из перечисленных операторов ввода-вывода содержат ошибки и поясните их.
1. read m,x,n – ошибка есть, т.к неверный формат оператора;
2. read (5,6) t,h,m – ошибка есть, т.к неверный формат оператора;
3. read (a:3:5) – ошибка есть, т.к количество позиций, отведенных под дробную часть, превышает общее число позиций отведенных под все число.
4. read(6,5) b,c – ошибка есть, т.к неверный формат оператора;
5. write(6,5) b,c - ошибка есть, т.к неверный формат оператора;
6. write(6,25) – ошибок нет;
7. write(b:7:2) – ошибок нет;
8. write 45, f8, 4 – ошибка есть, т.к отсутствуют скобки.
2.3 Задание 3 – при помощи программы на языке Паскаль, организовать вывод значений функции Y=( ) в следующем виде
X| -3| -2| -1| 0| 1| 2| 3|
Y| | | | | | | |
Решение:
Program bugaga;
var a:integer;
begin
writeln('X','-3','-2','-1',' 0',' 1',' 2',' 3');
writeln('Y ',Sqr(-3),' ',sqr(-2),' ',sqr(-1),' ',sqr(0),' ',sqr(1),' ',sqr(2),' ',sqr(3));
readln;
end.
Результатом данной программы является вывод на экран сообщения
X| -3| -2| -1| 0| 1| 2| 3|
Y| 9| 4 | 1| 0 | 1 | 4| 9|
Задание 4 – Написать диалоговую программу на языке Паскаль, которая рассчитает значение функции Y=a* +b. Диалог должен иметь следующий вид
Начало расчета функции Y=a* +b
Введите значение а-_
Введите значение b-_
Введите значение х-_
Для значений а=… b=… x=…
Расчет закончен.
Решение:
Program bugaga_1;
Var a,b,x,y:integer;
begin
Writeln('Calculation begins Y=a*x^2+b');
Write('Input a=');
Readln(a);
Write('Input b=');
readln(b);
Write('Input x=');
Readln(x);
Writeln('a=',a,' ','b=',b,' ','x=',x,' ','Value y=',a*x*x+b);
Readln;
end.
Результатом данной программы является вывод на экран сообщения с рассчитанными данными с учетом введенных пользователем переменных.
Вывод: В ходе выполнения данной работы я изучила виды алгоритмов, их свойства и классификацию, получила навыки практической реализации, а также узнала о основных возможностях языка программирования Паскаль. Ознакомилась с терминами синтаксиса и семантики программы на языке Паскаль.