Интерфейс среды Ассемблера. Изучение рабочей среды Ассемблера Работа с командами пересылки данных. Директивы данных
Скачать 1.25 Mb.
|
Тема: Работа с массивами строк на языке СИ 1. Пример . Ввод и вывод строки. #include void main (void) { int len; char str[81]; printf("Vvedite ctroku: "); scanf("%s", str); for(len=0; str[len]; len++); printf("dlina stroki = %d\n", len); } Задание 1.1 Выведите любую фразу : «Знать меру следует во всем, везде. Знать меру надо в дружбе и вражде.» Саади. 2..Пример. Копирование строки 1 и 2 и присоединение строк. #include #include int main () { char s1[20], s2[20]; strcpy(s1,"Hello"); strcpy(s2,"C++"); strcat(s1,s2); puts(s1); return 0; } Задание 2.1 Создайте программу содержащую массивы 4-ёх строк.1 строка Мы, 2- любим друзей 3- за их, 4- недостатки! 3. Пример. Посчитать количество символов в строке. #include #include main() { char str[80]; printf("Vvedite ctroku: "); gets(str); printf("%s\n", str); puts(str); printf("ctroka \n%s \n imeet dliny %d cimv-v \n", str, strlen(str)); return 0; } Задание 3.1 Составить программу вывода двух строк и подсчитать кол-во символов каждой строки. Практическая работа №13 Тема: Работа с двумерными массивами на языке СИ Пример вывода двумерного массива, состоящего из 4-х столбцов и 3-х строк. #include int main(void) { int t, i, num[3][4]; for(t=0; t<3; ++t) for(i=0; i<4; ++i) num[t][i] = (t*4)+i+1; for(t=0; t<3; ++t) { for(i=0; i<4; ++i) printf("%3d ", num[t][i]); printf("\n"); } return 0; } Задание 1.1 Дан двумерный массив, состоящий из 3 столбцов и 2 строк. Найти минимальный элемент массива и отнять от него 2. Задание 2 Дан двумерный массив, состоящий из 4 столбцов и 5 строк. Найти сумму всех элементов массива. Задание 3 Дан двумерный массив, состоящий из 6 столбцов и 5 строк. Найти среднее арифметическое элементов массива и умножить его на 10. Задание 4. Дан массив из n x m элементов. (n=3; m=4) Найти сумму элементов каждой строки. Задача 5. Дан массив из n x m элементов. (n=2; m=2) Найти сумму элементов каждого столбца. Практическая работа №14 Тема: Работа с указателями и с указателями в двумерных массивах Пример 1. Программа, печатающая строку символов в обратном порядке. #include main() { char *uk1,*uk2; uk1=uk2="informatika"; while(*uk2!='\0') putchar(*uk2++); putchar('\n'); while(--uk2 >= uk1) putchar(*uk2); putchar('\n'); } **Пояснения: В самом начале указателям uk1 и uk2 присваивается начальный адрес строки «informatika". Затем строка посимвольно печатается и одновременно указатель uk2 смещается вдоль строки. В конце вывода uk2 указывает на последний символ исходной строки Задание 1.1 Составьте программу так, чтобы она обеспечивала ввод нескольких слов в строку в прямом и обратном порядке и опять в прямом. (слово «слово оборот») Пример 2. Вывести значения одномерного массива обычным способом и с использованием указателей. #include int a[6]={10,20,30,40,50,60}; main () {int i, *p; for (i=0; i<6; i++) printf("%d",a[i]); for (p=&a[0];p<=&a[5];p++) printf("%d",*p); for (p=&a[0],i=0; i<6; i++) printf("%d",p[i]); } Задание 2.1 Вывести значения одномерного массива a[10]={113,240,135,306,411,54,33,59,76,69} в столбик используя указатели . Задание 2.2 Вывести значения одномерного массива a[4]={2,5 6,8 7,7 5,5 } в строку используя указатели . Пример 3. Найти сумму элементов массива, состоящего из шести элементов, с использованием указателя. #include int a[]={1,2,3,4,5,6}; main() {int i,*p,s; p=a; for (s=0,i=0; i<6; i++) s+=*(p+i); printf("%d\n",s); } Задание 3.1.Найти сумму элементов массива, состоящего из 7 элементов int a[]={15, 8, 7, 5, 23, 4, 6, 4}, с использованием указателя и прибавить 100. Задание 4. Найти произведение массива, состоящего из 3 элементов int a[]={56,90,80}, с использованием указателя. Задание 5. Составьте программу на нахождение среднеарифметического 5-ех целых переменных с применением указателей. Задание 6. Составьте программу инициализации двумерного массива a[4][4], выборки элементов с a[2][1] до a[4][4] и их распечатки. Используйте доступ к элементам по указателю. (примерная программа) #include int a[3][3]={{10,20,30}, {40,50,60}, {70,80,90}}; int *p=a[0]; main () {int i; for (i=0;i<9;i+=4) printf("%d\n",*(p+i)); } Задание 7. Составьте программу инициализации двумерного массива a[6][6], выборки каждого 6-го элемента двумерного массива. Используйте доступ к элементам по указателю. Задание 8. Составьте программу инициализации двумерного массива a[2][8], вывод на экран 1 и последнего элементов двумерного массива . Используйте доступ к элементам по указателю. Практическая работа №15 Тема: Работа с глобальными переменными и функциями на СИ 1. Пример программы, в которой сравниваются две строки, введенные пользователем. Обратите внимание на объявление функции check() и указатель p внутри main(). Указатель p, как вы увидите, является указателем на функцию. #include #include void check(char *a, char *b, int (*cmp)(const char *, const char *)); int main(void) { char s1[40], s2[40]; int (*p)(const char *, const char *); /* указатель на функцию */ p = strcmp; /* присваивает адрес функции strcmp указателю p */ printf("Введите две строки.\n"); gets(s1); gets(s2); check(s1, s2, p); /* Передает адрес функции strcmp посредством указателя p */ return 0; } void check(char *a, char *b, int (*cmp)(const char *, const char *)) { printf("Проверка на совпадение.\n"); if(!(*cmp)(a, b)) printf("Равны"); else printf("Не равны"); } Задание 1.1 Составьте программу, в которой сравниваются 4 строки. Пример2. Пример программы передающей функции массив и количество элементов, содержащихся #include void show_array(int values[], int number_of_elements) { int i; for (i = 0; i < number_of_elements; i++) printf("%d\n", values[i]); } void main(void) { int scores[3] = {12,16,23}; show_array(scores, 3); } Задание 2.2 Составьте по аналогу программу, в которой функция show_array вызывается 5 раз с 5-ю различными массивами . Пример 3. 1Написать функцию "Факториал" и программу, использующую эту функцию для вывода таблицы факториалов. #include "stdio.h" #include "conio.h" unsigned int factor(int x) { unsigned int f = 1; for (int i = 2; i <= x; i++) f *= i; return(f); } void main() { unsigned int f; puts("\nТаблица факториалов"); for (int n = 1; n <= 8; n++) { f = factor(n); printf("%2i %u\n", n,f); } Задание 3.1 1Написать функцию "Квадрат чисел от1 до 9" и программу, использующую эту функцию для вывода таблицы квадратов чисел. Задание 4. Написать функцию, которая вычисляет значение аb. Числа а и b могут либо целыми, либо дробными числами. Задание 5. Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа. Пример 6. Рассмотрим функцию Sum(), вычисляющую значение суммы элементов массива: #include double Sum(double A[], int nA) { double s = 0; while(nA) s += A[--nA]; return s; } void main (void) { double B[] = { 1, 2, 3, 4, 5 }; int nB = sizeof(B)/sizeof(B[0]); printf("Сумма = %lf\n", Sum(B,nB)); printf("nB = %d\n", nB); } Задание 7. По примеру вышеуказанной программы найти среднее арифметическое массива из 4-ех элементов. {16, 5, 7, 1}. Задание 8 Напишите программу, вычисляющую произведение элементов массива {-4, 1,3,9,9,2} Функцию (Sum) из предыдущей задачи замените на (pro) Обязательно в конце программы написать ответ чему равно произведение элементов массива Практическая работа № 17 Тема: Работа со структурами на СИ Пример 1.Пример программы: /* Демонстрация записи */ #include < stdio.h > struct computer { int mem; int sp; char model [20]; }; /* Объявление записи типа computer, состоящей из трех элементов: mem, sp, model */ struct computer pibm = {512, 1, “ПЭВМ ЕС 1840.05”}; /* Объявление и инициализация переменной pibm типа computer */ main ( ) { printf (“ персональная ЭВМ % s\n\n “, pibm.model); printf ( “объем оперативной памяти - % d К байт \n”, pibm.mem); printf (“производительность - % d млн. операций в секунду \n”, pibm.sp); /* вывод на экран значений элементов структуры */ } В данной программе объявляется запись computer, которая состоит из трех элементов: mem (память ЭВМ), sp (быстродействие), model [20] (модель ПЭВМ). Переменная pibm имеет тип computer и является глобальной. Строки pibm.model, pibm.mem, pibm. sp в операторе printf вызывают обращение к соответствующим элементам записи pibm типа computer, которым ранее были присвоены определенные значения. Результат работы программы имеет вид: персональная ЭВМ ПЭВМ ЕС 1840.05 объем оперативной памяти – 512 К байт производительность – 1 млн. операций в секунду Задание 1.1 Аналогично примеру опишите используя структуру : 1.1.1 Запись БЛЮДО, которая состоит из 4-ух элементов (название блюда, 1 ингредиент, 2 ингредиент, 3 ингредиент.) ** У каждого свой пример!!!!!!!!!!!!!!! 1.1.2) запись Книга, которая состоит из 5-ух элементов (Женр, Название книги, Автор, издательство, цена книги, ) ** У каждого свой пример!!!!!!!!!!!!!!! Пример 2. Составьте программу, используя структуру. Опишите запись АНКЕТА и поместите в нее следующую информацию: Ф.И.О.(фамилия, имя, отчество), адрес (улица, номер дома, номер квартиры), пол, возраст. # include struct date { int day; int month; int year; }; struct person { char fam [20]; char im [20]; char ot [20]; struct date f1;}; main ( ) { struct person ind1; printf ( "f,i,o,den, mecac, god rogdenia grazd-na ind1 \n" ); scanf ("%s %s %s %d %d %d", &ind1.fam, &ind1.im, &ind1.ot, & ind1.f1.day, &ind1.f1.month, &ind1.f1.year ); printf (" F,I,O: %s %s %s\n", ind1.fam, ind1.im, ind1.ot); printf ("God r - %d\n", ind1.f1.year); printf ("mecac - % d\n", ind1.f1.month); printf ("den - % d\n", ind1.f1.day); } Задание 2.Опишите запись АВИА БИЛЕТ и поместите в нее следующую информацию: Ф.И.О. (фамилия, имя, отчество пассажира), возраст пассажира (год рождения), багаж (количество вещей, вес в кг). Учебно-методическое и информационное обеспечение учебной практики а)Основная литература: Голицина О. Л., Попов И. И. Основы алгоритмизации и программирования: Учебное пособие. - М: Форум, 2008. Подбельский В.В., Фомин С.С. Программирование на языке СИ. Учебное пособие. М,: ДИАЛОГ, 2005. Юров В. Ассемблер –СПб.: Питер, 2010. – 637 с., В. Н. Пильщиков Программирование на языке ассемблера IBM PC.: «Диалог МИФИ», 2008. – 288 с. 5. Н.Культин «С/С++ в задачах и примерах б)Дополнительная литература: 1.Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский центр «Академия», 2006. 2. Пирогов В. Ассемблер на примерах. 2005. 3.Семакин И. Г., Шестаков А. П. Основы программирования. учебник. - М.: Издательский центр «Академия», 2006. в) программное обеспечение и Интернет-ресурсы -Операционная система Windows XP, интегрированная среда ассемблера Fasm, интегрированная среда языка С 1) http://informatika.far.ru 2) http://mr-net.narod.ru 3) http://www.uchi-c.narod.ru |