Logo GenDocs.ru

Поиск по сайту:  

Загрузка...

Алгоритмизация и программирование - файл 1.doc


Алгоритмизация и программирование
скачать (438.5 kb.)

Доступные файлы (1):

1.doc439kb.15.12.2011 15:50скачать

содержание

1.doc

  1   2   3
Министерство образования Российской Федерации

Ивановский государственный химико-технологический университет


825


Информатика
Часть 2
Алгоритмизация и программирование


Методические указания и контрольные работы
для студентов заочного обучения
Составители: С.П. Бобков,

В.А. Бобкова


Иваново 2002

Составители: С.П. Бобков, В.А. Бобкова

УДК 613.19

Информатика. Часть 2. Алгоритмизация и программирование: Методические указания и контрольные работы для студентов заочного обучения / Сост.: С. П. Бобков, В. А. Бобкова; Иван. гос. хим.-технол. ун-т. – Иваново, 2002. 36 с.

Методические указания являются второй частью серии методических указаний по курсу «Информатика» для студентов заочного обучения. В них изложены основы алгоритмизации и программирования на Паскале. Рассмотрены основные элементы языка, типы данных, операторы для организации программ линейной, разветвляющейся, циклической структур, подпрограммы. Приведены задания для выполнения второй части контрольной работы по дисциплине «Информатика» для студентов-заочников и примеры решения задач одного варианта.

Предназначены для самостоятельной работы студентов заочной формы обучения всех специальностей.


Табл. 3. Ил. 1. Библиогр.: 3 назв.

Рецензент доктор технических наук, профессор А. Н. Лабутин (Ивановский государственный химико-технологический университет)


  1. Основы алгоритмизации

1.1. Этапы решения задач с помощью компьютера

Понятие “решение задачи” с помощью компьютера включает в себя гораздо больше, чем просто вычисления на компьютере. Это процесс, в котором можно выделить следующие этапы:

  1. Постановка задачи и определение конечных целей.

  2. Математическое описание задачи, т.е. формулировка конкретной инженерной, физической, экономической задачи на языке математики.

  3. Выбор метода решения задачи.

  4. Разработка алгоритма решения задачи в соответствии с выбранным методом.

  5. Составление программы на одном из языков программирования.

  6. Отладка программы, т.е. поиск и исправление ошибок.

  7. Вычисления по программе, которые проводятся обычно для нескольких вариантов набора исходных данных.

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

1.2.Алгоритм: определение и свойства

Алгоритм – это точно определенное описание способа решения задачи в виде конечной последовательности действий.

Свойства алгоритма

  1. Дискретность. Алгоритм выполняется по шагам и каждое действие начинается после того, как завершено выполнение предыдущего действия.

  2. Детерминированность (определенность). Результат применения алгоритма к каждому конкретному набору исходных данных однозначен.

  3. Результативность. Выполнение алгоритма должно завершиться получением определенных результатов.

  4. Конечность. Алгоритм завершает работу за конечное число шагов.

  5. Массовость. Алгоритм должен быть применим для решения класса задач, отвечающих общей постановке задачи.

1.3. Запись алгоритма в виде блок-схем

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

Таблица 1

Наименование

символа

Изображение

символа

Примечание



Процесс


Принятие

решения

Модификация

Предопределенный

процесс

Передача

данных

Прерывание


Соединитель



Нет Да







Вычислительное действие или последовательность вычислительных действий.

Арифметический блок


Проверка условий

Логический блок

Начало и конец цикла

Вычисления по подпрограмме

Ввод данных или вывод данных и печать

результатов

Начало, конец, пуск, останов
Разрыв линий потока информации




Описание алгоритмов с помощью блок-схем является наиболее наглядным и не зависит от конкретного языка программирования.

1.4. Основные типы вычислительных алгоритмов

Наиболее простым видом алгоритма является линейный алгоритм, при котором действия выполняются последовательно, одно за другим, без разветвлений и возвратов.

Пример. Вычисление площади треугольника по трем сторонам a, b, c по формуле Герона:

, где .

Блок-схема алгоритма имеет вид:




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


Пример. Нахождение действительных корней квадратного уравнения

ax2 + bx + c = 0.

Блок-схема алгоритма имеет вид:



Да

Нет











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

Пример. Вычисление факториала натурального числа

n! = 1 2 3 ...  n

Блок-схема алгоритма имеет вид:



2. Основы программирования на Паскале

    1. Основные элементы языка

Алфавит (разрешенный к использованию набор символов) языка Паскаль составляют:

1. Прописные и строчные (воспринимаются одинаково) буквы латинского алфавита: А, В, …, Z, а, в, …, z.

2. Цифры от 0 до 9.

3. Символ подчеркивания “ _ ”.

4. Специальные символы:

+ плюс

- минус

* звездочка

/ дробная черта

> больше

< меньше

= равно

; точка с запятой

# номер

‘ апостроф

, запятая

. точка

: двоеточие

[ ] квадратные скобки

{ } фигурные скобки

$ знак денежной единицы

( ) круглые скобки

^ тильда (стрелка вверх)

@ коммерческое а

пробел




Комбинации специальных символов могут образовывать составные символы:

: = присваивание

< > не равно

. . диапазон значений

< = меньше или равно

> = больше или равно


Примечание. Русские буквы в программе должны заключаться в апострофы, например, ‘Текст на русском языке’.

Слова

Слова – это неделимые последовательности символов алфавита, отделенные друг от друга разделителями и несущие определенный смысл.

Слова делятся на зарезервированные слова и идентификаторы (имена). Идентификаторы, в свою очередь, делятся на стандартные и идентификаторы пользователя.

Слова




зарезервированные слова идентификаторы



стандартные идентификаторы

идентификаторы пользователя

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

Зарезервированные слова языка Паскаль

and

array

begin

case

const

div

goto

do

downto

else

end

file

for

function

if

label

mod

not

or

логическое И

массив

начало блока

вариант

константа

деление нацело

переход на

выполнять

уменьшить до

иначе

конец блока

файл

для

функция

если

метка

остаток от деления

логическое НЕ

логическое ИЛИ

of

object

procedure

program

record

repeat

set

string

then

to

type

unit

until

uses

var

while

with

xor

из

объект

процедура

программа

запись

повторять

множество

строка

то

увеличивая

тип

модуль

до

использовать

переменная

пока

с

исключающее ИЛИ


Идентификаторы (имена) используются для обозначения программ, переменных и постоянных величин, процедур, функций.

^ Общие правила написания идентификаторов

1. Идентификатор может состоять только из букв, цифр и символа подчеркивания.

2. Идентификатор начинается только с буквы или символа подчеркивания (исключение составляют метки, которые могут начинаться с цифры).

3. Максимальная длина идентификатора 127 символов, но значимы только первые 63.

4. Между двумя идентификаторами должен быть, по крайней мере, один пробел.

Стандартные идентификаторы предназначены для обозначения стандартных, т.е. заранее определенных, объектов (констант, процедур и функций), например, integer, sin, cos, write.

Идентификаторы пользователя применяются для обозначения объектов, определенных самим программистом. При их записи следует учитывать, что: 1) идентификаторы в программе должны быть уникальными; 2) нельзя использовать в качестве идентификаторов пользователя зарезервированные слова и стандартные имена; 3) имена для объектов программы надо выбирать так, чтобы они наилучшим образом отражали их значение.

Примеры записи идентификаторов пользователя:

a, t1, r_756, summa – правильно;

cos, while, c#, сумма – неправильно.

Общая структура программы на Паскале

В Паскаль – программе могут быть написаны следующие разделы (рис.1):

  1. Заголовок программы.

  2. Раздел объявлений.

  3. Тело программы (основной блок программы).

Заголовок программы состоит из зарезервированного слова program и идентификатора программы.

Раздел объявлений может включать в себя любое количество объявлений используемых библиотек, меток, констант, типов, переменных, процедур и функций.

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

Основной блок – это собственно программа, использующая всё, что было объявлено. Он начинается словом begin и заканчивается словом end с точкой. После завершающей точки любой текст игнорируется.

