Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Уроки программирования на Turbo Pascal


Информационный Канал Subscribe.Ru


Уроки программирования на Turbo Pascal #5

Подписчиков на 2002-07-31 - 576 человек(а).

Рассылка проекта "Олимпиада.com.ru".


Главная Архив задач Конкурс Рассылки Форум Гостевая книга Контакты

Здравствуйте, уважаемые подписчики!


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


Урок 5


5.1. Обмен значениями.
  Начнем с разбора 6-го задания предыдущего урока. Первая мысль, приходящая в голову, это написать программу, похожую на эту:

  A := B;
  B := A;

  Но эта программа работать не будет (в обеих переменных будет значение B).
  Теперь поищем правильное решение. Обозначим начальное значение A за A1, B за B1. Тогда необходимо, чтобы по окончании работы программы A равнялось B1, а B - A1.

0) A=A1; B=B1;
1) Занесем в переменную A результат суммирования A и B (A := A + B):
     A = A1 + B1; B = B1;
2) Занесем в переменную B разность A и B (B := A - B):
     т.к. A = A1 + B1; то B=(А11)-В = A1;
3) Занесем в переменную A разность A и B (A := A - B):
    A = B1; B = A1;

Код программы:
Program prim_4;
Var a,b:integer;
Begin
    Write('введите два числа ');
    Readln(A,B);
    A:=A+B;
    B:=A-B;
    A:=A-B;   
    Writeln('A=',A);
    Writeln('B=',B);
    Readln;
End.


5.2.Эффективные алгоритмы.
  Вы уже знаете, что в Паскале отсутствует возможность возведения в степень, не считая квадрата. Поэтому для получения а^20 нужно а*а*а*а...*а 19 раз. Но если учесть, что результат умножения можно сохранить в промежуточной переменной, ответ можно найти за 5 действий.


Program prim_4;
Var a,b:real;
Begin
    Write('введите число');
    Readln(A);
    В:=A*А;    {получаем А во 2}
    B:=В*В;    {получаем А в 4}
    В:=A*B;    {получаем А в 5}
    B:=В*В;    {получаем А в 10}
    B:=В*В;    {получаем А в 20}
    Writeln('A в 20 степени=',В:0:2);

    {Вместо указания ширины поля для вывода числа лучше ставить 0, тогда компилятор отведет столько позиций под целую        часть, сколько получилось в ответе, а для дробной части я посчитала возможным оставить 2 позиции}
    Readln
End.

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

Задание для тренировки.
  1.Дано вещественное число А. Не пользуясь никакими арифметическими операциями, кроме умножения, получить:
     1) А^4 за две операции;
     2) А^6 за три операции;
     3) А^7 за четыре операции;
     4) А^8 за три операции;
     5) А^9 за четыре операции;
     6) А^13 за пять операции;
     7) А^15 за пять операции;
     8) А^19 за пять операции;
     9) А^21 за шесть операции;
     10)А^28 за шесть операции;

5.3.Целочисленная арифметика. Задачи на целочисленное деление.
  В программировании существует целый класс задач, где действия производятся только с целыми числами. При решении подобных задач обычно используются операции над целыми MOD и DIV. Сегодня мы познакомимся с задачами на целочисленное деление.

Задача. Дано расстояние в сантиметрах. Найти число полных метров в нем.

Код программы:
Program prim_4;
Var a,b:integer;
Begin
    Write('введите расстояние в сантиметрах');
    Readln(a);
    b:=a mod 100;
    Writeln(b,' метров ');
   Readln
End.

Задания для тренировки.
  2.Дана масса в килограммах. Найти число полных центнеров в ней.
  3.Дана масса в килограммах. Найти число полных тонн в ней.
  4.Дано расстояние в метрах. Найти число полных километров в нем.
  5.Дан прямоугольник с размерами 543х130 мм. Сколько квадратов со стороной 130 мм можно отрезать от него?
  6.*Дано целое число k (1 <= k <= 365). Присвоить целочисленной величине n значение 1, 2,...,6 или 0 в зависимости от того, на какой день недели (понедельник, вторник, ..., суббота или воскресенье) приходится k-й день года, в котором 1 января - понедельник.

Правильные ответы для тех, кто выполнил задания предыдущего урока.
Задания.
1)Напишите программу, которая запрашивает два числа, находит остаток от деления первого на второе и выводит результат.
Program prim_3;
Var a,b,x:integer;
Begin
    Write('введите два числа ');
    Readln(a,b);
    X:=a mod b;
   Writeln('остаток от деления-',x);
   Readln
End.

2)Составьте программу нахождения периметра квадрата, если задана его площадь.
Program prim_4;
Var a,b,x:real;
Begin
    Write('введите площадь квадрата ');
    Readln(a);
    X:=sqrt(a);
    B:=x*4;
   Writeln('периметр квадрата =',x:0:3);
   Readln
End.

4)Найти площадь кольца по заданным внешнему и внутреннему радиусам.
Program prim_4;
Var r1,r2,s:real;
Begin
    Write('введите радиусы кольца ');
    Readln(r1,r2);
    S:=abs(2*3.14*r1-2*3.14*r2);    {разность площадей берем по модулю, так как не знаем
                                     какое из колец является внутренним, а какое внешним}
    Writeln('площадь кольца =',s:0:2);
    Readln
End.

Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru.


Реклама в рассылке:

RLE    

  


Подпишитесь на наши рассылки:

Новости проекта "Олимпиада.com.ru" [Алексей Шамис]
Новости проекта "Olimpiada.com.ru". Новые темы на форуме. Информация о пополнениях в архиве задач. Оперативно и своевременно!

Уроки программирования на Turbo Pascal [Ганилова Татьяна]
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.

Олимпиадные задачи с решениями на Turbo Pascal [Шамис Алексей]
В рассылке публикуются решения интересных олимпиадных задач различного уровня. Содержит много теоретической информации. Периодичность - 2-3 раза в неделю.

Задача в неделю. Олимпиадные задачи по информатике [Алексеев Александр]
Каждый понедельник в рассылке публикуется задача, которую необходимо решить и в следующий понедельник прислать программу на тестирование. Решения проверяются, и в пятницу публикуется разбор и итоги тестирования.



Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Алексей Шамис

Copyright © 2002 by Ganilova Tatyana.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное