2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 00:14 
Аватара пользователя

(Оффтоп)

С субтитрами или без субтитров - все способы хороши. Проблема не в этом. Проблема в том, что подобное (и любое)
самообучение - это баланс между комфортом (в крайности - потерей прогресса) и трудностью (в крайности - потерей мотивации и прекращением занятий). Нащупать этот баланс трудно,
особенно без опыта, а потерять легко. Хороший подход - лёгкие колебания в ту и в другую сторону.

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 00:44 
Аватара пользователя
sinx в сообщении #1349328 писал(а):
как создать программу которая будет вычислять значение $2+2$

Из этого простого задания можно раскрутить весьма интересные вещи на много месяцев работы - было бы желание. На Pascal, C#, C++ - не особо важно.
1) Напишите программу, которая по введенной строке "2+2" (или другие произвольные натуральные числа) производит сложение (не забыв о возможных лишних пробелах в выражении)
2) Добавьте возможность записывать произвольное число слагаемых;
3) Добавьте возможность работы с десятичными дробями
4) Добавьте остальные арифметические действия и отрицательные числа
5) Добавьте скобки
6) Добавьте тригонометрические функции, возведение в степень, взятие логарифма и другие функции, которые сочтете полезными
7) Добавьте возможность помимо чисел использовать переменную, значение(значения) которой затем задаются отдельно
8) Добавьте возможность строить график таким образом заданной функции
9) Добавьте возможность задавать функции двух переменных и построение графиков поверхностей
10) Добавьте возможность вращать, зумить, смещать получившиеся графики
11) и т.д. ...

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:09 
Аватара пользователя
1x) Добавьте возможность, чтобы программа по заданной функции нескольких переменных сочиняла песню и исполняла её

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:21 
Аватара пользователя
Munin в сообщении #1349380 писал(а):
1x) Добавьте возможность, чтобы программа по заданной функции нескольких переменных сочиняла песню и исполняла её


На днях ушла с молотка за 432 тыс. USD картина, написанная ИИ. Есть ИИ, которые умеют уже читать вслух так, что сложно отличить от живого человека. Эмоционально-окрашенные выражения и песни, вроде, пока еще нет, но, думаю, это не за горами, так что почему бы и нет: пусть программа пишет стихи, песни, снимает кино... Задача на потом и не для одного человека, но это вполне актуальная задача для IT.

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:40 
photon в сообщении #1349378 писал(а):
Из этого простого задания можно раскрутить весьма интересные вещи на много месяцев работы - было бы желание. На Pascal, C#, C++ - не особо важно.
1) Напишите программу, которая по введенной строке "2+2" (или другие произвольные натуральные числа) производит сложение (не забыв о возможных лишних пробелах в выражении)
2) Добавьте возможность записывать произвольное число слагаемых;
3) Добавьте возможность работы с десятичными дробями
4) Добавьте остальные арифметические действия и отрицательные числа
5) Добавьте скобки
6) Добавьте тригонометрические функции, возведение в степень, взятие логарифма и другие функции, которые сочтете полезными
7) Добавьте возможность помимо чисел использовать переменную, значение(значения) которой затем задаются отдельно
8) Добавьте возможность строить график таким образом заданной функции
9) Добавьте возможность задавать функции двух переменных и построение графиков поверхностей
10) Добавьте возможность вращать, зумить, смещать получившиеся графики

Ну я изначально имел программу код которой такой на Python
Код:
print(2+2)
## 4

или
Код:
a = int(input("1:"))
b = int(input("2:"))
print(a+b)
## 2
## 2
## 4

Но по поводу того, которая по строкам смотрит интересно конечно, я небольшой алгоритм придумал
Типа сначала программа из введенным пользователем строки создаёт массив, где будет ["число один", "знак", "число два"], далее двум переменным задаются значения нулевого элемента и второго (то есть числа 1 и 2) (преобразовывая в integer конечно же), еще для удобства можно задать еще одну переменную знак, но уже string
Далее if znak == "+", elif znak == "-" и т.д
Правильный ли алгоритм?

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:41 
Аватара пользователя
Я об этом в курсе, поэтому и добавил :-) (Кстати, эмоциональная окрашенность должна быть легче, чем смысловое понимание, типа того же машинного перевода.)

