Минимальная программа на языке си

Простейшая программа при изучении любого языка программирования выводит на экран приветствие Hello World. И нашим первым шагом в изучении Си будет программа Hello World. Чтобы использовать операторы ввода и вывода информации в Си используются заголовочные файлы
Структура программы Си
#include
Начало любой программы в Си начинается с main()
< любая программа начинается с открывающей скобки
> любая программа заканчивается закрывающей скобкой

После каждого оператора ставится ;
getch(); оператор ожидания нажатия любой кнопки, чтобы программа не закрывалась сразу после выполнения сразу
Чтобы использовать этот оператор, в начале программы необходимо объявить заголовочный файл
#include
В программе очень полезно писать разъясняющие комментарии.
Чтобы написать комментарий в строке используется // комментарий
Чтобы написать комментарий из нескольких строк используется конструкция
/* комментарии */
Пример простейшей программы на Си

Программирование на Си — Урок 12 — Пишем первую простую игру про голодную собаку


#include
#include
main()
printf(«Hello world!»); // выводим на экран
getch(); // ждем нажатия любой кнопки
>

Чтобы написать программу на си запустите среду разработки dev c++, выберите в верхнем меню Файл/Создать/Исходный файл

создание программы в си

Напишите программу в окне. Для компиляции и запуска программы на си нажмите пиктограмму разноцветный квадрат или клавишу F9

запуск программы на си

Сохраните программу со своим именем, после сохранения она запустится

Вернуться к содержанию Перейти к следующему уроку Переменные в Си. Операции

Источник: itrobo.ru

2. Структура простейшей одномодульной программы

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

настоящей части пособия будут рассматриваться только такие программы. Отметим еще одно ограничение приводимых программ – в них будут отсутствовать так называемые внешние переменные. Внешними переменными называются переменные, которые объявляются вне функций. Программы, приводимые в настоящей части пособия, содержат три структурных компонента: ● Комментарий, относящийся ко всей программе в целом. ● Директивы препроцессора. ● Определение функции main(). Остановимся на каждом из этих компонентов подробнее.

Программирование на Си нахождение max, min числа в массиве

2.1. Комментарии в программе на языке Си

Комментарии используются для целей документирования программ. Комментарии не влияют на выполнение программы. При компиляции они удаляются из программы. Стандарт С99 позволяет использовать в программах комментарии двух видов: ● Комментарии, традиционные для языка Си. ● Однострочные комментарии, заимствованные из языка С++.

Традиционный комментарий в языке Си – это последовательность символов, входящих в его алфавит, которая начинается двумя символами “/*” и заканчивается этими же символами, следующими в обратной последовательности “*/.”. Такой комментарий может располагаться на нескольких строках. Приведем пример традиционного комментария. /* Лабораторная работа № 1 Программирование линейных вычислительных процессов */ Однострочный комментарий начинается с двух символов косая черта “//”. Такой комментарий включает в себя все символы текущей строки, следующие за этими символами. Ниже приводится пример применения однострочных комментариев. // Лабораторная работа № 2 // Программирование разветвляющихся вычислительных процессов Следует учитывать, что не все компиляторы языка Си, используемые на практике, поддерживают однострочные комментарии.

2.2. Начальные сведения о препроцессоре

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

называемыми директивами. В простейшем случае директива препроцессора имеет следующую структуру: # имя_директивы содержательная_часть Директива препроцессора всегда начинается с символа “#”, за которым следует имя директивы. Приведем примеры директив препроцессора: #include #include #define MAXSIZE 100 В приведенном выше примере имеются три директивы препроцессора.

Имя первой директивы include, а в ее содержательной части находится заключенное в угловые скобки имя системного заголовочного файла stdio.h. Эта директива предписывает препроцессору включить вместо рассматриваемой директивы содержимое системного заголовочного файла stdio.h.

Наличие в модуле такой директивы необходимо в том случае, когда в нем содержатся вызовы функций стандартного ввода – вывода. В заголовочном файле stdio.h содержаться объявления функций стандартного ввода – вывода (о понятии объявления функции смотри немного ниже). Вторая директива c именем include выполняет такую же работу, что и первая директива препроцессора, но для математического заголовочного файла math.h. Этот заголовочный файл необходимо подключать в том случае, когда в исходном тексте модуля имеются вызовы библиотечных математических функций. Третья директива предписывает препроцессору заменить в рассматриваемом файле исходного текста все вхождения слова MAXSIZE константой 100 . Директива define используется для определения так называемых символических констант. В рассматриваемом случае такой константой является MAXSIZE . В языке Си существует традиция записывать заглавными буквами имя символической константы, определенной с помощью директивы define .

Читайте также:
Как называлась программа в терминаторе

2.3. Определение функции main().

● Функция main() должна вернуть в точку своего вызова целочисленное значение. Об этом свидетельствует зарезервированное слово int , с которого начинается заголовок, которое является спецификатором одного из целочисленных типов языка Си. ● У функции main () отсутствуют параметры. На это указывает зарезервированное слово void , стоящее в скобках.

Второй компонент определения функции main() – тело, содержащее алгоритм, ею реализуемый. В теле располагается последовательность предложений языка Си, которая заключена в фигурные скобки. Ниже приводится простейшая программа. Это минимальная программа, которая может быть написана на языке Си.

Она не выполняет никаких полезных действий, что дает основание считать ее пустой. /* Пустая программа. Файл empty.c */ int main( void ) < return 0; >В рассматриваемой программе тело функции main() содержит единственное предложение, которым является инструкция return . Эта инструкция формирует результат, возвращаемый функцией main(). Этот результат функция main() передает операционной системе. Возврат значения, равного нулю, воспринимается операционной системой как нормальное завершение работы функции main() .

2.4. Пример простейшей программы

Постановка задачи Даны два целых числа a и b . Вычислить их сумму y . Программа Ниже приводится программа, предназначенная для решения данной задачи, а затем даются необходимые к ней пояснения. /* Программа, выполняющая сложение двух целых чисел

Файл Summa.c
*/

#include #include int main( void ) < int a, b, y; clrscr(); printf(“ Первое число =”); scanf(“%d”, printf(“ Второе число =”) scanf(“%d”, y = a + b;

К функциям ввода – вывода в рассматриваемой программе относятся функции printf() , scanf() и getch(). Основную работу по вводу – выводу выполняют первые две функции. Последняя функция ( getch() ) может оказаться необходимой для задержки экрана. В некоторых системах программирования необходимость в ее использовании может отсутствовать.

Эта функция ожидает от пользователя нажатия на любую клавишу. Перейдем к рассмотрению функций printf() и scanf() . Функции printf() и scanf() относятся к так называемым функциям форматированного ввода – вывода. Функция printf() применяется для вывода на дисплей, а функция scanf() – для ввода с клавиатуры. В этих функциях предусмотрены специальные средства для управления процессом ввода – вывода.

Эти средства называются спецификациями преобразования. В функции scanf() спецификации преобразовании используются всегда. В простейших вариантах использования функции printf() спецификации преобразования могут отсутствовать. Спецификации преобразования, если они имеются, всегда находятся в первом аргументе вызова рассматриваемых функций.

Для этого аргумента используется специальное название: форматная строка. Каждая такая спецификация начинается с символа процент ( % ) и заканчивается символом, определяющим тип преобразования. В связи с тем, что рассматриваемая программа работает только с данными целого типа, в функциях ввода – вывода используется тип d , предназначенный для преобразования данных целого типа.

Рассмотрим объем работы, которую необходимо было выполнить в настоящей программе по вводу – выводу. Во-первых, необходимо было обеспечить ввод двух исходных чисел: a и b . Для этого следует использовать функцию scanf() . Оба эти числа можно ввести с помощью одного вызова этой функции. Однако предпочтительнее вводить каждое число с использованием отдельного вызова этой функции.

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

Вызов функции scanf() в программе должен быть предварен выводом наводящего сообщения, которое уведомляет пользователя, о том какая информация от него запрашивается. Эти наводящие сообщения выводятся в программе с помощью вызова функции printf().

