русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

B A B A A


Дата добавления: 2014-11-27; просмотров: 1074; Нарушение авторских прав


true false false

Пример. Составить программу выделения следующих множеств из множества целых чисел от 1 до 30 :

- множества чисел, кратных 2;

- множества чисел, кратных 3;

- множества чисел, кратных 6;

- множества чисел, кратных 2 или 3;

Вопросы для обсуждения :

1. Сколько множеств надо описать? (Каков тип их элементов? (четыре множества с элементами типа Byte).

2. Каково начальное значение множеств ? (начальное значение множеств – пустое множество).

3. Как формируются множества? (Первые два формируются перебором всех чисел данного промежутка и отбором подходящих, а третье и четвертое получаются из первых двух путем применения операции пересечения или объединения).

4. Как осуществить вывод сформированных множеств? (Вывод множеств производится ТОЛЬКО поэлементно, поэтому удобно составить процедуру и передавать в нее множество, элементы которого и будут выводить на экран. Для этого в разделе типов надо создать соответствующий тип и использовать его в дальнейшем).

Program mnog;

const n=30;

type mn=Set Of 1..n;

var n2, n3, n6, n23 : mn;

k : integer;

procedure print(m: mn);

var i: integer;

begin

for i:=1 to n do if i In m then write(i:3);

writeln;

end;

BEGIN

n2=[ ]; n3=[ ];

for k:=1 to n do

begin

{если число делится на 2, то заносим его в n2 }

if k Mod 2 = 0 Then n2:=n2+[k];

{если число делится на 3, то заносим его в n3 }

if k Mod 3 = 0 Then n3:=n3+[k];

end;

{числа, кратные 6, - это те, которые кратны и 2 и 3, поэтому это пересечение двух множеств, а числа, кратные 2 или 3, - это объединение этих же множеств}

n6:=n2*n3; n23:=n2+n3;

writeln(‘числа, кратные 2’); print(n2);

writeln(‘числа, кратные 3’); print(n3);

writeln(‘числа, кратные 6’); print(n6);

writeln(‘числа, кратные 2 или 3’); print(n23);

END.

 



Пример 2. Если взять то общее, что есть у боба с ложкой, добавить кота и поместить в тепло, то получится муравей. Так ли это ?

program bob;

var y1, y2, y3, y4, x : Set Of Char;

s : Char;

BEGIN

y1:=[‘б’, ‘о’, ‘б’]; y2:=[‘л’, ‘о’, ‘ж’, ‘к’, ‘а’];

y3:=[‘к’, ‘о’, ‘т’]; y4:=[‘т’, ‘е’, ‘п’, ‘л’, ‘о’];

x:=(y1*y2) + y3 – y4;

writeln(‘множество х’);

for s:=’a’ to ‘я’ do if s In x then write(s); writeln;

{проверка: состоит ли муравей из кота}

if y3<=x then write(‘муравей состоит из кота’)

else write(‘муравей не состоит из кота’);

END.

 



Пример 3. Дан ребус МУХА + МУХА = СЛОН

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

Для решения этой задачи применим метод перебора с возвратом. Используем множество S1 для хранения цифр слова МУХА, причем будем заносить в него цифры последовательно, учитывая уже внесенные цифры. Начальное значение S1 – пустое множество. После выбора всех цифр первого слова формируем соответствующее число и находим число, соответствующее слову СЛОН. Выделяем цифры СЛОНа (множество S2), и если слова состоят из различных цифр (то есть пересечение S1 и S2 пустое) и все цифры СЛОНа разные, то выводим решение на экран. Далее удаляем из множества S1 последнюю внесенную цифру и пытаемся выбрать еще одно ее значение. Таким образом, мы перебираем все возможные варианты и выводим на экран только те, которые удовлетворяют равенству.

Заметим, что букве «М» в слове МУХА может соответствовать цифра от 1 до 4, а букве «А» в этом же слове не может соответствовать 0.

Program myxa;

type mn=Set Of 0..9;

var m, y, x, a : 0..9; {цифры числа МУХА}

n1, n2 : integer; {числа МУХА и СЛОН}

a1, a2, a3, a4 : 0..9; {цифры числа СЛОН}

S1, S2 :mn;

procedure Print(x,y:integer); {вывод решения в виде ребуса }

begin

writeln(x:5);

writeln(‘+’);

writeln(x:5);

writeln(‘____’);

writeln(y:5);

end;

BEGIN

s1:=[ ]; s2:= [ ];

for m:=1 to 4 do

begin

s1:=s1+[m]; { заносим первую использованную цифру}

for y:=0 to 9 do {если это цифра не была еще взята, то добавляем ее во множество цифр числа МУХА и выбираем цифру для следующей буквы }

if Not (y In s1)

then begin s1:=s1+[y];

for x:=0 to 9 do

if Not (x In s1)

then begin s1:=s1+x;

for a:=1 to 9 do

if Not (a In s1)

then begin s1:=s1+[a];

n1:=1000*m+100*y+10*x+a;

n2:=2*n1;

a1:=n2 div 1000;

a2:=n2 div 100 mod 10;

a3:=n2 div 10 mod 10;

a4:=n2 mod 10;

s2:=[a1,a2,a3,a4];

if (s1*s2=[]) and ([a1]*[a2]*[a3]*a[4]=[])

then Print(n1,n2);

s1:=s1-[a];

end;

s1:=s1-[x];

end;

s1:=s1-[y];

end;

s1:=s1-[m];

end;

END.

Задачи:

14.1 Дана непустая последовательность символов. Построить и напечатать множества, элементами которых являются встречающиеся в тексте:

· цифры от ‘0’ до ‘9’ и знаки арифметических операций;

· буквы от ‘A’ до ‘F’ и от ‘X’ до ‘Z’;

· знаки препинания и буквы от ‘E’ до ‘N’.

14.2 Вывести в алфавитном порядке элементы множества, составленного из произвольных букв от ‘A’ ….’Z’.

14.3 Составить программу печати в возрастающем порядке всех цифр, входящих в десятичную запись данного числа..

14.4 Дан текст. Вывести в алфавитном порядке все буквы текста, входящих в него : а) не менее двух раз;б)не более двух раз; в) более двух раз.

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

