Основы программирование – . 0.

Основы программирования

https://loftblog.ru/material/1-logika-algoritmy/

В этом курсе действительно собраны основы: принципы и механики, работающие во всех языках программирования. Какой бы язык вы ни планировали изучать, вы везде будете изучать примерно то же самое, только названное и реализованное по-разному. Я уверен, что, если досконально разобраться с этим курсом, изучение конкретных языков пойдёт гораздо легче. Проверю на себе.

Урок 1. Введение
Хороший мотивирующий ролик, короткий и наглядный. Чёрт возьми, мне захотелось действительно научиться программированию! Но моя задача другая: не выучить конкретные языки, а разобраться в «механике» и терминологии.

Урок 2. Логика и алгоритмы
На самом деле, мы все немного программисты. Мы живём и действуем по алгоритмам, которые мы или сами себе составили или получили от других людей. Только настолько к этому привыкли, что не замечаем отдельных команд, а воспринимаем всё, как единый поток действий.
В этом ролике предельно доходчиво рассказана, а главное — показана вся суть программирования. Дано фундаментальное понятие алгоритма, их виды, и показано, как устроен каждый вид алгоритма. А ещё для меня открытием стало то, что программист — профессия креативная! Да, несмотря на логическую основу действий. Здесь и полная свобода в коде, и правило DRY (Don’t repeat yourself, «Не повторяйся!»), и баланс между минимализмом решений и простотой улучшений… Не ожидал. Задумался.

ДЗ можно посмотреть в комментариях по ссылке:
https://loftblog.ru/material/1-logika-algoritmy/#comment-3602 Обсуждение приветствуется.

Урок 3. Типы данных и их виды
Три основных типа данных: числовые, строковые и булевые, теперь стали понятны. Николай Чернобаев, автор курса, не просто рассказал о типах данных, но и показал, и дал «поиграть»: вывести в консоль, перевести из одного типа в другой. Сделал все преобразования следом за ним, и у меня — получилось. А ещё немного заглянули в следующую тему: «Переменные». Это нужно, чтобы понять про сильную и слабую, динамическую и статическую типизацию. Вам уже интересно? Смотрите видео!

Урок 4. Основные структуры данных
Вот теперь я точно знаю, что такое переменные и массивы. Аналогия с коробками, полками и шкафами доходчива просто до безобразия. И хорошо, что рассказано только про основные структуры, Николай не стал грузить всякими стэками и хэшами, ещё успеем. Вот чем мне, методисту с 7-летним стажем, нравится Loftschool, так это тем, что здесь умеют учить. Поверьте, это можно сказать далеко не про каждую онлайн-школу.
И вот эта простота и лёгкость помогла мне перейти к экспериментам: я не просто повторял то, что показано на экране, а сам придумал и собрал элементарную структуру. Кому интересно, смотрите ДЗ по ссылке: https://loftblog.ru/material/4-osnovnye-struktury-dannyx/#comment-3603

Урок 5. Функции
Здесь главное о функциях, их объявлении и вызове, об аргументах функции. Пересказывать не буду, лучше посмотрите ролик.
Отличная аналогия: программа — это как исполнить песню, а функция — одно из действий в этой песне, например, «играть на барабане». Один взмах дирижёрской палочки, и функция «играть на барабане» вызвана. После того как партия барабана закончена, действие переходит к другим инструментам…

Понять, что такое «возврат значения функции» и что именно делает команда return, было сложнее. Чтобы разобраться, реализовал одну и ту же задачу в двух видах, с возвратом значения и без: https://loftblog.ru/material/5-funkcii/#comment-3607 Да, и списался в Телеграм с наставником курса по разработке Сашей Несвитом, он объяснил буквально за две минуты, что к чему.

Урок 6. Арифметические и логические операции
Вот здесь было действительно просто, всё как в пятом классе. Позволил себе поразвлекаться и собрал логическое сравнение, проверяющее, можно девушке замуж или нет? https://loftblog.ru/material/6-arifmeticheskie-i-logicheskie-vyrazheniya/#comment-3609 А какое сравнение соберёте в этом уроке Вы?

Урок 7. Условия в программировании.
В условиях логика и правила просты: если.. то делаем это, или если.., то делаем другое. Вот, в принципе, и всё. Сложнее было отследить синтаксис: поставил лишнюю точку с запятой после фигурной скобки — и привет, код не работает. Меня предупреждали, что программисты — очень внимательные люди, теперь понял, почему. Примеры предельно понятные, никаких сложностей в освоении этого урока.

