환급미션 17일째..
컴퓨터 구조 - 중앙처리장치 - 프로그래밍 언어와 실행 -1
컴퓨터 구조 - 중앙처리장치 - 프로그래밍 언어와 실행 -12
지금까지와 마찬가지로
이 수업에서는 개요 정도만 다루고, 자세한 건 구글링이나 고급과정으로 넘어가서 배우라고 한다 (...)
우선 소프트웨어 개발 패러다임을 간략하게 살펴보았다.
*구조적 기법을 사용하는 방식
원하는 결과를 위해 일련의 함수를 사용하여 프로그램 작성
데이터, 함수 분리
개발, 유지 보수에 많은 비용이 발생한다고 한다.
ex) 코볼, 파스칼, 코트란 등의 언어
*객체지향(opp) 기법을 사용하는 방식
객체(object) - 데이터, 처리 기능(method)을 단위화 하여 캡슐화 시키고
각 기능의 상속(inheritance)으로 기능을 재사용할 수 있다.
ex) C++, Java
* 컴포넌트 기법을 사용하는 방식
외부와 interface를 통하여 동작구현 및 시스템의 단순성을 높임
* 분산객체 프레임워크
다른 환경에서 여러 종류의 application을 통합하는 방식
이번 시간엔 특이하게도 실습을 진행하였다.
사실 실습이라기엔....
툴 소개 정도..
실습에 사용된 툴은 아래와 같다.
Dev C++ (컴파일러, 고급언어 프로그래밍 툴)
x64dbg (Disassembler 프로그램, 고급언어로 작성된 소스를 어셈블리 언어로 확인 가능한 툴)
Wireshark (패킷 분석 툴)
-------------------
#include <stdio.h>
#include <conio.h>
int main()
{
int a,b,c;
a=83;
b=234;
c=a+b;
printf("a+b= %5.2d",c);
return 0;
}
----------------------
변수 a=83, b=234를 선언하고
두 변수의 합을 출력하는 간단한 코드로 예시를 들었다.
출력함수 printf 안에 기재한 %5.2d에 대해 자세히 설명되었는데
전체 5자리, 소수아래 2자리 출력하라는 포맷이다.
x64dbg라는 프로그램으로 작성한 소스프로그램을 돌려보면 위와 같이 출력됨을 알 수 있다.
컴퓨터 내부에서 어떤 작업들이 진행되는지 자세하게 확인할 수 있다.
역시 이런게 있다 정도로만 알아둘 것
wireshark 라는 패킷 분석 툴을 실행한 화면이다.
No. - 패킷을 수집한 순서
Time - 패킷을 수집한 시간
Source, Destination - 수집된 정보가 어디서 발송되어서 어디로 가는지
Protocol - 통신 규약, 어느 경로를 통해 가는지
hexadecimal 표현 방식을 사용한다.
소프트웨어 베이직 - c언어의 기초 - 13. 다차원 배열과 포인터 배열
2차원 이상의 배열의 표현 방법,
포인터를 이용해 2차원 배열을 다루는 방법을 학습한다.
- 2차원 배열
행렬 데이터, 그래프 알고리즘, 실생활 데이터 등을 처리할 때 많이 사용된다.
2차원 배열은 흔히 볼 수 있는 위의 표와 같은 구조를 갖는다.
자료형 배열이름[행][열] = {
{ 값,...}, {값,....},...
}
또는
int a[10][10];
위와 같은 형태로 2차원 배열을 초기화한다.
행, 열에는 각각 행과 열의 인덱스 값이 들어간다.
- 2차원 배열의 사용
* 이중 for문과 함께 많이 사용된다.
-------------
#include <stdio.h>
int a[3][3] = { {1,2,3}, {4,5,6}, {7,8,9} };
int main()
{
int i,j;
for (i=0;i<3;i++)
{
for (j=0;j<3;j++)
printf("%d", a[i][j]);
printf("\n");
}
return 0;
}
----------------
위의 코드에 이중 for문이 사용되었는데, 2차원 배열 a를 출력한다.
- 다차원 배열
2차원 배열 이상의 배열을 의미
컴퓨터는 화면에 2차원 형태만 출력할 수 있지만, 내부적으로 다차원 구조로 동작한다.
- 포인터 배열의 구조 분석
배열은 포인터와 동일한 방식으로 동작
포인터는 변수, 배열의 이름은 상수이다. 따라서 배열의 이름은 다른 주소로 바꿀 수 없다.
배열의 이름은 배열의 첫 번째 원소의 주소가 된다.
9번째 줄은 주소를,
10,11번째 줄은 포인터가 가리키는 값을 출력한다.
결과물의 주소를 살펴보면 자료형인 int의 크기와 같이 4byte씩 커지는 것을 알 수 있다.
포인터는 연산을 통해 자료형의 크기만큼 이동하는 것을 알 수 있다.
* 예제1
크기가 10인 double형 배열의 시작 주소값이 x일 때, 배열의 마지막 원소의 주소값은?
-> x+72, 자료형 double의 크기는 8byte이기 때문
* 예제2
위 코드 7,8,9줄의 출력값은?
->
1
3
5
7번째 줄에서 포인터 b의 값인 첫 번째 값을 출력 후, b가 가리키는 값을 한 칸 이동하여 b는 두 번째 주소값을 가리키게 됨
8번째 줄에서 b의 값인 두 번째 주소값에서 한 칸 이동후 출력, 3을 가리키게 됨
9번째 줄에서 포인터 b가 가리키는 3의 주소값에서 두 칸 이동 후 출력, 5를 출력하게 됨
* 2차원 배열을 포인터로 처리
포인터는 포인터의 포인터를 가질 수 있다.
2차원 배열도 내부적으로 주소값을 가지고 있다. 따라서 포인터의 포인터인 2중포인터로 처리할 수 있다.
특정한 행 (위의 예시에서는 2번째 행)을 가리키는 포인터 b를 선언하고
위와 같이 출력하면 2번째 행의 값인 6,7,8,9,10 이 차례대로 출력된다.
만약 위의 코드의 8번째 줄에서
포인터 b의 값을 a[1]이 아닌 a로 초기화한다면,
1,2,3,4,5가 출력될 것이다.
올인원 패키지 : 컴퓨터 공학 전공 필수👉https://bit.ly/3i4sCVE
'패스트캠퍼스' 카테고리의 다른 글
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 19회차 미션 (0) | 2020.11.06 |
---|---|
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 18회차 미션 (0) | 2020.11.05 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 16회차 미션 (0) | 2020.11.03 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 15회차 미션 (0) | 2020.11.02 |
[패스트캠퍼스 수강 후기] 올인원 패키지 : 컴퓨터 공학 전공 필수👉C언어인강 100% 환급 챌린지 14회차 미션 (0) | 2020.11.01 |