IT취업 53

[ C ] 13. 함수 포인터 배열 활용하기

[ 함수 포인터 배열 활용 ] 함수 포인터 배열 사용하기 #define _CRT_SECURE_NO_WARNINGS #include int add(int a, int b){ return a + b; } int sub(int a, int b){ return a - b; } int mul(int a, int b){ return a * b; } int div(int a, int b){ return a / b; } int main(){ int funcNumber; // 함수 번호 int num1, num2; int (*fp)(int, int) = NULL; // int형 반환값, int형 매개변수 두 개가 있는 함수 포인터 선언 printf("함수 번호와 계산할 값을 입력하세요: "); scanf("%d %d %..

[ C ] 12. 함수와 가변인자

[ 함수와 가변인자 ] printf, scanf와 같이 매개변수의 개수가 정해지지 않은 개수가 있다. 이렇게 매번 함수에 들어가는 인수(argument)의 개수가 변하는 것을 가변 인자(가변 인수, variable argument)라고 한다. 함수에서 가변인자를 정의할 때는 고정 매개변수가 한 개 이상 있어야 하며 고정 매개변수 뒤에 ...을 붙여 매개변수의 개수가 정해지지않았다는 표시를 해준다. 단, ...뒤에는 다른 매개변수를 지정할 수 없다. 반환값 자료형 함수이름(자료형 고정매개변수, ...){ } #include // args는 고정 매개변수 void printNumbers(int args, ...){ printf("%d ", args); } int main(){ printNumbers(1, 1..

[ C ] 11. 함수와 배열

[ 함수와 배열 ] 함수에서 배열을 매개변수로 사용하면 연속된 값을 전달할 수 있꼬, 전달한 배열의 요소를 함수 안에서 변경할 수 있다. 1차원배열 매개변수 함수에서 배열을 매개변수로 사용하려면 ( )(괄호)안에서 매개변수 이름 뒤에 [ ](대괄호)를 붙이거나 매개변수를 포인터로 지정해줍니다. 대괄호를 포인터로 지정하기 반환값자료형 함수이름(자료형 매개변수[]){ } 반환값자료형 함수이름(자료형 *매개변수){ } #include void printArray(int arr[], int count){ // 배열의 포인터와 개수를 받음 for(int i=0; i

[ C ] 10. 함수와 포인터

[ 함수와 포인터 ] void 포인터 매개변수 사용하기 void 포인터 매개변수를 사용하면 자료형 변환을 하지 않아도 모든 자료형을 함수에 넣을 수 있다. 이번에는 char, int, float형을 매개변수로 받아서 값을 서로 바꿔보겠다. #include enum TYPE { TYPE_CHAR, TYPE_INT, TYPE_FLOAT }; void swapValue(void *ptr1, void *ptr2, enum TYPE t){ switch(t){ case TYPE_CHAR:{ // 문자면 char *로 변환한 뒤 역참조하여 값을 서로 바꿈 char temp; temp = *(char *)ptr1; *(char *)ptr1 = *(char *)ptr2; *(char *)ptr2 = temp; break..

[ C ] 08. 구조체

[ 구조체 ] 구조체는 struct 키워드로 정의한다. struct 구조체이름{ 자료형 멤버이름; ... }; // 구조체는 정의만 해서 사용할 수가 없다. 구조체도 변수로 선언해서 사용한다. struct 구조체이름 변수이름; ex. #define _CRT_SECURE_NO_WARNINGS // strcpy 보안 경고로 인한 컴파일 에러 방지 #include #include // strcpy 함수가 선언된 헤더 파일 struct Person{ // 구조체 정의 char name[20]; // 구조체 멤버 1 int age; // 구조체 멤버 2 char address[100]; // 구조체 멤버 3 } int main(){ struct Person p1; // 구조체 변수 선언 // 점으로 구조체 멤버에..

[ C ] 07. 열거형

[ 열거형 ] 열거형은 정수형 상수에 이름을 붙여 코드를 이해하기 쉽게 해준다. 만약 여러개 정수형 상수를 선언한다면 두세 개까지는 괜찮지만 개수가 많아지면 귀찮아 질 것이다. 열거형을 사용하면 정수형 상수를 좀 더 편하게 정의할 수 있다. enum 열거형이름{ value1 = 초깃값, value2, value3 }; 열거형은 정의로만 사용이 안되고 변수로 선언해서 사용해야 한다. enum 열거형이름 변수이름; #include enum DayOfWeek{ // 열거형 정의 Sunday = 0; // 초깃값 할당 Monday, Tuesday, Wednesday, Thursday, Friday, Saturday }; int main(){ enum DayOfWeek week; // 열거형 변수 선언 week ..

[ C ] 06. 포인터연산

[ 포인터연산 ] 포인터로 선언한 변수에는 메모리 주소가 들어있다. 이 포인터 변수에서 연산을 할 수 있다. 마찬가지로 메모리 주소에 일정 숫자를 더하거나 빼면 메모리 주소가 증가,감소 한다. 즉, 포인터 연산을 하면 다른 메모리 주소에 접근할 수 있으며 메모리 주소를 손쉽게 옮겨 다니기 위해서 사용한다. 여기서 메모리 주소가 커지는 상황을 순방향 이동(forward), 메모리 주소가 작아지는 상황을 역방향이동(backward)라 하겠다. 포인터연산으로 메모리 주소 조작하기 #include int main(){ int numArr[5] = { 11, 22, 33, 44, 55 }; int *numPtrA; int *numPtrB; int *numPtrC; numPtrA = numArr; // 배열 첫 번..

[ C ] 05. 메모리와 포인터의 사용

[ 메모리와 포인터의 사용 ] #include #include // malloc, free 함수 int main(){ int *numPtr; // int형 포인터 선언 numPtr = malloc(sizeof(int)); // int의 크기 4바이트만큼 동적 메모리 할당 *numPtr = 10; // ****포인터를 역참조 한뒤 값 할당**** printf("%d\n", *numPtr); // 10 , 포인터를 역참조하여 메모리에 저장된 값 출력 free(numPtr); // 동적 메모리 해제 return 0; } malloc함수에 실제로 값을 저장할 때는 시스템의 한계(RAM, 디스크)이상 저장할 수 없다. 메모리 내용을 한꺼번에 설정하기(memset) memset함수를 사용하면 메모리의 내용을 원하는..

[ C ] 04. 포인터의 형변환

[ 포인터의 형변환 ] #include #incldue // malloc, free 함수가 선언된 헤더파일 int main(){ int *numPtr = malloc(sizeof(int)); // 4바이트만큼 메모리 할당 char *cPtr; *numPtr = 0x12345678; cPtr = (char *)numPtr; // int 포인터 numPtr을 char 포인터로 변환. 메모리 주소만 저장됨 printf("0x%x\n", *cPtr); // 0x78 : 낮은 자릿수 1바이트를 가져오므로 0x78 free(numPtr); // 동적메모리 해제 return 0; } # 실행 결과 0x78 numPtr에 메모리를 할당하고 역참조하여 0x12345678을 저장했다. 그리고 cPtr = (char *)n..

[ C ] 02. 문자열 관련 자주 쓰이는 함수

[ atoi, atof, atol ] 1. atoi, atof, atol 함수의 기원 atoi 함수를 살펴보면 a - to - i 이렇게 나눌 수 있다. a=char(AScII), i = int atoi (char to int) = 문자열을 정수 타입으로 atof (char to double) = 문자열을 실수 타입으로 atol (char to long int) = 문자열을 long 정수 타입으로 중요한 것은 여기서 char는 char[N], char*로 표현이 되는 문자열을 말한다. // ( char * to int )가 더 정확한 표현같음? C++에서는 string클래스에 의해서 문자열을 string으로 표현할 수 있는데, C언어에서는 string클래스가 존재하지 않기 때문에 char배열을 이용하여 ..

[ C ] 01. 동적할당이란?

[ 동적할당 ] 동적할당이라는 것은 프로그램 실행중에 동적으로 메모리를 할당하는 것을 말한다. 여기서 중요한것은 동적으로 메모리를 할당할때 Heap(힙)영역에 할당한다는 것이다. # 함수원형 void* malloc(size_t size) 해당함수를 사용하기 위해서는 헤더파일을 include해야한다. 함수 동작은 매개변수에 해당하는 size_t 만큼의 크기만큼 메모리를 할당하고 성공하면 : 할당한 메모리의 첫 번째 주소 리턴 실패하면 : NULL 리턴 제일 중요한점 !! 할당한 메모리는 꼭 해제해주어야한다.!! 그렇지 않으면 메모리 릭, 메모리 누수가 발생한다. 함수 원형 메모리 할당 void *malloc(size_t size); - 할당받을 메모리 크기를 인자로 받는다 - ex) int * arr = ..

[ C ] 00. 함수 호출방식

[ 함수 호출방식 ] Call-by-value 값에 의한 호출 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성된다.(c++의 경우 stack frame) => 함수가 종료되면 해당 공간은 사라진다. 스택 프레임(Stack Frame) : 함수 호출시 할당되는 메모리 블록(지역변수의 선언으로 인해 할당되는 메모리 블록) call-by-value 값에 의한 호출방식은 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가진다. 따라서 함수 안에서 인자의 값이 변경되어도, 외부의 변수의 값은 변경되지 않는다.!! 장점 : 복사하여 처리하기 때문에 안전하다. 원래의 값이 보존이 된다. 단..

[ 정보처리기사 ] 04. 2020 정보처리기사 3회차 실기 대비 - 화면설계 ( UI 요구사항 확인 )

화면 설계 - UI 요구사항 확인 UI 사용자와 사물 또는 시스템, 컴퓨터 프로그램 등 사이에서 의사소통을 할 수 있도록 만들어진 매개체 HCI 인간과 컴퓨터간의 상호작용에 관한 연구 인간과 컴퓨터가 쉽고 편하게 상호작용할 수 있도록 작동시스템을 디자인하고 평가하는 과정을 다루는 학무 UI수단 입력 : 사용자가 시스템 조작 출력 : 시스템이 사용자가 이용한 것에 대한 결과 표시 UI 종류 GUI : 그래픽과 텍스트로 이루어져 있으며 객체지향 인터페이스와 응요프로그램 지향 인터페이스가 공존 WUI : 인터넷과 웹 브라우저를 통해 웹 페이지를 열람하고 조작하는 인터페이스 CLI : 사용자가 컴퓨터 자판 등을 이용해 명령 문자열을 입력하여 조작하는 인터페이스 TUI : CLI처럼 문자열을 입력하나 GUI처럼 ..

[ 정보처리기사 ] 03. 2020 정보처리기사 3회차 실기 대비 - 요구사항 관리( SW 개발 방법론 선정)

요구사항 관리 - SW 개발 방법론 선정 요구공학 요구사항에 관계되는 모든 활동과 원칙들에 대한 공학적인 접근 즉, 요구사항을 정의, 문서화, 관리하는 프로세스 요구사항 추출-분석-기술-검증-유지보수 요구사항 추출 생명 주기 동안 지속적으로 반복 시스템에 대한 요구사항 수집(개발자관점) 이해관계자 식별, 개발 팀과 고객 사이의 관계 생성 도출기법 : 인터뷰, 설문, 브레인스토밍, 워크샵, 유스케이스, 프로토타이핑 요구사항 분석 무슨 시스템을 구현할 것인가 분석 요구사항 간 상층 해결, 소프트웨어 범위 파악, 호나경과의 상호작용 이해 시스템 요구사항을 정제하여 소프트웨어 요구사항 도출 분석기법 : 요구사항 분류, 개념모델링, 요구사항 할당, 요구사항 협상, 정형분석(수학적 기호 표현) 요구사항 기술(명세화..

[ 정보처리기사 ] 02. 2020 정보처리기사 3회차 실기 대비 - 요구사항 분석모델 확인

요구사항 분석모델 확인 모델링 실세계의 물리현상을 특정한 목적에 맞추어 이용하기 쉬운 형식으로 표현하는 일 개념모델링의 역할 실세계 문제에 대한 모델링이 소프트웨어 요구사항 분석의 핵심 모델은 문제가 발생하는 상황에 대한 이해를 증진시키고 해결책을 설명 개념 모델은 문제 도메인의 Entity들과 그들의 관계 및 종속성을 반영 개념모델의 종류(대부분 UML을 사용) Use case Digram, Data Flow Model, Goal-Based Model, User Interactions, Object Model, Data Model 등 데이터가 시스템에 의해서 어떻게 처리되는지 보여주는 직관적인 방법 ER모델(개체관계도) 개체와 개체간의 관계 도식화 UML 다이어그램의 사용 사용 시나리오를 나타내기 위해..