14.6 Составить программу подсчета общего количества цифр и знаков ‘+’, ‘-‘, ‘*’ в строке s, введенной с клавиатуры.

14.7 Задано множество вычислительных машин. Известен набор машин, имеющих в каждом из 10 техникумов. Построить и распечатать множества, включающие в себя вычислительные машины :

а) которыми обеспечены все техникумы;

б) которые имеет хотя бы один техникум;

в) которых нет ни в одном техникуме.

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

14.9 Написать программы решения ребусов :

а) ЛОБ + ТРИ = САМ, б) ИСК + ИСК = КСИ,

в) ТОЧКА + КРУГ = КОНУСг) VOLVO + FIAT = MOTOR,

д) АВ + ВС + СА = АВС.

14.10 Дана не пустая последовательность символов. Напечатать количество вхождений в данную последовательность заглавных латинских букв ‘A’, ‘B’, ‘C’.

14.11 Вывести на экран все простые числа от 11 до 101.

Создание меню.

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

Задача: Составить программу для организации функционирования следующего меню:

 



                           
 
1 число
 
2 число
 
сложение
 
вычитание
 
умножение
 
деление
 
результат

 




При выборе первых двух пунктов появляется экран на котором запрашивается значения соответсвенно первого или второго чисел, при выборе 3, 4, 5 или 6 пунктов выдается сообщение что соответсвующее дейсвтие выполнено, но полученное значение не выводится. При этом необходимо отслеживать введены ли оба числа, если не хватает хотя бы одног нужно выдать сообщения вида: «Не хватает данных». При выборе меню результат нужно вывести результат выполнения последнего действия, если действий не было совершено то нужно об этом сказать.

Для организации линейного меню необходимо пользоваться одномерным массивом.

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

Работа с мышью

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

Для того чтобы на экране появился курсор мыши необходимо запустить процедуру mouseshow. Для отключения изображения курсора выполняется процедура mousehide. Это необходимо делать из-за того, что при выводе на экран в точку, где изображен курсор, может происходить несколько не приятные искажения игуры или числа (т.к. в графическом режиме точки закрытые курсором закрашены не будут).

Для организации действий по желчку мыши необходимо использовать процедуру mouseread(x,y,b); где х и у – это координаты указателя (в графическом режиме размер 640х200), а b – информация о нажатой клавише мыши, все три параметра должны иметь тип word. Варианты значений параметра b: 0 – клавиша не была нажата; 1 – была нажата левая клавиша мыши; 2 – была нажата правая клавиша мыши; 3 – были нажаты одновременно левая и правая клавиши мыши (либо средняя).

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

Для графического режима:

mouseshow;

repeat

mouseread(x,y,b);

if b=1 then begin

delay(100);

setfillstile(1,0);

bar(0,0,60,10);

str(x,xg); str(y,yg);

outtextxy(1,1,xg);

outtextxy(30,1,yg);

end;

until b=2;

Ниже приведен фрагмент программы который отображает в верхнем левом углу сведения о координатах курсора мыши соответсвующие его местоположению на экране.

Для текстового режима:

mouseshow;

repeat

mouseread(x,y,b);

gotoxy(1,1);

write(x:3,y:5);

xt:=x div 8+1;

yt:=y div 8+1;

gotoxy(1,2);

write(xt:3,yt:5);

until b=2;

Задачи:

1. Изображение звездочки в точке нажатия клавиши мыши.

2. Создать модель пианино. Изображение клавиш при щелчке, по которым происходит звук соотвествующий нажатой ноте.

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

4. Аналогично третьей задаче только происходит перетаскивание букв на экран.



<== предыдущая лекция | следующая лекция ==>
Контрольная работа. | В чем выгода и долг человека: как добиться, чтобы он их постиг и руководствовался ими


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 5.99 сек.