Урок 8. Циклы в программировании
Циклы — это интересно: инициализировать счётчик, проверить условие, прописать тело, обновить счётчик, повторить… Как попросишь, так и отсчитает. Разобрали 5 вариантов условных циклов, особенно понравился элегантный пример на суммирование элементов массива буквально в 4 строки. В качестве ДЗ сделал простейший цикл на перемножение двух переменных https://loftblog.ru/material/8-cikly/#comment-3611.

Урок 9. Инструменты программиста
В этом уроке рассмотрены в сравнении два важных инструмента разработчика: редактор кода (на примере Sublime Text 3) и интегрированная среда разработки (IDE, на примере PHPStorm). Обозначены ключевые возможности, главный функционал, показано, как работать. Я знаком с инструментами разработки, в основном применительно к HTML: в качестве редактора кода активно пользовал Notepad++, своеобразным аналогом IDE можно считать Adobe Dreamviewver, так что различия понятны. А для задачек на других языках, думаю, подберу что-то из бесплатных IDE (Google намекает на NetBeans) или всё-таки подружусь с Sublime Text 3. А какие инструменты используете Вы?

Урок 10. Первая программа: калькулятор на JavaScript
Автор курса, Николай Чернобаев, на моих изумлённых глазах меньше чем за 1.5 часа написал онлайн-калькулятор, причём с графическим отображением и подсказками. Естественно, здесь было использовано многое из предыдущих уроков, что-то было рассказано с нуля. Очень интересно, что показано не только само написание кода, но и вся разработка как проект, начиная с задумки и планирования на бумаге.

Урок 11. События
Дополнение к программе онлайн-калькулятора, созданного в предыдущем уроке. Когда в программе что-то происходит, например, какое-то действие пользователя, программа реагирует заранее определённым образом. В биологии есть стимул и реакция, в программировании есть событие и его обработчик. Вот так для меня будет понятнее.

Урок 12. Ошибки программирования
Пока я выполнял примеры и ДЗ к этому курсу, успел и сделать, и «отловить», пожалуй все типы ошибок: и синтаксические, и логические, и ошибки выполнения. Искать ошибки интересно, хотя после ..дцатой итерации запуска-поиска начинает неслабо потряхивать. Ну ничего, тренировать внимательность никому не вредно.

Ну что ж, теперь я знаком с основными элементами программ, чуть лучше начал ориентироваться в терминах. Статьи на Хабре читать уже проще. Собственно, что и требовалось получить. Я уверен, что если у Вас есть способности и желание, Вы пройдёте дальше меня. Присоединяйтесь!

loftblog.ru

Курс «Основы программирования» / Habr

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

Сразу отмечу, что данный курс не является "идеальным". В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!

Проблема


Процесс решения задачи с помощью вычислительной системы состоит из нескольких этапов:
  1. постановка задачи
  2. формализация
  3. алгоритмизация
  4. программирование
  5. тестирование

Каждый этап представляет собой целый набор умений, которого нет у начинающих изучение языков программирования. В процессе обучения программированию, т.е. умению реализовать решение задачи на некотором языке программирования, учащимся сложно добраться до этапа программирования, если они не умеют решать задачи вообще. Многочисленные учебные пособия в печатном и электронном виде направлены в первую очередь на описание синтаксиса языка, и
не
позволяют развить умение решать задачу или записать ее.

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

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

  • Умение читать и понимать уже существующий код. Современный разработчик чаще всего работает в команде или продолжает работу своих предшественников, поэтому должен уметь вычленить из существующего кода замысел автора.
  • Умение представить как будет работать написанный текст программы. Разработка больших профессиональных приложений может приводить к тому, что скомпилировать код и посмотреть его работоспособность представляется не очень часто, поэтому умение мысленно запустить код на выполнение может сохранить большое число человеко-часов.
  • Умение тестировать программу в мысленном режиме, не используя специализированные системы. Именно это умение позволяет еще на этапе написания программы предотвратить многочисленные ошибки. Также, составление трассировочных таблиц помогает выявить ошибку в программе, когда становится ясно, что выходные данные не совпадают с эталонными.
  • Умение строить гипотезы неработоспособности кода программы и проверять гипотезу. При обнаружении ошибки в выходных данных программы часто учащиеся пытаются методом случайных изменений текста программы, подогнать решение под верный вывод. “А что если так попробовать” — такой подход свойствен начинающим программистам, не умеющим анализировать совокупность входных и выходных данных.

