Четверг, 28 Марта 2024, 20:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Урок №2 Если Тогда Ещё
Урок №2 Если Тогда Ещё
SharomДата: Суббота, 06 Февраля 2010, 22:47 | Сообщение # 1
участник
Сейчас нет на сайте
В данном уроке нашей целью будет написание программы для подсчёта корней уравнения. (Дискриминант).

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

3 это а
8 это b
5 это с

У вас, наверное, возникает вопрос, а как же возвести число в квадрат? Это мы можем добиться двумя способами. Мы можем умножить число на число (x*x) либо использовать готовую функцию sqr
sqr(x)

Давайте напишем программу
В разделе Var объявим переменные

a,b,c – наши числа из уравнения
D – результат нашего дискриминанта

Code
Program  Discrim;

    var
     a, b, c, D : integer;
        
begin
     writeLn ('Решение квадратного уравнения: 3*х^2 + 8*x + 5 = 0');
        
      a := 3;
      b := 8;
      c := 5;        // Наши значения    

      D := sqr (b) - 4 * a * c;  // Уравнение дискриминанта

Writeln(D);
Readln;
             End.

Как видите мы посчитали дискриминант, но как нам известно это еще не все. Нужно так же посчитать корни уравнения.
У нас будет два корня x1 и x2 считаются они по формуле

X1 =

X2 =

Квадратный корень вычитается с помощью функции sqrt(x)
Х – это число либо функция из которой нужно вычесть квадратный корень.

Так как у нас деление, X1 и X2 объявим типом Real

Code
var
     a, b, c, D : integer;
     x1, x2 : real;

Уравнения для нахождения корней будут иметь вид

Code
x1 := (- b - sqrt (D)) / (2 * a);

x2 := (- b + sqrt (D)) / (2 * a);

Давайте соберем все в кучу

Code
Program  Discrim;

    var
     a, b, c, D : integer;
     x1, x2 : real;
    begin
     writeLn ('Решение квадратного уравнения: 3*х^2 + 8*x + 5 = 0');
        
     { Инициализация начальных значений }
      a := 3;
      b := 8;
      c := 5;

      { Вычисление дискриминанта }
      D := sqr (b) - 4 * a * c;

      { Вычисление корней }
      x1 := (- b - sqrt (D)) / (2 * a);
      x2 := (- b + sqrt (D)) / (2 * a);

      { Вывод результата }
      writeLn ('Корни уравнения:');
      writeLn ('X1 = ', x1 : 1 : 5);
      writeLn ('X2 = ', x2 : 1 : 5)
    end.

Однако у тех, кто знает математику может возникнуть вопрос: А что если дискриминант отрицательный? Да для этого случая он положительный, но, в общем?
Вопрос вполне законен! Итак, как же мы можем сравнить дискриминант с нулём?
В Паскале существует так называемый условный оператор. Вот как он выглядит:

Code
if условие then
оператор1
else
оператор2

В прошлом уроке я вам советовал обзавестись переводчиком, так вот сейчас он вам понадобится.

Давайте разберём оператор по полочкам или шкафам, у кого как smile
Итак, при переводе на русский if - then - else означает, если - тогда – ещё. Можно сказать и так:
Однако в языках программирования слово else переводится как Иначе(в другом случае), это значение мы и будем использовать

Если условие верно, тогда выполняем оператор1, иначе(если условие не верно), тогда выполняем оператор2

Как же нам узнать верно, условие или нет? Для этого существуют операторы сравнения:
Будем всё смотреть на примерах:

Напишем программу:

Code
Program If;
Var
A:integer ;
    Begin
     Readln(a);
      If a>0 then
      Writeln('LA-LA-LA')
     Else
      Writeln('LAAAAAAAAAAAAAA') ;
      readln;
End.

Давайте разберем программу. Что же она делает?
Мы вводим число а, если a больше нуля, тогда выводится сообщение LA-LA-LA, если же а не равно нулю, тогда выводится сообщение LAAAAAAAAAAAAAA.

Операторы сравнения