Ну ладно, тогда
2x) Добавьте возможность завоевать мир

-- 27.10.2018 01:43:29 --

    2x.1) Протестируйте её

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:12 
Munin в сообщении #1349387 писал(а):
2x.1) Протестируйте её

я не могу протестировать, ибо с телефона, но вот написал код, должен работать
как решить с пробелами плюс минус понимаю, но нужно очень много писать, хотя думаю есть решение быстрее
Код:
f = str(input("?"))
f = list(f)
a = int(f[0])
b = int(f[2])
znak = f[1]
if znak == "+":
    print(a+b)
elif znak == "-":
    print(a-b)
elif znak == "*":
    print(a*b)
elif znak == "/":
    print(a/b)
else:
    print("Error")

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:35 
Аватара пользователя
sinx в сообщении #1349386 писал(а):
Далее if znak == "+", elif znak == "-" и т.д

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

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:39 
photon в сообщении #1349395 писал(а):
используйте что-то более низкоуровневое, чтобы полностью прочувствовать все прелести.

Ну ассемблер не очень перспективная вещь
А насколько я знаю, что c#, c++, java, python, php и т.д они все высокоуровн

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:45 
Аватара пользователя
Я имел в виду, что какие-нибудь Python или Matlab могут иметь встроенный функционал, позволяющий распарсить и вычислить выражение, поэтому будет неспортивно, впрочем, подойдут и они, если вы будете выписывать проверки (ваши if, elif) сами по-честному.

Вся красота задачи начнется с момента, когда действия надо будет выполнять не в том порядке, в котором они записаны, а по правилам (если ограничиться четырьмя арифметическими действиями, то сначала то, что в скобках, затем умножить/разделить, и только потом сложение/вычитание).

Я не пишу на Python, но подозреваю, что предложенный вами код некорректно вычислит "123 -45"

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 03:10 
photon в сообщении #1349398 писал(а):
Я не пишу на Python, но подозреваю, что предложенный вами код некорректно вычислит "123 -45"

да, у меня только с одной цифрой работает, но думаю чтобы не только с одной нужно пройтись по строке от начала до момента, когда элемент нельзя будет преобразовать в integer, или просто воспользоваться проверкой является ли элемент 0.1.2.3.4.5.6.7.8.9, если да продолжить проверку, если нет то преобразовать в integer

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 04:55 
А я вот не уверен, что стоит доводить велосипед до такой сложности, не почитав где-то по середине, как парсят код сейчас. Так можно успеть накопить плохие привычки, и вряд ли идею парсерных комбинаторов, например, можно открыть самостоятельно с нуля за приемлемое время.

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 06:44 
sinx
Почитайте https://ruslanspivak.com/lsbasi-part1/.

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 07:23 
Аватара пользователя
sinx в сообщении #1349397 писал(а):
Ну ассемблер не очень перспективная вещь
А насколько я знаю, что c#, c++, java, python, php и т.д они все высокоуровн

Между уровнем программиста и уровнем языка существует обратно пропорциональная зависимость. :D

 
 
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 10:43 
sinx в сообщении #1349397 писал(а):
А насколько я знаю, что c#, c++, java, python, php и т.д они все высокоуровн

Это, конечно, понятно, что они все высокоуровневее, чем машинный код (или даже ассемблер), но всё-таки не стоит смешивать в кучу те же C++ и Python.
Здесь, думаю, имеется в виду дихотомия Оустерхаута (ссылка на англовики), или как там его фамилия по-русски будет, между system programming languages и scripting languages (или glue languages). Они все являются высокоуровневыми языками, но именно системные языки программирования позволят вам работать "ближе к телу" (машине), так сказать, и почувствовать все детали реализации.
А так, конечно, написать компилятор/интерпретатор можно и на Python и на Lisp, и на C и на Assembly.

 
 
 [ Сообщений: 130 ]  На страницу Пред.  1 ... 4, 5, 6, 7, 8, 9  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group