2014 dxdy logo

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

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




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


30/01/06
72407

(Оффтоп)

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 00:44 
Экс-модератор
Аватара пользователя


23/12/05
12063
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 
Заслуженный участник
Аватара пользователя


30/01/06
72407
1x) Добавьте возможность, чтобы программа по заданной функции нескольких переменных сочиняла песню и исполняла её

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:21 
Экс-модератор
Аватара пользователя


23/12/05
12063
Munin в сообщении #1349380 писал(а):
1x) Добавьте возможность, чтобы программа по заданной функции нескольких переменных сочиняла песню и исполняла её


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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 01:40 


15/04/17
109
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 
Заслуженный участник
Аватара пользователя


30/01/06
72407
Я об этом в курсе, поэтому и добавил :-) (Кстати, эмоциональная окрашенность должна быть легче, чем смысловое понимание, типа того же машинного перевода.)

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

-- 27.10.2018 01:43:29 --

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:12 


15/04/17
109
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 
Экс-модератор
Аватара пользователя


23/12/05
12063
sinx в сообщении #1349386 писал(а):
Далее if znak == "+", elif znak == "-" и т.д

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:39 


15/04/17
109
photon в сообщении #1349395 писал(а):
используйте что-то более низкоуровневое, чтобы полностью прочувствовать все прелести.

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 02:45 
Экс-модератор
Аватара пользователя


23/12/05
12063
Я имел в виду, что какие-нибудь Python или Matlab могут иметь встроенный функционал, позволяющий распарсить и вычислить выражение, поэтому будет неспортивно, впрочем, подойдут и они, если вы будете выписывать проверки (ваши if, elif) сами по-честному.

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

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 03:10 


15/04/17
109
photon в сообщении #1349398 писал(а):
Я не пишу на Python, но подозреваю, что предложенный вами код некорректно вычислит "123 -45"

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 04:55 
Заслуженный участник


27/04/09
28128
А я вот не уверен, что стоит доводить велосипед до такой сложности, не почитав где-то по середине, как парсят код сейчас. Так можно успеть накопить плохие привычки, и вряд ли идею парсерных комбинаторов, например, можно открыть самостоятельно с нуля за приемлемое время.

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 06:44 


21/05/16
4292
Аделаида
sinx
Почитайте https://ruslanspivak.com/lsbasi-part1/.

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 07:23 
Аватара пользователя


27/02/12
3893
sinx в сообщении #1349397 писал(а):
Ну ассемблер не очень перспективная вещь
А насколько я знаю, что c#, c++, java, python, php и т.д они все высокоуровн

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

 Профиль  
                  
 
 Re: Выучить школьную физику
Сообщение27.10.2018, 10:43 


22/06/09
975
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