Давайте, применим эти знания на программе Дискриминант;

Code
Program  Discrim;

    var
     a, b, c, D : integer;
     x1, x2 : real;
    begin
     writeLn ('Решение квадратного уравнения: 3*х^2 + 8*x + 5 = 0');
        
     { Инициализация начальных значений }
      a := 3;
      b := 8;
      c := 5;

      { Вычисление дискриминанта }
      D := sqr (b) - 4 * a * c;

      if D >= 0 then
    begin
       { Вычисление корней }
        x1 := (- b - sqrt (D)) / (2 * a);    
        x2 := (- b + sqrt (D)) / (2 * a);

       { Вывод результата }
        writeLn ('Корни уравнения:');
        writeLn ('X1 = ', x1 : 1 : 5);
        writeLn ('X2 = ', x2 : 1 : 5)
     end
     else
     begin
         { Корней нет }
         writeLn ('Данное уравнение не имеет корней!');
         writeLn ('Попробуйте ещё!')
     end;
        
    end.

Если вы заметили то, после слов if и else, идут слова begin, операторы, end;
Если нам нужно написать не одну строчку x1 := (- b - sqrt (D)) / (2 * a);
а X1 и X2 (не писать же нам для X2 еще один оператор IF) для этого мы заключаем X1 и X2 в блок(подпрограмму).Это как бы программа в программе, только если основная программа начинается begin и заканчивается end. то в подпрограмме начинается begin и заканчивается end;

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

На этом наш урок окончен

Прикрепления: 1243153.jpg (3.6 Kb) · 4836767.jpg (1.4 Kb) · 0934759.jpg (1.6 Kb)


Сообщение отредактировал Sharom - Воскресенье, 07 Февраля 2010, 00:22
nilremДата: Суббота, 06 Февраля 2010, 22:55 | Сообщение # 2
Просветленный разум
Сейчас нет на сайте
Quote (Sharom)
Итак, при переводе на русский if - then - else означает, если - тогда – ещё.

Не, ну реально бред. Особенно ещё.
В русском языке эта конструкция всегда имела и сейчас имеет следующий вид:

если - то - иначе


Windmill 2

WindMill 2D Game Engine
MaximSokolДата: Суббота, 06 Февраля 2010, 23:00 | Сообщение # 3
Доктор Макс Пэйн
Сейчас нет на сайте
Sharom, а это для кого урок? и урок чего? К игровой логике квадратные уравнения отношения не имеют ( в самом деле, ax+bx+c=0 - что с него взять? разве что случайное число-корень). И вообще это вроде в 8 классе проходят. wink

Моя страница на проза.ру - перейти
Я - начинающий писатель.)
SharomДата: Суббота, 06 Февраля 2010, 23:05 | Сообщение # 4
участник
Сейчас нет на сайте
Quote (nilrem)
Не, ну реально бред. Особенно ещё.

Else переводится еще.

Quote (nilrem)
В русском языке эта конструкция всегда имела и сейчас имеет следующий вид: если - то - иначе

Эта конструкция имеет такой вид при изучении языков программирования.

Сейчас исправлю.

Даже если кому-то не нравится, все равно буду продолжать писать!

Добавлено (06.02.2010, 23:05)
---------------------------------------------

Quote (MaximSokol)
Sharom, а это для кого урок? и урок чего? К игровой логике квадратные уравнения отношения не имеют ( в самом деле, ax+bx+c=0 - что с него взять? разве что случайное число-корень). И вообще это вроде в 8 классе проходят.

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

Quote (MaximSokol)
К игровой логике квадратные уравнения отношения не имеют

Имеют. Все равно ничего не бывает лишним
MaximSokolДата: Суббота, 06 Февраля 2010, 23:14 | Сообщение # 5
Доктор Макс Пэйн
Сейчас нет на сайте
Quote (Sharom)
Else переводится еще.

Всю жизнь было "иначе" wacko


Моя страница на проза.ру - перейти
Я - начинающий писатель.)
CrazyDazeGroutДата: Суббота, 06 Февраля 2010, 23:42 | Сообщение # 6
Spirit Of Beginning
Сейчас нет на сайте
if - если
then - то, тогда
else- иначе

И не путай с elsewhere (где-то ещё, другое место)!

SharomДата: Суббота, 06 Февраля 2010, 23:51 | Сообщение # 7
участник
Сейчас нет на сайте
Quote (MaximSokol)
Всю жизнь было "иначе"

Quote (CrazyDazeGrout)
if - если then - то, тогда else- иначе И не путай с elsewhere (где-то ещё, другое место)!

Это вы что-то путаете. Используя слово else в языках программирования, оно имеет значение Иначе.

С точки технического перевода слово переводится как Еще.

Учите английский ребята.

CrazyDazeGroutДата: Воскресенье, 07 Февраля 2010, 00:06 | Сообщение # 8
Spirit Of Beginning
Сейчас нет на сайте
Quote (Sharom)
С точки технического перевода слово переводится как Еще.

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


Master_ChiefДата: Воскресенье, 07 Февраля 2010, 00:11 | Сообщение # 9
Shoot Space creator
Сейчас нет на сайте
Quote (Sharom)

3x это а
8х это b
5x это с

вообще-то так:
3 - a
8 - b
5 - c




Сообщение отредактировал Master_Chief - Воскресенье, 07 Февраля 2010, 00:12
SharomДата: Воскресенье, 07 Февраля 2010, 00:18 | Сообщение # 10
участник
Сейчас нет на сайте
Quote (CrazyDazeGrout)
Это я знаю, но какой смысл упоминать другое значение слова, если там где вы его используете это не применимо,

Смысл в том что я посоветовал пользоваться переводчиками и перевод будет техническим. Если бы я написал Иначе, то потом какой нибудь новичек задал вопрос "Почему переводится иначе, ведь переводчик переводит это слово как ещё?". И пришлось бы разводить столько же сообщений как на данный момент. Так что предлагаю тему перевода считать закрытой.

Добавлено (07.02.2010, 00:18)
---------------------------------------------

Quote (Master_Chief)
вообще-то так: 3 - a 8 - b 5 - c

Да, спасибо Master_Chief, упустил момент

CrazyDazeGroutДата: Воскресенье, 07 Февраля 2010, 00:26 | Сообщение # 11
Spirit Of Beginning
Сейчас нет на сайте
Quote (Sharom)
Если бы я написал Иначе, то потом какой нибудь новичек задал вопрос "Почему переводится иначе, ведь переводчик переводит это слово как ещё?

Не уходите от темы, новичку нужно точно понимать что означает данное выражение там, где он его изучает. Это не уроки английского, это уроки узкой направленности, где важно значение ТОЛЬКО в этой направленности. Затрагивая другой перевод вы ставите логику новичка в тупик, что не позволительно для уроков. Новичкам нужном подавать всё на ладони, отсекая всё что не касается темы.


MaximSokolДата: Воскресенье, 07 Февраля 2010, 00:34 | Сообщение # 12
Доктор Макс Пэйн
Сейчас нет на сайте
Quote (Sharom)
Учите английский ребята.

Quote (Sharom)
Смысл в том что я посоветовал пользоваться переводчиками и перевод будет техническим. Если бы я написал Иначе, то потом какой нибудь новичек задал вопрос "Почему переводится иначе, ведь переводчик переводит это слово как ещё?". И пришлось бы разводить столько же сообщений как на данный момент. Так что предлагаю тему перевода считать закрытой.

Видимо, ты учил английский по переводчикам типа promt wink Тебе совет от того, кто 13 лет учит английский - поменьше переводчиков, побольше книжек happy


Моя страница на проза.ру - перейти
Я - начинающий писатель.)
SharomДата: Воскресенье, 07 Февраля 2010, 00:35 | Сообщение # 13
участник
Сейчас нет на сайте
Quote (CrazyDazeGrout)
Не уходите от темы,

От темы никто не уходил, я просто предложил прекратить споры и не засорять тему.