Решение проблемы


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

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

Содержание курса


Курс состоит из следующих модулей:
  1. Типы данных. Переменные. В данном модуле научимся вводить и выводить информацию. Познакомимся с понятием «переменная», с помощью которой будем хранить некоторую информацию. Посмотрим какие типы данных существуют, ведь с типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций.
  2. Условный оператор. В данном модуле научимся пропускать или выполнять некоторый блок кода в зависимости от некоторого условия. Рассмотрим короткую и полную запись условного оператора. Разберем оператор "
    switch-case
    ".
  3. Операторы цикла. Самый большой и важный модуль. В данном модуле разберем цикл со счетчиком for, цикл с предусловием while. Также рассмотрим операторы управления циклом: break, continue. Разберем вложенные циклы, задачи про последовательности, минимаксные задачи, задачи на перебор и задачи на анализ цифр числа.
  4. Строки и символы. В данном модуле узнаем подробнее про символы, а именно как они представлены в компьютере, какие операции можно производить. Также поговорим про строки и как они связаны с символами.
  5. Массивы. Большой модуль с большим количеством практических заданий. В данном модуле познакомимся с массивами. Рассмотрим как их объявлять, заполнять, оперировать с элементами массива. Также познакомимся с многомерными массивами, в частности с двумерным массивом.
  6. Функции. В данном модуле поговорим о том, как структурировать программы. Изучим главный "строительный блок" программирования — функции. Рассмотрим примеры, где уместно написание и использование функции.

Для кого предназначен данный курс?


Курс является вводным и больше всего подойдет слушателям, не имеющим опыта программирования.

На каком языке программирования будет проходить курс?


Курс будет проходить на языке программирования C# (си шарп), однако данный курс не привязывается к одному языку программированию, так как в нем проходят базовые понятия и конструкции, которые включают в себя все современные языки. Решать задачи можно на любом из современных языков программирования.

Где будет проходить курс?


Данный курс будет проходить на образовательной платформе Stepik. Уже сейчас можно записываться на курс.

Что кроме изучения языка программирования будет на курсе?


Кроме изучения языка программирования, затронем базовые алгоритмы поиска, алгоритмы со строками, теорию чисел.

Сколько стоит курс?


Курс будет проходить абсолютно бесплатно!

Записывайтесь на курс! Жду от Вас обратной связи для улучшения курса!

habr.com

Основы программирования - курс Harvard CS50. Лекция: О курсе

class=»embed-responsive-item»

Один из лучших в мире курс Гарвардского университета по основам программирования и основам IT с нуля. Рассчитан на новичков. Однако даже опытный «айтишник» может найти в CS50 полезную информацию

Дата загрузки:2016-06-15T12:42:00

Признанный одним из лучших в мире, CS50 — курс, разработанный преподавателями Гарвардского университета. Он посвящён основам программирования и основам информационных технологий. CS50 рассчитан на абсолютных новичков или тех, кто имеет начальные знания по программированию. Однако даже опытный «айтишник» может найти в «Гарвард CS50. Основы программирования» много интересного. Курс подойдёт и заинтересованным школьникам лет 12-14, и студентам (даже «не-технарям»), и «перебежчикам» из других профессий, которое хотят изучать основы программирования с нуля.

Данный курс, размещенный на ресурсе JavaRush.ru, является локализованной версией курса CS50 Introduction to Computer Science Гарвардского университета (версия за 2015-2016 учебный год).

Локализация выполнена студией Vert Dider (YouTube-канал студии и группа Vert Dider в VK) при поддержке команды JavaRush.

Кто ведёт курс основы программирования

Профессор компьютерных наук Дэвид Малан. Возможно, когда вы увидите его, у вас произойдет разрыв шаблона «профессор университета»: Дэвид чрезвычайно энергичен и подача информации у него ну очень живая. Думаем, успех курса — во многом его заслуга. Кроме того, благодаря инициативе и усилиям Дэвида, CS50 появился в интернете, и теперь основы программирования онлайн по гарвардской программе могут изучать все желающие.
Дэвид Малан — также выпускник Гарвардского университета, а, кроме того, он — практикующий «айтишник». Однако больше всего, по его собственному признанию, он любит именно работать со студентами. Мало того, он не считает зазорным преподавать самые основы программирования для «чайников», и предпочитает CS50 другим, более продвинутым, курсам (которые также преподает в Гарварде).
CS50 — самый популярный курс в Гарвардском университете, и каждый год на него записывается очень много людей (разумеется, мы не учитываем многомилионную аудиторию интернета, вместе с ней CS50 и вовсе не имеет конкурентов). Поэтому Дэвиду помогают многочисленные ассистенты. Некоторые из них — опытные ребята, некоторые — из числа тех, кто сам совсем недавно прошёл CS50.

Официальный сайт курса — cs50.harvard.edu

Что изучают на CS50

  1. Базовые основы программирования и компьютерных наук. Системы счисления, работа с командной строкой в Linux, циклы, условные переходы и прочие радости синтаксиса языков программирования.
  2. Концепции алгоритмов, алгоритмичность мышления. Вы узнаете о том, какие задачи можно решать с помощью программирования и каким образом. О бинарном поиске, простом по сути, но очень эффективном и требующем тщательности в реализации, Дэвид Малан расскажет сходу, прямо на нулевой лекции. И попробуйте потом забыть сцену с разрывом телефонного справочника, а вместе с ней — и полученные знания! Вообще, курс охватывает все основные алгоритмы, которые нужно знать и понимать «айтишникам».
  3. Концепции абстракции, структуры данных, инкапсуляции, управления памятью. Основы компьютерной безопасности. Процесс разработки ПО и веб-разработка.
  4. Основы программирования для начинающих на языке Cи и визуальном языке Scratch. Большинство примеров и заданий студенты создают на языке Cи.
  5. Основы баз данных и SQL.
  6. Веб-разработка: основы CSS, HTML, JavaScript и PHP.
  7. Основы подготовки презентации проектов по программированию.

Структура курса

Курс CS50 на JavaRush состоит из 11 уровней. Каждый уровень состоит из:

  • Вступления, в котором кратко рассказывается, какие знания вы получите после прохождения текущего уровня.
  • Двух видеолекций. Эти лекции — основа курса, в них подается вся важная информация для решения практических задач. Они ОЧЕНЬ информативны, но — хвала Дэвиду Малану — ещё и весьма увлекательны. Скучно не будет, гарантируем!
  • Дополнительных материалов к лекциям. После (почти) каждой видеолекции вы встретите уроки с теоретическими текстовыми материалами. Они созданы главным образом для повторения материалов видеолекции, но также — для углубления знаний. Некоторые вопросы, которые в лекциях рассказываются вскользь, раскрыты в дополнительных материалах более полно. Дополнительные материалы основаны на конспектах семинарских занятий и «шортов» (коротких видео), выпущенных в Гарвардском университете для студентов CS50.
  • Практических заданий. В конце каждого уровня вы будете получать практические задания по темам, пройденным в лекциях. Чтобы новичкам было легче, все практические задания будут сопровождаться пояснениями. Если чувствуете в себе силы, пробуйте решать без пояснений!
  • Ссылок на код из лекций, а также ссылок на дополнительные материалы (рекомендации гарвардской профессуры, а также русскоязычная подборка).

У тех, кто решился изучать основы программирования, «с чего начать» — самый популярный вопрос. Ответ на него прост: начинайте с проверенных источников! Попробуйте CS50, вам понравится!

У многих студентов возникает вопрос: а что, собственно, гарвардский курс «Основы программирования CS50» делает на таком ресурсе, как JavaRush? Мы ведь вроде бы здесь занимаемся Java, а не Си, почему вдруг мы опубликовали перевод?
Отвечаем: потому что мы постоянно ищем пути, как сделать онлайн-образование в сфере ИТ более качественным. В курсе CS50 поднимаются вопросы, которые пригодятся любому будущему «айтишнику», но которые мы не рассматривали в курсе JavaRush (или рассматривали вскользь). И когда мы обнаружили в сети такой шикарный источник знаний для новичков, мы не стали его игнорировать или изобретать велосипед, а просто решили сделать CS50 доступным для наших студентов, которым легче учиться на русском языке.
Когда мы вместе со студией VerdDider занялись переводом курса, то получили очень вдохновляющее письмо из Гарварда:
«Мы видим, что JavaRush опубликовал русскоязычную версию CS50. Судя по комментариям, перевод получился высококлассным, и первые видео уже посмотрело много зрителей. Это просто прекрасно! Мы очень рады, что образование становится доступным и распространяется по всему миру».
И, к слову, «Гарвард CS50: основы программирования» отлично сочетается с нашим курсом JavaRush. Их вполне можно изучать одновременно.

javarush.ru

1. Основы алгоритмизации

126

КАФЕДРА ПРИКЛАДНОЙ МАТЕМАТИКИ

ОСНОВЫ ПРОГРАММИРОВАНИЯ

УЧЕБНОЕ ПОСОБИЕ ДЛЯ 1-ГО КУРСА

Оглавление

Оглавление 1

ОСНОВЫ ПРОГРАММИРОВАНИЯ 1

Введение 1

  1. ОСНОВЫ АЛГОРИТМИЗАЦИИ 4

2. ВВЕДЕНИЕ В ЯЗЫКИ ПРОГРАММИРОВАНИЯ 16

  3. ПРОГРАММИРОВАНИЕ НА ПАСКАЛЕ 21

4. МЕТОДЫ ПОСТРОЕНИЯ АЛГОРИТМОВ 89

СПИСОК ЛИТЕРАТУРЫ 125

ОСНОВЫ ПРОГРАММИРОВАНИЯ

Введение

Программирование все в большей степени становится занятием лишь для профессионалов. Объявленный в середине 1980-х гг. лозунг «Программирование — вторая грамотность» остался в прошлом. В понятие «компьютерная грамотность» сегодня входит прежде всего навык использования многообразных средств информационных технологий. Решая ту или иную информационную задачу, необходимо выбрать адекватное программное средство. Это могут быть электронные таблицы, системы управления базами данных, математические пакеты и т.п. И только в том случае, когда подобные средства не дают возможности решить задачу, следует прибегать к универсальным языкам программирования.

Принято различать программистов двух категорий: прикладных и системных. Системные программисты — это разработчики базовых программных средств ЭВМ (операционных систем, трансляторов, сервисных средств и т.п.). Они являются профессионалами высочайшего уровня в программировании. Прикладные программисты разрабатывают средства прикладного программного обеспечения ЭВМ, предназначенные для решения задач из различных областей (наука, техника, производство, сфера обслуживания, обучение и т.п.). Требования к качеству, как прикладных программ, так и системных сегодня очень высоки. Программа должна не только правильно решать задачу, но и иметь современный интерфейс, быть высоконадежной, дружественной по отношению к пользователю и т.д. Только такие программы могут выдерживать конкуренцию на мировом рынке программных продуктов. Программирование на любительском уровне сегодня никому не нужно.

По мере развития компьютерной техники развивались также и методика, и технология программирования. Сначала возникает командное и операторное программирование, в 1960-х гг. бурно развивается структурное программирование, появляются линии логического и функционального программирования, а в последнее время — объектно-ориентированное и визуальное программирование.

Задача, которую следует ставить при первоначальном изучении программирования, — освоение основ структурной методики программирования. Для указанной цели наиболее подходящим средством является язык программирования Паскаль. Автор языка Паскаль — швейцарский профессор Никлаус Вирт — создавал его именно для этого. Структурная методика остается основой программистской культуры. Не освоив ее, человек, взявшийся изучать программирование, не имеет никаких шансов стать профессионалом.

При изучении данного курса студентам понадобятся знания основ алгоритмизации в рамках школьного базового курса информатики. Обычно в школе алгоритмизация изучается с использованием учебных исполнителей, с помощью которых можно успешно освоить основы структурной методики, а именно:

Желательным является знакомство с архитектурой ЭВМ на уровне машинных команд .Эти знания позволяют освоить основные понятия программирования, такие как переменная, присваивание; «входить в положение транслятора» и благодаря этому не делать ошибок, даже не помня каких-то деталей синтаксиса языка; предвидеть те «подводные камни», на которые может «напороться» ваша программа в процессе выполнения. По существу, все эти качества и отличают профессионального программиста от дилетанта.

