05주차 - Donghwanteam/C2-10 GitHub Wiki
라이브러리: 미리 만들어서 제공하는 컴파일 완료된 바이너리 코드.
함수는 기능하는 명령들의 묶음이고, 한번 만들면 여기저기서 여러 번 쓸 수 있고 수정 용이성이 좋다는 장점이 있다.
함수는 호출(call), 런(run), 리턴(return)
-
서버는 데이터를 저장하고 관리하며 클라이언트가 요청하는 서비스를 제공하는 컴퓨터 또는 시스템입니다. 예를 들어, 웹 서버는 웹사이트의 데이터를 클라이언트에 전달하는 역할을 합니다.
-
서버는 일반적으로 강력한 하드웨어와 소프트웨어 환경을 갖추고 있어 많은 요청을 동시에 처리할 수 있습니다.
-
예시: 웹 서버, 게임 서버, 데이터베이스 서버 등.
-
클라이언트는 서버에 요청을 보내고 서버로부터 응답을 받는 컴퓨터나 장치입니다. 보통 사용자가 직접 조작하는 장치(PC, 스마트폰 등)가 클라이언트 역할을 합니다.
-
클라이언트는 서버에 요청을 보내고, 서버는 해당 요청을 처리하여 결과를 클라이언트에게 돌려줍니다.
-
예시: 웹 브라우저, 이메일 클라이언트, 게임 클라이언트 등.
클라이언트가 전달 -> 서버가 이걸 받음
void PrintNumder(int~~)
->Head
{
}
-> Body
#include <stdio.h>
int main() {
printf("Hello\n");
printf("integer : %d\n", 100);
printf("string : %s\n", "Hello!");
}
#include <stdio.h>
int main() {
puts("Hello");
printf("integer : %d\n", 100);
printf("string : %s\n", "Hello!");
}
- puts는 표준 라이브러리 함수이고, 문자열만 출력 능한 함수
#include <stdio.h>
void PrintHello()
{
printf("Hello\n");
}
int main() {
PrintHello();
}
- main은 PrintHello의 클라이언트.
#include <stdio.h>
void PrintHello()
{
for(int i=0; i<5; ++i)
printf("Hello: %d\n", i+1);
puts("");
}
int main()
{
PrintHello();
PrintHello();
PrintHello();
}
#include <stdio.h>
void PrintHello(int size)
{
for (int i = 0; i < size; ++i)
printf("Hello: %d\n", i + 1);
puts("");
}
int main()
{
PrintHello(2);
PrintHello(3);
PrintHello(10);
}
#include <stdio.h>
void PrintAdd(int a, int b)
{
printf("%d + %d = %d\n", a, b, a + b);
}
int main()
{
int a = 10;
int b = 20;
PrintAdd(a, b);
PrintAdd(7, 5);
}
#include <stdio.h>
int Add(int a, int b)
{
int sum = a + b;
return sum;
}
int main()
{
int a = 10;
int b = 20;
int r = 0;
r = Add(a, b);
printf("sum = %d\n", r);
}
void는 비어있다는 것이고 정수값을 던지는 것이기 때문에 void를 정수타입인 int로 바꿔줌.
실수라면 실수형식이 되어야함.
#include <stdio.h>
int Add(int a, int b)
{
int sum = a + b;
return sum;
}
int main()
{
int a = 10;
int b = 20;
int r = 0;
r = Add(a, b);
printf("sum = %d\n", r);
printf("sum = %d\n", Add(1, 3));
printf("sum = %d\n", Add(12, 12));
}
#include <stdio.h>
int main()
{
int sum = 10;
for (int i = 1; i <= 10; ++i)
sum = sum + i;
printf("sum = %d\n", sum);
}
#include <stdio.h>
void PrintTotalInt(int start, int end) {
int sum = 0;
for (int i = start; i <= end; ++i)
sum = sum + i;
printf("sum = %d\n", sum);
}
int main()
{
PrintTotalInt(1, 100);
PrintTotalInt(6, 7);
PrintTotalInt(200, 300);
}
#include <stdio.h>
int TotalInt(int start, int end) {
int sum = 0;
for (int i = start; i <= end; ++i)
sum = sum + i;
return sum;
}
int main()
{
int sum = 0;
sum = TotalInt(1, 100);
printf("sum = %d\n", sum);
sum = TotalInt(6, 7);
printf("sum = %d\n", sum);
sum = TotalInt(200, 300);
printf("sum = %d\n", sum);
}
#include <stdio.h>
int TotalInt(int start, int end) {
int sum = 0;
for (int i = start; i <= end; ++i)
sum = sum + i;
return sum;
}
int main()
{
printf("sum = %d\n", TotalInt(1, 5));
}
#include <stdio.h>
int main()
{
for (int i = 1; i <= 100; ++i)
{
printf("%d", i);
}
printf("\n");
}
모든 정수 출력
#include <stdio.h>
int main()
{
for (int i = 1; i <= 100; ++i)
{
if(i%2 == 0)
printf("%d", i);
}
printf("\n");
}
모든 짝수 출력
#include <stdio.h>
void PrintEvenNumder(int start, int end)
{
for (int i = start; i <= end; ++i)
{
if (i % 2 == 0)
printf("%d", i);
}
printf("\n");
}
int main()
{
PrintEvenNumder(1, 10);
PrintEvenNumder(20, 30);
}
#include <stdio.h>
void PrintEvenNumder(int start, int end, int flag)
{
for (int i = start; i <= end; ++i)
{
if (i % 2 == flag)
printf("%d ", i);
}
printf("\n");
}
int main()
{
PrintEvenNumder(1, 10, 1);
PrintEvenNumder(20, 30, 0);
}
#include <stdio.h>
void PrintEvenNumder(int start, int end, int isOdd)
{
for (int i = start; i <= end; ++i)
{
int mod = i % 2;
if (mod == isOdd)
printf("%d ", i);
}
printf("\n");
}
int main()
{
PrintEvenNumder(1, 10, 1);
PrintEvenNumder(20, 30, 0);
}
#include <stdio.h>
void PrintNumder(int start, int end, int isOdd); //선언
int main()
{
PrintNumder(1, 10, 1);
PrintNumder(20, 30, 0);
}
void PrintNumder(int start, int end, int isOdd)
{
for (int i = start; i <= end; ++i)
{
int mod = i % 2;
if (mod == isOdd)
printf("%d ", i);
}
printf("\n");
}
인터프리터와 컴파일러의 차이점, 대표적인 언어 찾기
- 프로그래밍 언어의 소스 코드를 한줄 한줄 바로 실행하는 컴퓨터 프로그램입니다.
- 별도의 컴파일 과정을 거치지 않고, 소스 코드 각각을 한 줄씩 읽어들여 실행시킵니다.
- 실행속도: 느림
- 별도의 실행 파일을 생성하지 않아서 실행 시간이 오래 걸릴 수 있습니다.
- 메모리 사용에서는 효율적입니다.
- 한 줄씩 바이크코드로 변환한 후, 즉시 실행하는 형식입니다.
- 코드 실행시마다 인터프리터 과정을 반복합니다.
- 단점: 소스코드가 쉽게 공개될 수 있습니다. 컴파일한 결과를 바이트 코드 등으로 컴파일해서 배포하는 경우가 잘 없기 때문에 쉽게 디컴파일이 가능합니다.
- 대표적인 언어: Python(파이썬), JavaScript(자바스크립트), Ruby, MATLAB, 스크래치..등
- 고급 언어로 작성된 소스코드를 기계어(컴퓨터 언어)로 번역하는 프로그램입니다. _ 생성한 프로그램 코드 전체를 스캔하여 한꺼번에 기계어로 번역합니다.
- 실행속도: 빠름
- 전체를 번역하는데 초기 실행시간은 오래 걸리지만, 전체적인 실행시간은 빠릅니다. ==> 이유: 컴파일러는 초기 실행 파일을 한번 만들어놓은 뒤, 이후에 실행할 때 해당 실행파일을 그대로 실행하면 되기 때문.
- 컴파일러는 별도의 실행 파일을 생성합니다.
- 기계어 번역과정에서 더 많은 메모리를 사용합니다.
- 단점: 고급언어로 작성된 소스 코드를 기계어로 변환하는 과정에서 오브젝트 코드라는 파일을 만들어야 하기 때문에 보다 더 많은 메모리가 필요합니다. 또한 프로젝트의 규모가 커지면 컴파일 시간이 오래 걸릴 수 있습니다.
- 대표 언어: C, C++, C#, JAVA, 크리스탈, ADD(에이다), 파스칼.. 등