Skip to content

17.09.2011

1.Алгоритмы и исполнители

Давно я не постил у себя в блоге, сегодня решил исправить эту неприятную ситуацию. Первый месяц уверенно движется к своему завершению, дни пролетают и в голове потихоньку откладываются знания (по крайней мере я на это надеюсь =)). А так как основным профильным предметом 1 семестра является курс «Основы программирования» — ОПр, я решил постить свои решения дом. заданий, интересных задач и все что связно с первым курсом по программированию. Ведет этот курс Бондарев В. М.. Его блог (выложены лекции, а также д\з) - http://bond19.wordpress.com. Свои решения этих задач я и буду выкладывать тут. Сразу скажу, код не претендует на 100% правильность, или идеальность алгоритма, это просто мое решение поставленной задачи. Зачем я это делаю? Во-первых, это помогает самому лучше понять тему, во-вторых, в комментариях можно предложить свой способ решения. А еще все это можно обсудить, хотя вопросы лучше, все таки, задавать  Владимиру Михайловичу.

Дальше решения простых задач 1ой лекции «Алгоритмы и исполнители»

Итак, сами задания (лекция):

Задания

  1. Напишите программу, которая вычисляет значение арифметического выражения: 5x6 + 4x3 + 3x0.
  2. Напишите программу, которая вычисляет значение арифметического выражения: 5x-1 + 4x-2 + 3x-3.
  3. Поройтесь в интернете и выясните, как называется тот язык, на котором мы начали писать программы

№1:

5x6 + 4x3 + 3x0

На лекции возник спор, о том сколько будет «0 в степени 0″. Математически это неопределенность, но и гугл и майкрософт уверенный что это выражение равно 0 (гугл калькулятор, как и встроенный в винду выводит результат «0″). Мы как будущие программисты не станем  перечить гигантам ИТ индустрии, поэтому 3x0 будет всегда равно трем.

Итак само решение :

<script>
x = 3;
alert(x*x*x*(5*x*x*x+4)+3);
</script>

Тут x3 вынесено за скобки, но все равно код не очень понятен, вот вариант более удобно читаемого кода:

<script>
x = 3;
p = x*x*x; 
alert(p*(5*p+4)+3);
</script>

Также в самом языке предусмотрена функция возведения выражения в степень. Хранится она в объекте «Math», свойстве «pow» и вызывается Math.pow(a, b), где а — основа степени, b — показатель.
С этой функцией код выглядит так:

<script>
x = 3; 
p = Math.pow(x, 3); 
alert(p*(5*p+4)+3);
</script>

Вот и все с первой задачей.

№2:

x-1 + 4x-2 + 3x-3

Выносим  x-1  за скобки, получаем: x-1 (1+ 4x-1 + 3x-2), пишем код :

<script>
x = 3; 
alert((1+4\x+3\x*x)\x);
</script>

или:

<script>
x = 3; 
p = Math.pow(x, -1); 
alert(p*(1+4*p+3*Math.pow(p, 2));
</script>

Хотя 2 вариант запутанный, 1 вариант мне кажется красивей.

№3:
Это JavaScript

Вот и все на сегодня, первые задачи решены=)
Буду рад вашим вариантам решения, а также обсуждению моих.

Share your thoughts, post a comment.

(required)
(required)

Note: HTML is allowed. Your email address will never be published.

Subscribe to comments