Остановимся подробнее на организации ввода переменной a . В программе для этой цели служит следующий фрагмент кода: printf(“a=”); scanf(“%d”, Функция printf() здесь вызывается с одним аргументом – форматной строкой, однако спецификации преобразования в ней отсутствуют. Такая форма вызова функции printf() используется для вывода на экран сообщений для пользователя. Текст, находящийся между кавычками, выводится на экран дисплея. Вызов функции scanf() имеет два аргумента.

Читайте также:
Установить программу вацап на телефон

Первым аргументом является форматная строка, содержащая одну спецификацию преобразования ( %d ), которая уведомляет компьютер о том, что вводимая c клавиатуры порция информации должна рассматриваться как целое число. Второй аргумент определяет адрес памяти, в которую следует направить введенное с помощью функции scanf() число.

Для получения этого адреса образуется выражение (оператор взятия адреса) предписывает компилятору вычислить адрес переменной a . Выражение Эта инструкция предписывает вычислить выражение, стоящее справа от символа “=”, и результат вычисления сохранить в переменной y . Символ “=” в языке Си называется оператором присваивания. Перейдем к рассмотрению вопросов, связанных с выводом результатов вычислений.

Вызов функции printf() , выполняющей эту работу, имеет следующий вид : printf(“ Сумма =%dn”, y); В рассматриваемом вызове функции printf() форматная строка кроме уже знакомой спецификации преобразования %d содержит некоторые другие символы. К их числу относятся символы, предшествующие спецификации преобразования.

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

Рассматриваемая управляющая последовательность носит название “новая строка”. Ее назначение в приведенном вызове состоит в переводе курсора на новую строку экрана. Кроме форматной строки в рассматриваемом вызове присутствует второй аргумент, представленный переменной y , значение которой требуется вывести на экран.

Спецификация преобразования, содержащаяся в форматной строке ( %d ), предписывает компилятору выполнить преобразования выводимого численного значения переменной y . Дело заключается в том, что информация, хранящаяся в памяти компьютера, связанная с этой переменной, имеет машинную форму. Информация, появляющаяся на экране в результате работы вызова функции printf() , представляет собой последовательность символов. Руководствуясь спецификацией %d , компьютер должен построить строковое изображение числа, хранящегося в переменной y и поместить его в выводимой строке вместо спецификации преобразования. Таким образом, одни элементы форматной строки выводятся один к одному на экран дисплея (например, Сумма=), другие выполняют управляющее действие (например, n), наконец,

Источник: studfile.net

Ruby on Rails c нуля!

Программирование на языке Си: Первая программа на Си. Функции.

язык Си

Знакомство с языком Си мы начнем с написания простой программы «Hello, World!», которая будет заниматься печатью на экран сообщения «Hello, World!».

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

Первая программа:

#include int main()

В первой строке мы объявляем функцию main() которая имеет тип int (integer). Тип функции — это тип данных, которые функция возвращает после своего выполнения. int main() говорит о том, что функция main() должна возвращать целое число. В Unix-системах (unix, bsd, linux, macos и т.д.) принято соглашение о том, что программа после своего успешного завершения должна возвратить 0, если возвращено любое другое значение, то программа сработала неправильно, в Windows системах такого соглашения нет, поэтому мы можем объявлять функции типа void, т.е. такие, что ничего не возвращают в систему:

#include void main()

Чтобы превратить код на Си в программу необходимо воспользоваться компилятором Си. Компилятор Си — это такая программа, которая преобразует код на Си в машинный код, который понятен компьютеру. В операционной системе Ubuntu, счастливым пользователем которой я являюсь имеется предустановленный набор компиляторов GCC, который включает в себя компилятор СС (C Compiler). CC является не самым лучшим компилятором, однако входит в 3 лидеров и является предустановленным компилятором в большинстве дистрибутивов GNU/Linux. В нашем обучении нам не нужна какая-либо сверх оптимизация наших приложений, по этому нам его будет вполне достаточно. Для компиляции программы запустите компилятор в командной строке и скормите ему имя файла:

$ cc program.c
$ ./a.out
Hello, World!

Поскольку имя явно не указано, наш код на Си будет скомпилирован в директорию с исходником программы и будет иметь название a.out. Если вызвать компилятор с опцией —help , то мы увидим множество других интересных опций компилятора, например -o, которая позволяет казать путь и имя для сохранения скомпилированной программы:

Читайте также:
Сопровождение программ виды работ по сопровождению

$ cc program.c -o program
$ ./program
Hello, World!

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

#include void hello_world(); int main() < hello_world(); return(0); >void hello_world()

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

Примечания:

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

2. Вам наверное интересно узнать что за код находится в первой строке нашего исходника:

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

3. Иногда можно встретить функции в списке аргументов которых встречается ключевое слово void:

int main(void) < //code here >

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

Responses

  1. Валентин says:
    октября 30, 2011 at 22:46 (#) Ну вот зачем писать такие статьи ? Сами подумайте , какой имеет авторитет программист который пытается учить других программированию на ruby а сам пишет только hello word на си 🙁 Я понимаю что вы студент, но постарайтесь определиться — либо вы пишите профессиональные статьи выбранной тематики , либо переписываете свои домашние задания в блог. Первое ещё можно назвать интересным , второе же очень сомневаюсь
  2. Julya says:
    марта 1, 2012 at 16:07 (#) Полезно для начинающего, спасибо!
  3. Reloader says:
    апреля 1, 2012 at 19:03 (#) Блин, вот я пытаюсь начать изучать С…
    и сколько я бы не искал «первые программы», или «Для начинающих», я наталкиваюсь на вот такие вот статейки, клонированные примеры «Hello World». И все… Авторы после написания такой статьи начинают чувствовать себя Страуструпами, величайшими программерами, и т.д. а вот ДАЛЬШЕ никто уже ничего и не пишет! всех просто распирает от собственного величия, и написание следующих статей для таких «аффтараф» — не царское дело!
    Блин, на если собрался писать статьи для начинающих — то хотыбы 2(!) статьи напиши! или что-либо более оригинальное, чем Ctrl+C Ctrl+V!
  4. admin says:
    апреля 2, 2012 at 00:03 (#) Reloader, понимаю тебя, но войди в мое положение. У меня работа и ограничено время, а статьи по Си я буду обязательно продолжать писать.

Источник: rubydev.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru