- •Материалы для подоговки к экзамену по дисциплине «основы программировния»
- •Тема №1 Основные понятия
- •Способы записи алгоритма
- •Тема №2 Переменные
- •Типы переменных
- •Типы с плавающей точкой
- •Переполнение переменных
- •Постфиксное обозначение типа
- •Шестнадцатеричный и восьмеричный формат
- •Экспоненциальная форма представления чисел
- •Объявление переменных
- •Начальное значение переменной
- •Область видимости переменной
- •Тема №3 Оператор присваивания
- •Ввод-вывод Форматированный вывод
- •Форматированный ввод
- •Непечатные символы
- •Тема №4 Ветвления и логические операторы
- •Оператор Switch
- •Логические операторы
- •Логическое отрицание
- •Логическое и
- •Логическое или
- •Пример: закон де-Моргана.
- •Порядок выполнения логических операторов
- •Тема №5 Циклы
- •Цикл с предусловием
- •Циклы с постусловием
- •Цикл for
- •Вложенные циклы
- •Тема №6 Одномерные массивы
- •Начальная инициализация массива.
- •Размер массива
- •Переполнение массива
- •Пример с одномерным массивом
- •Многомерные статические массивы
- •Пример с многомерным массивом
- •Тема №7 Строки в си. Введение
- •Чтение строк
- •Указатели
- •Определение
- •Арифметика указателей
- •Указатель на указатель
- •Указатели и приведение типов
- •Null pointer - нулевой указатель
- •Пример работы с указателями
- •Тема №8 Указатели и массивы
- •Многомерные массивы и указатели на многомерные массивы
- •Определение макросов
- •Тема №9 Тернарный оператор и оператор запятая
- •Оператор запятая.
- •Сегментация приложения на си
- •Тема №10 Динамическое выделение памяти
- •Освобождение памяти с помощью free
- •Работа с двумерными и многомерными массивами
- •Тема №11 Параметры командной строки
- •Функции
- •Параметры и аргументы
- •Передача аргументов По значению
- •По указателю (ссылке)
- •Передача массива в качестве аргумента
- •Тема №12 Битовые операции
- •Операции побитового сдвига
- •Примеры
- •Вопросы к экзамену по дисциплине «Основы программирования»
Тема №11 Параметры командной строки
Программа во время запуска может принимать параметры. Они являются аргументами функции main. Общий вид функции main следующий
void main(int argc, char **argv) {
...
}
Первым аргументом argc является число переданных функции параметров. Второй аргумент – массив строк – собственно сами параметры. Так как параметры у функции могут быть любыми, то они передаются как строки, и уже сама программа должна их разбирать и приводить к нужному типу.
Первым аргументом (argv[0]) всегда является имя программы. При этом имя выводится в зависимости от того, откуда была запущена программа.
#include <conio.h>
#include <stdio.h>
void main(int argc, char **argv) {
printf("%s", argv[0]);
}
Сочетание клавиш Win+R вызывает окно "Выполнить". Наберите в нём cmd и вы откроете командную строку. Также можно найти cmd.exe поиском в меню Пуск. В юникс-подобных операционных системах можно вызвать программу "терминал".
Стандартная для всех операционных систем команда cd осуществляет переход к нужной папке. Существует два зарезервированных имени - . (точка) и .. (две точки). Точка - это имя текущей папки.
cd .
никуда не переходит
.. обращение к родительской папке
cd ..
переход в родительскую папку
Для перехода по нужному адресу пишется cd адрес. Например, нужно перейти на windows в папку C:\Windows\System32
cd C:\Windows\System32
В линуксе если нужно перейти в папку /var/mysql
cd /var/mysql
Если путь содержит пробелы, то он пишется в двойных кавычках
cd "D:\Docuents and Settings\Prolog"
Терминал имеет следующие полезные особенности: если нажать стрелку вверх, по появится предыдущая выполненная команда. Если нажать tab, то терминал попытается дополнить строку до известной ему команды, или дополнить путь, перебирая все папки и файлы в текущей папке.
Наберите cd C:\
нажимайте tab и смотрите, что происходит.
Ещё одна важная команда dir на windows и ls на linux, выводит на консоль содержимое текущей папки (той папки, в которой вы находитесь в данный момент).
Наша программа вернула своё полное имя. Перейдя в папку, где располагается наша программа можно посмотрить её содержимое.
После того, как мы перешли в нашу папку, можно выполнить нашу программу. Для этого нужно набрать её имя.
Теперь изменим программу и сделаем так, чтобы она выводила все аргументы, которые ей переданы.
#include <conio.h>
#include <stdio.h>
void main(int argc, char **argv) {
int i;
for (i = 0; i < argc; i++) {
printf("%s\n", argv[i]);
}
}
Давайте теперь напишем программу, которая получает два аргумента числа и выводит их сумму
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void main(int argc, char **argv) {
int a, b;
if (argc != 3) {
printf("Error: found %d arguments. Needs exactly 2", argc-1);
exit(1);
}
a = atoi(argv[1]);
b = atoi(argv[2]);
printf("%d", a + b);
}
Таким образом работает большинство программ. Кликая на ярлык, вы вызываете программу, на которую он ссылается. Большинство программ также принимают различные аргументы. Например, можно вызвать браузер firefox из командной строки и передать аргументы
firefox.exe "www.mozilla.org" "kai.ru" и он сразу же откроет в двух вкладках сайты по указанным адресам.
Многие стандартные команды также имеют параметры. В windows принято, что они начинаются с прямого слеша, в юниксе с минуса или двух минусов. Например
dir /AD
выводит только папки, а в терминале linux
ls -l выводит все файлы и папки с указанием атрибутов
Для просмотра дополнительных команд windows наберите в командной строке help или смотрите руководство (его легко найти в интернете). Для линукса команд и их опций гораздо больше, а некоторые из них являются самостоятельными языками программирования, так что стоит выучить хотя бы минимальный набор и их опции.