Основной блок состоит из операторов (предложений языка программирования), записанных в соответствии с алгоритмом. Операторы отделяются друг от друга символом “ ; ”.


Раздел объяв-

лений
p rogram

uses
label
const
type
var
procedure
function
begin
end.

и
Заголовок
мя_программы;
список используемых библиотек (модулей);
список меток в основном блоке программы;
определение констант программы;
описание типов;
определение глобальных переменных программы;
определение процедур;
определение функций;

Основной

операторы; блок

программы

Рис. 1. Полный вариант структуры Паскаль - программы

Операторы подразделяются на простые и структурные. К простым операторам относятся операторы присваивания, перехода, процедуры. К структурным – операторы условия, выбора, цикла, составные. Составной оператор представляет собой последовательность операторов, заключенных в слова begin и end.

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

Пример.

program primer; { Программа сложения двух чисел }

var

x, y, summa: real; { Описание переменных }

begin

readln (x,y); { Ввод исходных чисел }

summa:= x+y; { Расчет суммы }

writeln (‘Сумма x и y равна’, summa); { Вывод результата }

end.

Константы и переменные

Константы – это элементы данных, значения которых не меняются в процессе выполнения программы. Константы задаются идентификаторами пользователя и описываются в разделе, который начинается зарезервированным словом const.

Пример описания констант:

const

t=13.4; max=1000; eps=0.15E – 5; myname= ‘Петя Иванов’;
Переменные – это величины, которые могут менять свои значения в процессе выполнения программы. Каждая переменная принадлежит к определенному типу данных. Имена переменных и их типы объявляются в разделе, который начинается зарезервированным словом var.

Пример объявления переменных.

var

a, в: integer;

summa: real;

Комментарии

Для лучшего понимания программы в ней может быть записан произвольный текст – комментарий. Комментарий можно записать в любом месте программы, где разрешен пробел. Текст комментария ограничен символами { } или (* *) и может содержать любые комбинации латинских и русских букв, цифр и других символов алфавита языка Паскаль. Ограничений на длину комментария нет, он может занимать несколько строк.

Примеры:

(*Начало программы*)

{Пример комментария, занимающего

несколько строк}

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

В Паскале любые данные (константы, переменные, значения функций и т.д.) характеризуются своими типами. Тип данных определяет, во-первых, формат представления данных в памяти компьютера; во-вторых, множество допустимых значений, которые может принимать переменная или константа данного типа; в-третьих, множество допустимых операций, применимых к этому типу.

Все данные, используемые программой, должны принадлежать либо к стандартному (т.е. какому-либо заранее известному), либо к пользовательскому (т.е. определяемому программистом) типу данных. Пользовательские типы разрабатываются пользователями на основе стандартных типов и в программе объявляются в разделе объявления типов, который открывается зарезервированным словом type.

Паскаль имеет очень разветвленную структуру типов. Ниже рассмотрены некоторые наиболее часто употребляемые типы данных.

Целочисленные типы

Значения целых типов могут изображаться двумя способами: в десятичном виде (например, -57; 1896) и в шестнадцатеричном виде (в этом случае вначале ставится знак $, а цифры старше 9 обозначаются латинскими буквами от A до F, например, $1А5; $F3C).

Таблица 2

^ Целочисленные типы данных

Тип

Диапазон значений

Требуемая память (байт)

byte

shortint

integer

word

longint

0 ... 255

-128 ... 127

-32768 ... 32767

0 ... 65535

-2147483648 ... 2147483647

1

1

2

2

4

Над данными целого типа определены следующие операции:

  1. арифметические операции: + (сложение), - (вычитание), * (умножение), / (деление), div (деление нацело), mod (вычисление остатка от целочисленного деления), - которые вырабатывают результат целого типа, кроме операции деления, вырабатывающей результат вещественного типа;

  2. операции отношения: = (равно), < > (не равно), < (меньше), > (больше), < = (меньше или равно), > = (больше или равно), - которые вырабатывают результат логического типа.

Вещественные типы

