Автор Тема: Изучение азов програмирования , советы начинающим и т.д и т.п  (Прочитано 27513 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7524
    • Просмотр профиля
Можно и с него, но я б его вообще пропустил :)
До ассемблера я с него начинал. И в принципе, я его рассматривал как очень мощный программируемый калькулятор (собственно, для мегарасчетов он и применялся).

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
HardWareMan, тебе тоже спасибо за совет , буду знать как альтернативно можно задавать .
P.S Учитывая что мой борланд паскаль 7.0 который всё же запускается на 7ке русский текст ввести не даёт да и читать его тоже наотрез отказывается ( сплошные кракозябры вместо текста) я поставил некий Pascal ABC , вроде ничего и на русском , но хотелось бы узнать нет ли в нём больших упрощений по сравнению сборланд паскалем 7.0 и не возникнут ли проблемы при переходе с Pascal ABC на турбо паскаль 7.0 в будущем ?

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2769
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Хотя кому как конечно, можно сразу с C++, но так велик шанс "фишку" программирования не-понять.
Я фишку программирования еще понел в 7 лет, когда программировал на одном из первых Бейсиков на компьютере "Электроника" еще с черно-белым монитором.
А имено что мне понравилось, так это логические задачи, уметь их создавать, и потом смотреть что получилось.
Например даже такая тупая прога, и все равно будет интересно типо:
Print "Направо или налево?"
Input A
IF A = "Направо" THEN Print "Чо ты сюда приперся?? А ну кыш отсюда!"
IF A = "Налево"  THEN Print "Ага!! Жене изменяешь!!"
END
Из чего получается после запуска проги:
Направо или налево?
Налево (далее надо писать, выбираем право или лево)
Ага!! Жене изменяешь!! (получаем результат)
Также можно всякую чушь сочинять, при чем есть куча других операторов, можно картинки делать итд


Добавлено позже:
Ну условный оператор - это
if <условие> then <действие> else <действие>
Соответственно, получается
if (x>0) and (x<2) then y:=cos(x) else y:=1 - sin(x);При 0<x<2 получаем y=cos x, иначе - y=1-sin x.
Да, кстати для программирования желательно знать немного english

Оффлайн aptyp

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

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
aptyp, среднестатистический программер выполняет поставленную перед ним задачу. Если он должен создать объектный, модульный и портируемый код, а не оптимизировать его под определённое железо, то о каком ассемблере может быть речь?

Оффлайн topos84

  • Emu-Land Team
  • Сообщений: 2762
  • Пол: Мужской
    • Просмотр профиля
gepar, начинай с паскаля. Он - самый простой, проще не куда. Даже бейсик ничем не проще, такой же простой. А за АСМ лучше браться после того, как освоишь паскаль, потому что АСМ по сравнению с паскалем - это примерно тоже, что и квантовая механика по сравнению с ньютоновской, ИМХО. АСМ, конечно, ближе к железу, зато паскаль понятнее по отношению к наглядным представлениям о том, что такое алгоритм и с чем его едят. Паскаль специально был придуман для обучения студентов программированию.

Оффлайн paul_met

  • Супермодератор
  • Сообщений: 8109
  • Пол: Мужской
  • Похититель эмуляции
    • Youtube
    • Просмотр профиля
При слове программирование сразу вспоминается бейсик на спектруме,ведь всё с него и началось для меня. В школе просто ненавидел паскаль первый год,а потом взялся за ум и вытянул годовой пятак...
PS: Советую начать с Delphi... ;)

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
aptyp, среднестатистический программер выполняет поставленную перед ним задачу. Если он должен создать объектный, модульный и портируемый код, а не оптимизировать его под определённое железо, то о каком ассемблере может быть речь?
В плане мультиплатформенности Python рулит, в плане быстроты Assembler, а C++ это оптимально.

Оффлайн Имаго

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

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Конечно они разные, три самых лучших каждый в своём уровне. :)

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Ну так зачем советовать новичку в первую очередь учить ассемблер, если ему сейчас нужно разобраться в алгоритмизации?

Оффлайн Henty

  • Пользователь
  • Сообщений: 796
  • Пол: Мужской
    • Просмотр профиля
Алгоритмы понятнее на Паскале (ну Делфи, один хрен, структура та же).
Но частенько их пишут и на С++.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Надо начинать с начальных азов вообще низкоуровневое программирование. А если хочется быстрее научиться писать программы то высокоуровненый язык. А Pascal изучают в учебных учреждениях, не-потому что это правильно, а потому что так заведено. Вообще на информатике по жизни надо изучать Assembler, С++ или Python. А вот кодить на Delphi это как на экскаваторе в огороде копать землю вместо лопаты. :lol:

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Henty, алгоритмы понятнее на любом человеческом языке! ^_^

Знаете такую штуку - учебный алгоритмический язык? Переведённый на русский язык паскаль. Так вот нас в школе каждую задачу по информатике заставляли решать с помощью алгоритма на этом самом УАЯ, иллюстрировать его блок-схемой, а потом подтверждать его работоспособность программой на бейсике. Вот так вдалбливалось понятие алогритмизации. А вот как это понятие aptyp будет осваивать с помощью ассемблера - остаётся загадкой.

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
Реально Pascal пусть юзают сами учителя. Поняв Assembler, освоив C++, даже Python если сроки "горят", можно считать что всё что нужно уже усвоено.

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Не будем говорить о спец.школах, или тех уроках информатики, на которых рассказывают, как создать документ в ворде. В обыкновенной средней школе не учат быть программистами. И не учат конкретно какому-то языку от начала до конца - знакомят только с самыми простыми операторами, необходимыми для решения логических задач. Цель уроков информатики - научить решать логические задачи путём составления алгоритма. Всё. Поэтому и используются простейшие в освоении языки, конструкции которых похожи на речевые конструкции понятных школьникам языков - те же паскаль и бейсик. Так что, aptyp, ассемблер тут вообще не вяжется, не смотря на твою уверенность в том, что это основа, обязательная для всех. Я уже представляю какую-нибудь 14-15-летнюю школьницу, сортирующую числа методом пузырька на ассемблере... Пожалуй, единственная причина, по которой новичкам можно и нужно советовать более сложный, чем паскаль, C - его универсальность, на нём и простые задачи относительно легко решаются и для сложных заложен огромный потенциал. А уж при чём здесь пайтон - ума не приложу, ты, наверное, справочник по нему купил или прочитал где-то, что это круто?

Оффлайн aptyp

  • Пользователь
  • Сообщений: 6263
    • Просмотр профиля
На Assembler-е можно сделать если не-всё но многое умея мыслить. На Python по сравнеию C++ можно кодить в экстра кратчайшие сроки. Pascal уже не-актуален, можно конечно придирчиво выявлять различные "плюсы" этого языка относительно других, но это всё от лукавого типа, вообще этот язык реально уже отстой.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7524
    • Просмотр профиля
Вспоминается старая байка: "У какого языка больше плюсов: Паскаль или С? - У С и С++. Причем, у С++ их явно больше.". Все дело не в том, что удобнее/неудобнее, а в том, что более распространено. Исторически сложилось, что программисты ленивые сволочи и им лень писать токен целиком (легче плюхнуть "{" один раз, чем писать "begin"), вот их и сокращают. Ведь в итоге это ускоряет время написания кода. А настоящий ЯВУ должен читаться как обычный человеческий язык. Кроме как в этом я не вижу разницы между С и Паскалем/Дельфи (поверьте, основными типами данных, в рамки которых загоняет паскаль, пользуются только новички, впрочем это свойственно и самому С). Именно поэтому, С популярен, но менее читабелен неподготовленным человеком. Именно поэтому, сложно назвать С чистым ЯВУ. А вот Барсик - это классический ЯВУ. Не верите? "Почитайте" реально рабочую конфигурацию от "1С:Предприятие", даже демо которое. 1Сники перевели токены вижуалбарсика на русский. Я уверен, что ее прочтет и поймет любой школьник, который умеет читать. Ведь правда?
Касаемо трудности ассемблера. На чистом асме уже тоже никто не пишет. Все используют макроассемблер. А он позволяет обозвать кучку команд одним словом и использовать этот макрос для вставки в код. Т.е., один раз написанному куску кода можно задать понятное имя и вставлять его в основной код сколько душе угодно (это не вызов подпрограммы!). Есть мнение, что собственно С вылился из МАСМа.

