Решение задач на языке высокого уровня Pascal

Изучение основных конструкций и способов написания программ на языке Паскаль. Обзор принципов работы и интерфейса написанной программы. Обработка и модификация двумерных массивов. Файловые структуры данных. Текстовые файлы. Элементы машинной графики.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 11.03.2015
Размер файла 761,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа

по дисциплине «Программирование»

Тема: «Решение задач на языке высокого уровня Pascal»

Реферат

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

Объект исследования - Язык программирования высокого уровня Pascal.

Цель работы - изучить способы написания программ на языке Паскаль и закрепление теоретических и практических навыков в решении прикладных задач.

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

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

Введение

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

Имена в языках программирования принято называть идентификаторами. Есть идентификаторы переменных, констант, типов, функций и т.д.

С понятием величины связаны следующие характеристики (атрибуты):

· идентификатор -- это ее обозначение и место в памяти;

· тип -- множество допустимых значений и множество применимых операций к ней;

· значение -- динамическая характеристика, может меняться многократно в ходе исполнения алгоритма. Во время выполнения программы в каждый конкретный момент величина имеет какое-то значение или не определена.

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

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

Различают переменные следующих простых типов: целые (Integer, Byte, ShortInt, Word, LongInt), вещественные (Real, Double, Single, Extended), логический (Boolean), символьный (Char), перечисляемый, диапазонный (интервальный).

В целом, иерархия типов в языке Pascal следующая (Рисунок 1.1):

Рисунок 1.1 - Иерархия типов в языке Pascal

Задание 1. Обработка текстовых строк

массив файл графика паскаль

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

Блок-схема

Алгоритм:

Создаем два массива A и B типа string. Тип данных (string) определяет строки с максимальной длиной 255 символов. Переменная этого типа может принимать значения переменной длины. Так же вводим несколько переменных для выполнения данной программы типа integer. Тип integer один из простейших и самых распространённых типов данных в языках программирования. Тип данных (integer) cлужит для представления целых чисел. Множество чисел этого типа представляет собой подмножество бесконечного множества целых чисел, ограниченное максимальным и минимальным значениями.

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

read(s); {ввод последовательности слов}

Для удобства работы с этой последовательностью символов каждое слово вносим в отдельную ячейку массива символьного типа.

Выводим этот массив для проверки правильности вывода слов.

Выводим слова, в которых есть только числа. Для этого используем оператор case. Этот оператор проверяет каждый символ в слове и если найдет цифры от 0 до 9 то переменной n присвоит значение 1. Аналогично выводим слова в которых есть только знаки. Оператор case найдя буквы от А до Я присваивает переменной m значение 1.

Далее выводим на экран слова в которых только числа и переворачиваем их. Проверяем переменную n, если она не равна 0,а переменная m так и осталась 0, то значит в этом слове только числа.

Аналогично выводим на экран слова в которых только знаки и переворачиваем их. Проверяем переменную m, если она не равна 0,а переменная n так и осталась 0, то значит в этом слове только знаки.

В итоге получаем код нашей программы (см. приложение А).

Работа и интерфейс программы:

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

Слова в последовательности разделены одним или несколькими пробелами. В состав каждого слова могут входить:

· Арабские буквы, как большие, так и малые.

· цифры от 0 до 9,

· символы знаков: <+> <-> <:> <*> <.> </> <=>.

Длина одного слова не превышает 20 символов.

Ввод осуществляется при помощи клавиатуры и подтверждается (принимается) нажатием клавиши Enter. Важно помнить если ввод будет неправильным, неудовлетворяющий всем условиям, то программа будет работать неправильно.

Рисунок 2.1 - Ввод текстовой строки.

После ввода текстовой строки, программа выполняет операции, указанные в данной команде, соответственно нашему заданию.

Рисунок 3.1 - Реализация команд.

Задание 2. Обработка и модификация двумерных массивов

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

Задание 3. Файловые структуры данных. Текстовые файлы

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

Блок - схема:

Алгоритм:

Для начала, зададим имя программы, подключим модуль работы с экраном, сделаем описание переменных.

Далее создаем два файла file1.txt. В первый файл будет записываться текстовые строки, которые мы введем с клавиатуры. В File2.txt будет записываться полученный результат по завершению программы.

Вводим с клавиатуры начальное и конечное число, согласно заданию, которые не нужно использовать далее в программе.

Далее используем функцию определения достижения конца файла в Паскале Название этой функции является сложносокращенным словом от end of file. Значение этой функции имеет значение true, если конец файла уже достигнут, т.е. указатель стоит на позиции, следующей за последней компонентой файла. В противном случае значение функции - false.

Выводим количество ЧИСЕЛ, обнаруженных в исходном файле, их общую сумму, пропуская числа, которые заключены между парами указываемых в диалоге начальных и конечных слов. Но существует одна проблема программа не будет работать т.к числа обнаруженные в исходном файле символьного типа, а мы можем делать вычислительные действия с типом integer.

Чтобы исправить это используем процедуру val, она преобразовывает строковое значение в его числовое представление.

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

В итоге получаем конечный код программы (см. приложение В).

Работа и интерфейс программы:

Предварительно для нашего задания мы должны создать два файла file.txt file2.txt, чтобы в будущем мы могли работать с этими файлами.

Согласно нашему заданию мы должны ввести текст с которым в дальнейшем будем работать.

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

Рисунок 3.1- Ввод данных

Рисунок 3.2 - Результат

Задание 4. Элементы машинной графики

На экране построить семейство кривых(Эпициклоида),заданных функцией:

X = (1+A)·cos(A·t)+R·cos(1+A)·t; [ 0 <= t <= 2·pi ]

Y = (1+A)·sin(A·t)-R·sin(1+A)·t;

Группа параметров A,R для построения семейства дана в текстовом файле.

Блок - схема:

Алгоритм:

Поскольку тема нашей курсовой «Элементы машинной графики», нам нужно заострить особое внимание на этом задании, и выполнить это задание наиболее специфично. Поскольку в Паскале ABC, в отличие, к примеру, от Турбо Паскаля, множество дополнительных модулей, особенно дополнительных графических модулей, мы как раз воспользуемся одним из них.

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

Где «Crt» дополнительный графический модуль. Модуль Crt позволяет выводить цветные символы на цветном экране. Хотя по-прежнему отображение будет происходить в текстовом режиме.

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

Для начала считаем данные из файла. Но перед этим создадим файл data3.txt и откроем этот файл для чтения, после чего закроем.

Далее переходим к построению графика (Эпициклоида).

Где «t:=t+0.01» шаг, «x» и «y» наши стандартные функции по заданию.

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

В итоге получаем конечный код программы (см. приложение Г).

Работа и интерфейс программы

Предварительно для нашего задания мы должны создать файл data3.txt, записать туда данные, а именно параметры A,R через пробел для построения графика.

Рисунок 4.1 - Заполнение файла

В зависимости от введенных параметров, программа будет строить и выводить график в графическое окно (см. Рисунок 4.2).

Рисунок 4.2 -Работа графического окна

Задание 5. Записи

Написать программу, которая формирует файл записей данной структуры Type Kniga=Record Avtor:String; Nazvanie:String; God:Integer; Izdatel:String; Stranizy:Integer; End; и определяет: - есть ли книги данного автора; - книгу с наибольшим количеством страниц; - названия книг данного автора, изданных с указанного года, в данном издательстве.

Блок - схема:

Алгоритм:

Для начала зададим имя программ. Подключим модуль работы с экраном. Опишем запись. В языке Паскаль запись определяется путем указания служебного слова record и перечисления входящих в запись элементов с указанием типов этих элементов.

Сделаем описание переменных.

Далее для ввода в диалоговом окне данных создаем цикл из n=10.

Далее работаем с полученным массивом. Согласно заданию ищем, есть ли книги данного автора. Вводим с клавиатуры автора интересующей нас книги и присваиваем ей значение «avt». Далее он сравнивает «avt» с авторами которые содержатся в нашем массиве.

Согласно задание нужно найти книгу с наибольшим количеством страниц. Для этого в цикле сравниваем с максимальным значением каждую книгу.

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

В итоге получаем код программы (см. Приложение Д)

Работа и интерфейс программы

Ввод осуществляется при помощи клавиатуры и подтверждается (принимается) нажатием клавиши Enter. Все данные должны вводиться согласно условию, сказанному в задание и дублированному на экране (см. рисунок 5.1).

Рисунок 5.1 - Ввод данных

После того как мы ввели все данные выполняем все условия указанные в задании. Выполняем поиск

- есть ли книги данного автора;

- книгу с наибольшим количеством страниц;

- названия книг данного автора, изданных с указанного года, в данном издательстве. (см. Рисунок 5.2)

Рисунок 5.2 - Результат

Заключение

В ходе выполнения курсовой работы были разработаны и реализованы, программы для работы с текстовой строкой, двумерным массивом, файлами, машинной графикой, записями.

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

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

Список используемой литературы

1. Немнюгин С.А. - Turbo Pascal. Программирование на языке высокого уровня, СПб.: Питер, 2012, 496 с.

2. Рапаков Г. Г., Ржеуцкая С. Ю. - Программирование на языке Pascal, СПб.: БХВ-Питербург, 2009, 480 с.

3. Окулов С. М. - Основы программирования, М.:БИНОМ. Лаборатория знаний, 2010, 424 с.

4. С.Н.Лукин - Turbo Pascal 7.0. Самоучитель, Диалог - МИФИ, 1999, 211 с.

5. Ерёмин О. Ф. - Методическое пособие по программированию на языке Pascal ABC, Моздок, 2009, 49 с.

Приложения

Приложение А

Код программы к заданию 1

program A1;

uses crt;

var s:string;

A:array [1..20] of string;

B:array [1..10] of string;

i,j,max,r,k,l,n,m:integer;

begin

read(s); {ввод последовательности слов}

r:=1;

for i:=1 to length(s) do

if s[i]=' ' then

begin

j:=j+1;

A[j]:=copy(s,r,i-r);

r:=i+1;

end; {Каждое слово вносится в отдельную ячейку массива символьного типа}

for i:=1 to j do

writeln('A[',i,']=',A[i]);

{Массив выводится для проверки}

For i:=1 to j do

begin

m:=0;

n:=0;

for l:=1 to length(A[i]) do

case A[i][l] of

'0'..'9': n:=1;

'а'..'я': m:=1;

end;

if (n<>0) and (m=0) then begin

writeln('только числа в слове "',A[i],'"');

for j:=length(A[i])downto 1 do

write(A[i][j]);

writeln;

end;

if (m<>0) and (n=0) then begin

writeln('только знаки в слове "',A[i],'"');

for j:=length(A[i])downto 1 do

write(A[i][j]);

writeln;

end;

end;{Выводим слова, в которых есть либо только числа, либо только знаки и переворачиваем их}

end.

Приложение Б

Код программы к заданию 3

Program A3;

uses crt;

const c=['0','1','2','3','4','5','6','7','8','9'];

var

f1,f2:text;

a:array[1..99] of string;

b:array[1..99] of integer;

s,s1:string;

r1,r2:real;

i,j,k,x,g,v,s2:integer;

begin

assign(f1,'file1.txt');

assign(f2,'file2.txt');

Rewrite(f1);

write('vvedite text: ');readln(s);

write(f1,s);

write('начальное слово: ');

readln(r1);

write('конечное слово: ');

readln(r2);

Reset(f1);

while not eof(f1) do readln(f1,s);

j:=1;

for i:=1 to length(s) do

begin

if (s[i]<>' ') and (s[i] in c) then

begin

a[j]:=a[j]+s[i];

end

else inc(j);

end;

x:=j;

i:=0;

s2:=0;

for j:=1 to x do

begin

s1:=a[j];

val(s1,v,g);

if (v>r1) and (v<r2) then

begin

inc(i);

b[i]:=v;

end

else begin

s2:=s2+v;

k:=k+1;

end;

end;

writeln;

writeln('Кол-во чисел: ',k);

for j:=1 to x do writeln(a[j]);

writeln;

writeln('Сумма чисел: ',s2);

Rewrite(f2);

for i:=1 to k do write(f2,b[i],' ');

close(f1);

Приложение В

Код программы к заданию 4

program A4;

uses GraphABC,crt;

const p=3.14;

var x,t,y,A,R,m:real;

n:byte;

l:text;

Q:array [1..4] of real;

begin

setwindowsize(600,600);

line(300,0,300,600);

line(0,300,600,300);

assign(l,'data3.txt');

reset(l);

for n:=1 to 4 do

begin

readln(l,m);

Q[n]:=m;

end;

A:=Q[1];

R:=Q[2];

t:=0;

while t<2*p do

begin

x:=(1+A)*cos(A*t)+R*cos(1+A)*t;

y:=(1+A)*sin(A*t)+R*sin(1+A)*t;

circle(trunc(x*20+300),trunc(y*20+300),2);

t:=t+0.01;

end;

close(l);

end.

Приложение Г

Код программы к заданию 5

Program А5;

Uses Crt;

Const n=10;

Type kniga = record

Avtor, Nazvanie, Izdatel:string[20];

God:integer;

Stranizy:real;

end;

Var a : array[1..n] of kniga;

i :byte;

avt:string;

naz:string;

izd:string;

max:real;

g:integer;

begin

ClrScr;

for i:=1 to n do

with a[I] do

begin

Writeln('Введите автора ',I);

Readln(Avtor);

Writeln('Название книги');

Readln(Nazvanie);

Writeln('Издательство');

Readln(Izdatel);

Writeln('Год издания');

Readln(god);

Writeln('Кол-во страниц');

Readln(Stranizy);

end;

Writeln;

Writeln('Введите автора интересующей книги');

Readln(avt);

for i:=1 to n do

with a[I] do

if avtor=avt then writeln (avtor,' "',Nazvanie,'", ',izdatel,' ',god,'г. ',stranizy,'стр.');

Readln;

Writeln('Книга с наибольшим кол-ом страниц');

max:=0;

for i:=1 to n do

with a[I] do

if stranizy>max then begin

max:=stranizy;

naz:=Nazvanie;

end;

write(Naz,' ',max,'стр.');

Readln;

Writeln('Введите автора интересующей книги');

Readln(avt);

Writeln('Укажите год издания');

Readln(g);

Writeln('Укажите Издательство');

Readln(izd);

for i:=1 to n do

with a[I] do

if (avt=avtor) and (g=god) and (izd=Izdatel) then writeln('Книга "',Nazvanie,'", ',stranizy,'стр.');

Readln;

end.

Размещено на Allbest.ru


Подобные документы

  • Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.

    курсовая работа [381,7 K], добавлен 10.05.2018

  • Разработка программ на языке Turbo Pascal на основе использования массивов данных. Особенности хранения данных, способы объявления переменных, действия над элементами массивов, их ввод и вывод. Практическое применение одномерных и многомерных массивов.

    методичка [17,8 K], добавлен 25.11.2010

  • Сравнительный анализ языков программирования высокого уровня Си и Паскаль. Реализация алгоритма обработки данных. Тестирование и отладка программы или пакета программ. Структура программы на языке Турбо Паскаль. Указатели и векторные типы данных.

    курсовая работа [233,5 K], добавлен 14.12.2012

  • Программирование на языке Паскаль: алфавит, решение задач, простейшие программы, разветвляющие программы, циклические программы, ввод-вывод, массивы, подпрограммы, строковые данные, записи, файлы, использование библиотеки CRT, графика в Паскале.

    учебное пособие [211,1 K], добавлен 30.03.2008

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

    курсовая работа [254,0 K], добавлен 02.07.2011

  • Рассмотрение основных функций программы Microsoft Access. Решение задач на языке программирования Pascal. Создание визитной карточки в графическом редакторе Paint и презентации в PowerPoint. Изучение работы с пакетом прикладных программ Open Office.

    курсовая работа [3,0 M], добавлен 14.06.2010

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

    курсовая работа [48,8 K], добавлен 27.11.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.