Вещественные значения могут изображаться в форме с фиксированной точкой, например, 8.32, -546.271 или 0.017, а также в форме с плавающей точкой, т.е. парой чисел вида <мантисса>Е<порядок>, например, 8.53 Е+00 (8,53), 6.45721 Е+02 (6,45721102), 1.5 Е-03 (1,510-3).
^ Таблица 3

Вещественные типы данных


Тип

Диапазон значений

Мантисса

Требуемая память (байт)

real

single

double

extended

comp

2,910-39 ... 1,71038

1,510-45 ... 3,41038

5,010-324 ... 1,710308

1,910-4951 ... 1,1104932

-2,01063 +1 ... 2,01063-1

11 – 12

7 – 8

15 – 16

19 – 20

10 – 20

6

4

8

10

8


Над данными вещественных типов определены арифметические операции +, -, *, /, а также операции отношения.

Булевский тип boolean

Данные этого типа представлены следующими значениями: true (истина) и false (ложь). Над ними определены логические операции and (логическое И), or (логическое ИЛИ), xor (исключающее ИЛИ), not (логическое НЕ). Для размещения в памяти переменной булевского типа требуется один байт.

Массивы

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

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

Массивы могут быть описаны в разделе var с использованием словосочетания array of (массив из), например:

var

vectorx: array [1..50] of real;

matrb: array [1..6, 1..6] of byte;

Если в такой форме описания массива задан один индекс, массив называется одномерным, если два индекса – двумерным, если n индексов – n-мерным. Например, в приведенном выше примере массив vectorx – одномерный, состоящий из 50 элементов типа real, массив matrb – двумерный, состоящий из 6  6 элементов типа byte. Одномерные массивы обычно используются для представления векторов, а двумерные – для представления матриц.

Для описания массива можно использовать предварительно определенные константы, например:

const

n1=5; n2=8;

var

masy: array [1..n1, 1..n2] of integer;

Массив может быть описан с помощью представления типа в разделе описания типа данных, например:

type

mas = array [1..5, 1..6] of real;

var

m: mas;

2.3. Программирование линейных вычислительных процессов

Арифметические выражения

Выражение – это конструкция языка, задающая порядок выполнения действий над элементами данных. Выражение состоит из операндов (констант и выражений, над которыми производится операция), круглых скобок и знаков операций. В простейшем случае выражение может состоять из одной переменной или константы. В зависимости от типа результата различают арифметические и логические выражения. Тип выражения определяется последовательным вычислением типа результатов всех операций, выполненных при вычислении значения выражения. Порядок вычисления выражения определяется скобками и старшинством (приоритетом) операций.

^ Арифметическое выражение порождает целое или действительное (вещественное) значение. В арифметических выражениях, кроме констант, переменных, скобок и знаков арифметических операций, могут использоваться встроенные (стандартные) функции и процедуры.:

abs (x: real / integer) real / integer – вычисление |x|. Тип результата совпадает с типом параметра.

arctan (x: real): real – вычисление arctg x (в радианах).

cos (x: real): real – вычисление cos x. Параметр x задает значение угла в радианах.

exp (x: real): real – вычисление ex.

frac (x: real): real – вычисление дробной части x.

int (x: real): real – вычисление целой части x как значение вещественного типа.

ln (x: real): real – вычисление ln x.

pi: real – возвращает значение числа  (3,141592653897932385).

sin (x: real): real – вычисление sin x. Параметр x задает значение угла в радианах.

sqr (x) – возведение в квадрат числа x. Тип результата совпадает с типом параметра x.

sqrt (x: real): real – вычисление x.

random: real – генерирует значение случайного числа из диапазона 0..0,99.

random (n: word): word – генерирует значение случайного числа из диапазона 0..n.

round (x: real): longint – возвращает значение x, округленное до ближайшего целого числа.

trunc (x: real): longint – возвращает ближайшее целое число, меньше или равное x, если x 0, и большее или равное x, если x<0.

Примеры арифметических выражений:

ln (abs (1.3E-02 * x)) + sin (x)/(1+2*a);
  1   2   3



Скачать файл (438.5 kb.)

Поиск по сайту:  

© gendocs.ru
При копировании укажите ссылку.
обратиться к администрации