Еще одно качество профессионала — способность воспринимать красоту программы, получать эстетическое удовольствие оттого, что она хорошо написана. Нередко это чувство помогает интуитивно отличить неправильную программу от правильной. Однако основным критерием правильности является, безусловно, не интуиция, а грамотно организованное тестирование.

Процесс изучения и практического освоения программирования делится на три части:

  • изучение методов построения алгоритмов;

  • изучение языка программирования;

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

Решению первой задачи посвящены второй и четвертый разделы . Во втором разделе даются основные, базовые понятия и принципы построения алгоритмов работы с величинами. В четвертом разделе излагаются некоторые известные методики полного построения алгоритмов, обсуждаются проблемы тестирования программ, оценки сложности алгоритмов.

Язык программирования Турбо Паскаль излагается в третьем разделе. Подчеркнем, что это - прежде всего учебное пособие по программированию, а не по языку Паскаль. Поэтому исчерпывающего описания данных языков вы здесь не найдете. Языки излагаются в том объеме, который необходим для начального курса программирования. Более подробное описание языков можно найти в книгах, приведенных в списке литературы.

В учебном пособии нет инструкций по работе с конкретными системами программирования для изучаемых языков. С ними студенты должны познакомиться в процессе практики на ЭВМ, используя другие источники.

1.1. Алгоритмы и величины

Этапы решения задачи на ЭВМ. Работа по решению любой задачи с использованием компьютера делится на следующие этапы:

  1. Постановка задачи.

  2. Формализация задачи.

  3. Построение алгоритма.

  4. Составление программы на языке программирования.

  5. Отладка и тестирование программы.

  6. Проведение расчетов и анализ полученных результатов.

Часто эту последовательность называют технологической цепочкой решения задачи на ЭВМ. Непосредственно к программированию в этом списке относятся пункты 3, 4, 5.

На этапе постановки задачи должно быть четко сформулировано, что дано и что требуется найти. Здесь очень важно определить полный набор исходных данных, необходимых для получения решения.

Второй этап — формализация задачи. Здесь чаще всего задача переводится на язык математических формул, уравнений, отношений. Если решение требует математического описания какого-то реального объекта, явления или процесса, то формализация равносильна получению соответствующей математической модели.

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

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

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

  • уметь строить алгоритмы;

  • знать языки программирования;

  • уметь работать в соответствующей системе программирования.

Основой программистской грамотности является развитое алгоритмическое мышление.

Понятие алгоритма. Одним из фундаментальных понятий в информатике является понятие алгоритма. Происхождение самого термина «алгоритм» связано с математикой. Это слово происходит от Algorithm! — латинского написания имени Мухаммеда аль-Хорезми (787—850), выдающегося математика средневекового Востока. В XII в. был выполнен латинский перевод его математического трактата, из которого европейцы узнали о десятичной позиционной системе счисления и правилах арифметики многозначных чисел. Именно эти правила в то время называли алгоритмами. Сложение, вычитание, умножение столбиком, деление уголком многозначных чисел — вот первые алгоритмы в математике. Правила алгебраических преобразований, способы вычислений корней уравнений также можно отнести к математическим алгоритмам.

В наше время понятие алгоритма трактуется шире. Алгоритм — это последовательность команд управления каким-либо исполнителем. В школьном курсе информатики с понятием алгоритма, с методами построения алгоритмов ученики знакомятся на примерах учебных исполнителей: Робота, Черепахи, Чертежника и т.д. Эти исполнители ничего не вычисляют. Они создают рисунки на экране, перемещаются в лабиринтах, перетаскивают предметы с места на место. Таких исполнителей принято называть исполнителями, работающими в обстановке.

В разделе информатики под названием «Программирование» изучаются методы программного управления работой ЭВМ. Следовательно, в качестве исполнителя выступает компьютер. Компьютер работает с величинами — различными информационными объектами: числами, символами, кодами и т. п. Поэтому алгоритмы, предназначенные для управления компьютером, принято называть алгоритмами работы с величинами.

Данные и величины. Совокупность величин, с которыми работает компьютер, принято называть данными. По отношению к программе данные делятся на исходные, результаты (окончательные данные) и промежуточные (рис. 1), которые получаются в процессе вычислений.

Например, при решении квадратного уравнения ax2 + bx + с = 0 исходными данными являются коэффициенты а, b, с, результатами — корни уравнения х1, х2, промежуточным данным — дискриминант уравнения D = b2 — 4aс.