Чтобы не быть голословным:
« Последнее редактирование: 15 Октябрь 2009, 07:27:25 от HardWareMan »

Оффлайн Имаго

  • Пользователь
  • Сообщений: 1040
  • Пол: Мужской
    • Просмотр профиля
Примерно об этом я и говорил. А вот насчёт макроассемблера - Артур считает, что асм необходим для понимания процессов на уровне железа, так что речь скорее о "чистом" ассемблере.

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

Оффлайн Henty

  • Пользователь
  • Сообщений: 796
  • Пол: Мужской
    • Просмотр профиля
В принципе, АСМ только програмерам нужен, обычной гламурной школоте до фени, как там что внутрях работает. Им лишь вы в Аське и в Вконтакте посидеть.
Те, кто заинтересуются, идут дальше сами. ИМХО, в школах лучше Паскаля заменителя не найти. Тем более в среде Delphi всё красивенько и модненько)  ^_^

Оффлайн Silver_Shadow

  • Пользователь
  • Сообщений: 2769
  • Пол: Мужской
  • Ниндзя-гопник
    • Steam
    • Youtube
    • Просмотр профиля
Мне вот наоборот программировать учиться(действительно учиться) не тянет. Раньше тоже мечты были и решения, щас возьмусь и буду учить программить, чтоб потом игрушку сделать на языке. Но потом немного поучив, сие было зослано подальше от глаз. Думаю для начала желания программировать, не надо вообще какой либо язык выбирать. Надо сначала иметь идею, а имено "чего бы мне такого интересного написать?" И не вдаваясь в основы программирования начинаешь делать это, а в процессе создавания, и основы изучаются.
Это 1 способ
2 способ это когда тебя заставляют, а имено когда ты учишся в институте на программера, и если ты не сделаешь кое какие проги тебя выпихнут оттуда
Я по стечению обстаятельств попадал и под 1-й способ и под 2-й способ
Но никогда не изучал с основ, ибо не тянуло и не интересно было

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

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
gepar, 5коп от меня:
если хочешь научиться прогерству с целью потом, как-нибудь в будущем, заниматься этим профессионально, имхо лучше лучше учиться так:

для начала узнать азы алгоритмов, типа школьного курса информатики с языком Ершова :) (или его уже нет в школьном курсе ?)
а потом, сходу браться за любой из обьектно-ориентированных языков: С++, Java или Object Pascal (Delphi), и обязательно с хорошей книжкой (по С++ для начинающих и не только рекомендую "Как программировать на С" Дейтел & Дейтел)

Это из жизненного опыта, сам сначала на бэйсике учился, потом АСМ, потом паскаль и другие АСМы, всё это на любительском уровне - писал всякое-разное для себя или по надобности. А потом, как устроился программером, со всем этим "багажем" в голове, было ОЧЕНЬ тяжело переключиться на объектный подход.

и подобное не только со мной бывало, из-за этого вообще предлагали школьников сходу ООП учить, чтоб потом им мозги после бейсиков/паскалей "вправлять" не приходилось...

Оффлайн Vitalij

  • Пользователь
  • Сообщений: 15
  • Пол: Мужской
    • Просмотр профиля
Silver_Shadow
Цитата
Надо сначала иметь идею, а имено "чего бы мне такого интересного написать?" И не вдаваясь в основы программирования начинаешь делать это, а в процессе создавания, и основы изучаются.
Это очень хороший способ. Надо поставить задачу, разработать алгоритм и начать воплощать на каком-либо языке.
Есть интересная книга - И. В. Красиков, И. Е. Красикова "Алгоритмы. Просто как дважды два".

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7524
    • Просмотр профиля