Quote (CrazyDazeGrout)
новичку нужно точно понимать что означает данное выражение там, где он его изучает. Это не уроки английского, это уроки узкой направленности, где важно значение ТОЛЬКО в этой направленности. Затрагивая другой перевод вы ставите логику новичка в тупик, что не позволительно для уроков. Новичкам нужном подавать всё на ладони, отсекая всё что не касается темы.

Что он не поймет? Даже если я написал непонятный ему перевод, дальше идет еще одно объяснение
Quote (Sharom)
Если условие верно, тогда выполняем оператор1, если условие не верно, тогда выполняем оператор2

Даже если и это не понятно.Извините уж, я не идеален.
KamskiiДата: Воскресенье, 07 Февраля 2010, 00:41 | Сообщение # 14
Game ≠ Toy
Сейчас нет на сайте
Чтобы прекратить бесмысленные споры-статья из словаря Мюллера
MaximSokolДата: Воскресенье, 07 Февраля 2010, 00:53 | Сообщение # 15
Доктор Макс Пэйн
Сейчас нет на сайте

Как урок алгебры - хорошо wink


Моя страница на проза.ру - перейти
Я - начинающий писатель.)
CrazyDazeGroutДата: Воскресенье, 07 Февраля 2010, 00:54 | Сообщение # 16
Spirit Of Beginning
Сейчас нет на сайте
[]
1. нареч.
1) ещё, кроме (с вопроситительными местоимениями, а также с местоимениями и наречиями, производными от some, any, no)
What else must I do? — Что ещё я должен сделать?
Where else did you go? — Куда ещё вы ходили?
Ask somebody else about it. — Спросите ещё кого-нибудь об этом.
Are you going anywhere else after that? — Вы пойдёте куда-нибудь ещё после этого?
2) иначе, в противном случае, а то, или же (часто с предшествующим "or")
Go at once, else you will miss your train. — Идите немедленно, иначе вы опоздаете на поезд.
2. прил.
1) другой
2) дополнительный

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


MaximSokolДата: Воскресенье, 07 Февраля 2010, 01:01 | Сообщение # 17
Доктор Макс Пэйн
Сейчас нет на сайте
Quote (CrazyDazeGrout)
What else must I do? — Что ещё я должен сделать?
Where else did you go? — Куда ещё вы ходили?
Ask somebody else about it. — Спросите ещё кого-нибудь об этом.

Somebody, who, where - проще говоря, в контексте. В чистом значении else - иначе. А "ещё" Sharom написал по незнанию, вот и всё.


Моя страница на проза.ру - перейти
Я - начинающий писатель.)
SharomДата: Воскресенье, 07 Февраля 2010, 01:01 | Сообщение # 18
участник
Сейчас нет на сайте
CrazyDazeGrout, не знаешь не говори. Будешь в Америке пообщайся с американцами. Они тебя многому научат.
CrazyDazeGroutДата: Воскресенье, 07 Февраля 2010, 01:11 | Сообщение # 19
Spirit Of Beginning
Сейчас нет на сайте
Quote (Sharom)
CrazyDazeGrout, не знаешь не говори. Будешь в Америке пообщайся с американцами. Они тебя многому научат.

это звучит грубо. Сам не всё знаешь. Разговаривал и с американцами по скайпу, и с немцами в реальности на английском. Точка.


VinchensooДата: Воскресенье, 07 Февраля 2010, 09:00 | Сообщение # 20
Злобный социопат с комплексом Бога
Сейчас нет на сайте
Так, что за дела?
Пусть будет else=еще.
В данном случае это не изменит смысла.
Если и спорите- не в таком тоне и не в теме.
Sharom, а если четный b?
Если D=0, тогда программа выведет 2 одинаковых корня.
тогда нужно ставить проверку на 0 так же.
Quote (Sharom)
: 1 : 5)

а это кто объяснит?
Вы должны каждый символ объяснять, если уроки пишите smile


Форум игроделов » Программирование » Delphi/Pascal/Object Pascal » Урок №2 Если Тогда Ещё
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг