Язык программирования ABC PASCAL - [16]

Шрифт
Интервал


Задание 16

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

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

3. Напишите программу, которая вводит из файла 10 текстовых строк и выводит их в другой файл, отсортированными в алфавитном порядке. Используйте алгоритм сортировки занятия №13, и операцию сравнения строк < или >. (5 баллов)

4. Основываясь на программе ABCMorse придумайте интересную задачу на использование текстовых строк и множеств. (доп. баллы)

- 44 -

Файл morse.txt

·-

-···

·--

--·

-··

·

···-

--··

··

·---

-·-

·-··

--

---

·--·

·-·

···

-

··-

··-·

····

-·-·

---·

----

--·-

--·--

-·--

-··-

··-··

··--

·-·-


>Program ABCMorze;

>Uses Sounds,CRT;

>var A : array ['А '..'Я '] of string [5];

> c : char;

> f : text;

> s : string;

> i,j : integer;

> dash, dot : integer;

> morze : string [5];

>

>begin

>// Читаем файл и заполняем массив строк A['А'], A['Б'], A['Я'] азбукой Морзе

> assign (f,'morze.txt'); reset (f);

>for c:='А' to 'Я' do readln(f,A[c]);

> close(f);

> // Выводим таблицу на экран

>for c:='А' to 'Я' do write(c,' ',A[c]:5,' ');

> // Загружаем звуки

> dash:=LoadSound('dash.wav'); dot:=LoadSound('dot.wav');

> // Вводим текстовую строку

> writeln; write('Введите сообщение '); readln(s);

>for i:=1 to length(s) do // Разбираем ее по символам

>if Upcase (s[i]) in ['А '..'Я '] then // Проверка принадлежности

>begin // Если это русская буква (перевод в заглавные – Upcase)

> morze:=A[Upcase(s[i])]; // Читаем s[i] элемент массива A в строку morze

>for j:=1 to Length(morze) do // Разбираем строку Morze и проигрываем её

>begin

> write (morze [j]); // Вывод на экран буквы кодом Морзе

>if morze[j]='-' then

>begin

> PlaySound(dash); Sleep(SoundLength(dash)); // играем dash

>end

>else

>begin

> PlaySound(dot); Sleep(SoundLength(dot)); // играем dot

>end;

> Sleep(50);

>end;

> write (' '); Sleep (500); // Пауза между буквами 500 мс

>end; // end к внешнему оператору if

>end.

- 45 -

Тема №17 Задача о квадратном уравнении

Решение квадратного уравнения выходит за рамки курса математики 7 класса, но мы сочли возможным внести эту классическую задачу программирования в дополнение.

Квадратным уравнением называется уравнение вида

ax>2 + bx + c = 0


На первом этапе его решения определяется так называемый дискриминант:

d = b>2 - 4ac


Далее рассматривают три случая

1. d < 0 – в этом случае вещественных решений нет[17];

2. d = 0 – один корень, определяемый формулой -b / 2a;

3. d > 0 – два корня, вычисляемых по формуле x>1,2 = (-b ± √d)/2a, где знак «+» соответствует первому корню, а знак «–» – второму корню.


Составим программу для решения этой задачи:


>Program SquareEquation;

>var a, b, c : real; // Коэффициенты уравнения

> d : real; // Дискриминант

> x1, x2 : real; // Корни уравнения

>begin

> write ('Введите a, b, c ');

> readln (a,b,c); // Ввод исходных данных

> d:=b*b-4*a*c; // Вычисление дискриминанта

>if d<0 then writeln('Решений нет')

>else if d=0 then begin

> x1:=-b/(2*a);

> write('x=',x1)

>end

>else begin

> x1:=(-b+sqrt(d))/(2*a);

> x2:=(-b-sqrt(d))/(2*a);

> write('x1=',x1,' x2=',x2)

>end

>end.


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

>else begin

> d:=sqrt(d); a:=2*a;

> x1:=(-b+d)/a;

> x2:=(-b-d)/a;

> write('x1=',x1,' x2=',x2)

>end

- 46 -

01.06.2013


Рекомендуем почитать
Основы медицинских знаний и здорового образа жизни

Подробно рассмотрены следующие разделы: здоровье и здоровый образ жизни, основы знаний о медицинской помощи, общий уход за пострадавшими и больными, основы эпидемиологии и инфекционных заболеваний, основы профилактики аддиктивного поведения в молодежной среде, особенности обеспечения здоровья и здорового образа жизни современного человека. Знания по дисциплине «Основы медицинских знаний и здорового образа жизни» служат теоретической и практической основой для освоения ряда дисциплин вариативной части профессионального цикла «Физическая культура», «Безопасность жизнедеятельности»Соответствует ФГОС ВО нового поколения.Для студентов бакалавриата, обучающихся по направлению «Педагогическое образование» и профилям подготовки: «Физическая культура»; «Психология и социальная педагогика»; «Английский язык, немецкий язык, французский язык»; «История, право»; «Информатика»; «Технологическое образование».


Обучение эмоциональному речевому воздействию

В пособии впервые представлен повышенный состав приемов эмоционального речевого воздействия – 32 психологических аргумента и 52 речевые тактики, имеющие эмоциональный заряд. Уделяется большое внимание различной эмоциональной реакции на осуществляемое эмоциональное речевое воздействие. 80 упражнений обеспечивают необходимую тренировку в распознавании, понимании таких приемов воздействия и в их умелом использовании в собственной речи. Также рассматриваются факторы, способствующие возникновению речевых эмоций и эмоциональной реакции на их выражение.Для преподавателей и студентов вузовских курсов «Риторика», «Основы речевой коммуникации», «Русский язык и культура речи» и др., а также для широкого круга читателей.


Литература и методы ее изучения. Системный и синергетический подход

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


Актуальные проблемы современной лингвистики

Предлагаемое пособие включает развернутую программу учебной дисциплины «Актуальные проблемы современной лингвистики», хрестоматию и систему заданий творческого и проблемного характера. Издание призвано обеспечить изучение цикла общелингвистических дисциплин: «Теория языка», «Общее языкознание», «Актуальные проблемы современной лингвистики», включенных в блок специальных дисциплин государственного образовательного стандарта по направлению «Филология», а также в образовательный стандарт подготовки магистров по направлениям «Филология» и «Языковое образование».Для студентов, магистрантов, аспирантов, преподавателей-филологов.6-е издание.


Спринт на шахматной доске. Как победить в блице

Легендарный питерский шахматист Генрих Чепукайтис, «заслуженный рецидивист блица», многократный чемпион Ленинграда-Петербурга и Москвы по молниеносной игре, вставал в турнирной таблице подчас выше М. Таля, В. Корчного и Т. Петросяна.Будучи одним из сильнейших блицоров мира, Генрих Михайлович свою главную идею в шахматах выразил одной фразой: «Хорошо играть совсем не обязательно, надо, чтобы партнер играл плохо!».Вы узнаете, что надо делать на висячих флажках, как сбить соперника с толку, загнать его в цейтнот и заставить ошибаться.Предваряет повествование замечательный очерк гроссмейстера и литератора Г. Сосонко «Чип», полная версия которого публикуется впервые.Новое издание книги существенно переработано и дополнено.Особенно эта книга будет интересна желающим усилить свою игру в «пятиминутках».


Патологическая анатомия

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