В принципе, АСМ только програмерам нужен, обычной гламурной школоте до фени, как там что внутрях работает. Им лишь вы в Аське и в Вконтакте посидеть.
Те, кто заинтересуются, идут дальше сами. ИМХО, в школах лучше Паскаля заменителя не найти. Тем более в среде Delphi всё красивенько и модненько)  ^_^
Так потом и рождаются быдлокодеры, которые пишут индусский код. %)

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Цитата: MetalliC
для начала узнать азы алгоритмов, типа школьного курса информатики с языком Ершова  (или его уже нет в школьном курсе ?)
А где такую книженция взять то можно ?В электронном виде чего-то подобного случаем нет ?
У нас в Украине никакой подобной не наблюдал , книга же что была по информатике у нас просто ужасная , сразу вспоминаю ответы на вопросы по поводу подсчёта веса файла (2,6 байта 3,5 байта брррр) .

Оффлайн MetalliC

  • Технический консультант
  • Сообщений: 9386
  • Пол: Мужской
  • Demul team / MAME developer
    • Просмотр профиля
А где такую книженция взять то можно ?В электронном виде чего-то подобного случаем нет ?
У нас в Украине никакой подобной не наблюдал , книга же что была по информатике у нас просто ужасная , сразу вспоминаю ответы на вопросы по поводу подсчёта веса файла (2,6 байта 3,5 байта брррр) .
конкретных книг не знаю,
но в общем и без них лехко обойтись, цель - научиться представлять чего-либо в виде алгоритма.
типа, "квадратное уравнение": считаем дискриминант, если он больше нуля - ........, если меньше - ........ и т.д.

ну или "утро": идём в ванну, открываем кран, если есть вода - умываемся, иначе {материмся, идем к стояку и проверяем кран, если он открыт {ещё больше материмся, пытаемся набрать воду с бачка ))) и т.п.

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

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Застрял при выполнении одного из заданий :
решить sin(|a+b|)-|cos(a-b)|
Нашёл в инете что модуль это sqrt(sqr(x)) , но ничего толкового из того что я обозначал не получилось так как компилятор либо требовал скобку либо двоеточие либо когда я и то и то ставил говорил что всё равно так нельзя  :)Вообщем напишите плыз как это уравнение правильно вписать надо (достаточно самого кусочка где обозначаеться как именно записать это уравнение) .
P.S Уравнение конечно не важное тобишь мне его никому сдавать на проверку не нужно , но чисто для себя я бы хотел разобраться .

Оффлайн Fly

  • Пользователь
  • Сообщений: 1896
  • Пол: Мужской
    • Steam
    • Youtube
    • Просмотр профиля
Цитата: gepar
Нашёл в инете что модуль это sqrt(sqr(x))
Вообще это корень из квадрата. Куда проще для модуля использовать функцию abs(x).:)
По идее так должно быть:
sin(abs(a + b)) - abs(cos(a - b))

Оффлайн gepar

  • Пользователь
  • Сообщений: 10150
  • Пол: Мужской
  • ▂ ▃ ▄ ▅ ▆ ▇ █
    • Просмотр профиля
Fly,сейчас попробую проделать , паралельно возник вопрос - как можно присвоить переменной значение типа <=2 и т.д (ну тобишь как присвоить значение a<3 так чтобы паскаль это понял и дальше потом не матерился ) .
P.S Сори что беспокою , у меня просто знакомых людей знающих паскаль нет в реале к сожалению .

Добавлено позже:
Fly, с модулем разобрался , спасибо за подсказку .

Добавлено позже:
и ещё маленький вопросик к специалистам : как определить введено чётное или не чётное число , ато много задач построено по принципе если число чётное сделать то и то , а если не чётное то то и это ...

Оффлайн BaNdiT

  • Пользователь
  • Сообщений: 586
  • Пол: Мужской
  • Предводитель Автоботов
    • Просмотр профиля
Цитата
как определить введено чётное или не чётное число
if ((x mod 2)=0) then <четное> else <не четное>.
Оператор mod даёт остаток от деления на число. Если число чётное - он делится на 2 без остатка.