Для успешного освоения программирования необходимо усвоить следующее правило: всякая величина занимает свое определенное место в памяти ЭВМ (иногда говорят — ячейку памяти). Хотя термин «ячейка» с точки зрения архитектуры современных ЭВМ несколько устарел, однако в учебных целях его удобно использовать.

У всякой величины имеются три основных свойства: имя, значение и тип. На уровне команд процессора величина идентифицируется при помощи адреса ячейки памяти, в которой она хранится. В алгоритмах и языках программирования величины делятся на константы и переменные

Константа — неизменная величина, и в алгоритме она представляется собственным значением, например: 15, 34.7, k, true и т.д. Переменные величины могут изменять свои значения в ходе выполнения программы и представляются символическими именами — идентификаторами, например: X, S2, codl5. Любая константа, как и переменная, занимает ячейку памяти, а значение этих величин определяется двоичным кодом в этой ячейке.

Теперь о типах величин — типах данных. С понятием типа данных вы уже, возможно, встречались, изучая в курсе информатики базы данных и электронные таблицы. Это понятие является фундаментальным для программирования.

В каждом языке программирования существует своя концепция типов данных, своя система типов. Тем не менее в любой язык входит минимально необходимый набор основных типов данных, к которому относятся: целый, вещественный, логический и символьный типы. С типом величины связаны три ее характеристики: множество допустимых значений, множество допустимых операций, форма внутреннего представления. В табл. 1.1 представлены эти характеристики основных типов данных.

Таблица 1.1

Типы констант определяются по контексту (т. е. по форме записи в тексте), а типы переменных устанавливаются в описаниях переменных.

Есть еще один вариант классификации данных — классификация по структуре. Данные делятся на простые и структурированные. Для простых величин (их еще называют скалярными) справедливо утверждение: одна величина — одно значение, для структурированных: одна величина — множество значений. К структурированным величинам относятся массивы, строки, множества и т.д.

ЭВМ — исполнитель алгоритмов. Как известно, всякий алгоритм (программа) составляется для конкретного исполнителя в рамках его системы команд. О каком же исполнителе идет речь при обсуждении вопроса о программировании для ЭВМ? Ответ очевиден: исполнителем является компьютер. Точнее говоря, исполнителем является комплекс ЭВМ + Система программирования (СП). Программист составляет программу на том языке, на который ориентирована СП. Иногда в литературе такой комплекс называют виртуальной ЭВМ. Например, компьютер с работающей системой программирования на Бэйсике называют Бэйсик-машиной; компьютер с работающей системой программирования на Паскале называют Паскаль-машиной и т.п. Схематически это изображено на рис. 2.

Входным языком такого исполнителя является язык программирования Паскаль.

Независимо от того, на каком языке программирования будет написана программа, алгоритм решения любой задачи на ЭВМ может быть составлен из команд:

studfiles.net

Программирование — Викиучебник

Материал из Викиучебника — открытых книг для открытого мира

Программи́рование — процесс и искусство создания компьютерных программ с помощью языков программирования[1][2].

Программирование сочетает в себе элементы искусства, науки, математики и инженерии.

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

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

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

Единственный язык, напрямую выполняемый процессором — это машинный язык (также называемый машинным кодом). Изначально, все программисты прорабатывали каждую мелочь в машинном коде, но сейчас эта трудная работа уже не делается. Вместо этого, программисты пишут исходный код, и компьютер (используя компилятор, интерпретатор или ассемблер) транслирует его, в один или несколько этапов, уточняя все детали, в машинный код, готовый к исполнению на целевом процессоре. Даже если требуется полный низкоуровневый контроль над системой, программисты пишут на языке ассемблера, мнемонические инструкции которого преобразуются один к одному в соответствующие инструкции машинного языка целевого процессора.

В некоторых языках, вместо машинного кода генерируется интерпретируемый двоичный код "виртуальной машины", также называемый байт-кодом (byte-code). Такой подход применяется в Forth, Lisp, Java, Perl, Python а также в языках платформы Microsoft .NET.

ru.wikibooks.org

Основы программирования на языке С++

4. Среда разработки Microsoft Developer Studio Visual С++

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

•Текстовый редактор, с помощью которого можно набирать и редактировать исходный текст программ на Си++.

•Компилятор. Эта программа выполняет преобразование исходного текста в машинные команды, которые компьютер может непосредственно выполнять.

•Компоновщик, который собирает отдельные скомпилированные части программы в единое целое и, при необходимости, добавляет к ним компоненты из готовых библиотек. В результате компоновки получается готовая к запуску программа – исполняемый файл.

•Отладчик, с помощью которого легче искать ошибки в программе. Ошибки

могут обнаружиться как при компиляции, так и во время работы программы.

В данном курсе изучения Си++ практические упражнения предполагается выполнять в среде разработки программ Microsoft Developer Studio Visual C++ для IBM-совместимых ПК под управлением Windows 95/NT. В этом пакете интегрированы редактор, компилятор, компоновщик и отладчик. Все вместе они образуют единую удобную среду программирования. Краткое описание работы со средой Visual C++ приведено в Приложении.

5. Пример программы на Си++

Ниже приведен исходный текст простой программы на Си++.

//В языке Си++ с двойной косой черты начинаются комментарии

//(например, как эта строка). Компилятор игнорирует комментарии,

//начиная от первой черты и до конца строки.

/* Второй способ записи комментариев – после косой черты со звездочкой. После текста комментария надо поставить звездочку, а затем – косую черту. Комментарии, записанные подобным образом, могут занимать больше одной строки. */

/* В программе ОБЯЗАТЕЛЬНО должно быть достаточное количество комментариев! */

/* Эта программа запрашивает у пользователя текущий год, возраст пользователя и еще один год. Затем программа вычисляет возраст пользователя, который будет у него во втором введенном году.*/

#include <iostream.h>

int main()

{

int year_now, age_now, another_year, another_age;

cout << "Введите текущий год и нажмите ENTER.\n"; cin >> year_now;

cout << "Введите свой возраст (в годах).\n"; cin >> age_now;

studfiles.net

Основы языка программирования

Основы языка программирования (алфавит, операторы, типы данных и т. д.).

Языки программирования — это формальные языки, кодирующие алгоритмы в привычном для человека виде (в виде предложений). Язык программирования определяется заданием алфавита и точным описанием правил построения предложений (синтаксисом).

В алфавит языка могут входить буквы, цифры, математические символы, а также так называемые ключевые слова If (если), Then (тогда), Else (иначе) и др. Из исходных символов (алфавита) по правилам синтаксиса строятся предложения, обычно называемые операторами. Например, оператор условного перехода:

If A>B Then X=A+B Else X=A*B

Алгоритмические языки программирования, или их еще называют структурные языки программирования, представляют алгоритм в виде последовательности основных алгоритмических структур — линейной, ветвления, цикла.

Различные типы алгоритмических структур кодируются на языке программирования с помощью соответствующих операторов: ветвление — с помощью оператора If-Then-Else, цикл со счетчиком с помощью оператора For-Next и т. д. Операторы, кроме ключевых слов, иногда содержат арифметические, строковые и логические выражения.

Арифметические выражения могут включать в себя числа, переменные, знаки арифметических выражений, стандартные функции и круглые скобки. Например, арифметическое выражение, которое позволяет определить величину гипотенузы прямоугольного треугольника, будет записываться следующим образом: SQR(A*A+B*B).

В состав строковых выражений могут входить переменные строкового типа, строки (строками являются любые последовательности символов, заключенные в кавычки) и строковые функции. Например: "инф'+Mid ("информатика", 3,5) +strA.

Логические выражения, кроме логических переменных, нередко включают в себя числа, числовые или строковые переменные или выражения, которые сравниваются между собой посредством операций сравнения (>, <, =, >=, <= и т. д.).

Логическое выражение принимает лишь одно из двух значений: истина или ложь. Например: 5 > 3 — истинно; 2-2 = 5 — ложно.

Над элементами логических выражений могут производиться логические операции, которые обозначаются следующим образом: логическое умножение — And, логическое сложение — Or и логическое отрицание — Not.

В языках программирования используются различные структуры данных: переменная, массив и др. Переменные задаются именами, которые определяют области памяти, в которых хранятся их значения. Значениями переменных могут быть данные различных типов (целые или вещественные числа, строки, логические значения). Соответственно переменные бывают различных типов: целочисленные (А%=5), вещественные (А=3 .14), строковые (А$="информатика"), логические (A=True).

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

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

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

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

studfiles.net

Отправить ответ

avatar
  Подписаться  
Уведомление о