| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- c#
- 클래스 다이어그램
- 무료 동영상 강의
- 원격 제어 프로그램
- 실습으로 다지는 c#
- 동영상 강의
- 네트워크 프로그래밍
- 유튜브 동영상 강의
- 캡슐화
- C++
- 표준 라이브러리 함수
- 강의
- 표준 입출력
- 졸업 작품 소재
- 언제나 휴일
- 알고리즘
- c언어
- 산책하기 좋은 곳
- 소켓 통신
- 프로젝트
- 실습
- 안드로이드 앱 개발
- 파이썬
- 소스 코드
- 충남 천안
- 추천
- 독립기념관
- 언제나휴일
- 동영상
- Windows Forms
- Today
- Total
목록분류 전체보기 (374)
프로그래밍 언어 및 기술 [언제나휴일]
람다람다는 간단한 알고리즘 코드 블록입니다.lambda 입력인자목록: 수행코드함수는 알고리즘 코드 블록에 이름(함수명)을 명명하여 호출하여 사용할 수 있게 만든 재사용성 높은 코드입니다.반면 람다는 이름을 명명하지 않은 알고리즘 코드로 간단하게 알고리즘을 표현할 수 있다는 장점을 갖습니다.다음은 입력 인자로 전달받은 값에 1을 더한 값을 반환하는 함수를 정의하고 호출한 코드입니다.[In]def add_one(x): return x+1print(add_one(1))[out]2이를 람다로 표현한다면 다음처럼 표현할 수 있어요.[In]fun = lambda x: x+1print(print(fun(1))[out]2콜백콜백은 호출 방향이 반대 방향이라는 의미입니다.사용자 정의 코드에서 함수를 호출하는 것이 정상..
함수는 자주 사용하는 기능을 정의하여 필요할 때 호출하여 사용하는 핵심 문법입니다.함수 개요에서는 함수 구조부터 입력 매개변수, 리턴을 다룹니다.그리고 내장 함수 및 함수 만들기 실습을 진행할게요.함수 기본 구조def 함수명([입력 매개변수 목록]): 수행할 일다음은 두 개의 인자를 전달받아 더한 값을 반환하는 함수를 정의한 코드입니다.[In]def addxy(x,y): return x+y이렇게 정의한 함수는 함수 호출을 통해 사용할 수 있어요.함수 호출할 때는 함수명과 입력 인자를 전달합니다.함수명([입력 인자 목록])다음은 addxy 함수를 호출하여 사용하는 코드입니다.[In]print(addxy(2,3))print(addxy(1,3))print(addxy(2,5))[out]547입력 매개변수..
dictionarydictionary는 키와 값을 보관하는 컬렉션입니다.영어사전에 단어와 뜻이 있는 것처럼 dictonary에는 키와 값이 있습니다.dictionary는 중괄호에 아이템을 열거하는데 키와 값은 콜론으로 구분합니다.변수 = {키:값, 키:값, 키:값, …}다음은 정수를 키, 문자열을 값으로 하는 사전을 표현한 것입니다.[In]num_dic = {1:"One",2:"Two",3:"Three" }print(num_dic)[Out]{1: 'One', 2: 'Two', 3: 'Three'}dictionary에 인덱스 연산에 키를 넣으면 값을 참조할 수 있습니다.[In]print(num_dic[1])[Out]Onedictionary에 보관할 때도 인덱스에 키를 넣고 값을 대입 연산을 이용하여 넣습니..
보관리스트에 요소를 순차 보관할 때 append 메서드를 사용합니다.리스트에 요소를 순차 보관할 때 append 메서드를 사용합니다.list.append(요소)다음은 빈 리스트를 생성한 후 1부터 9까지 순차적으로 보관하는 코드입니다.[In]ls = list() #빈 리스트 생성for i in range(1,10): ls.append(i)print(ls)[Out][1, 2, 3, 4, 5, 6, 7, 8, 9]'a'를 추가해서 확인하면 맨 마지막에 보관하는 것을 알 수 있어요.[In]ls.append('a')print(ls)[Out][1, 2, 3, 4, 5, 6, 7, 8, 9, 'a']리스트에 원하는 위치에 보관할 때는 insert 메서드를 사용합니다.list.insert(인덱스, 요소)다음은 인덱..
튜플튜플은 요소를 설정할 수 없는 고정 컬렉션입니다.튜플은 소괄호에 값을 열거하는 형태로 표현합니다.[In]tup1 = (1,2,3)print(type(tup1))print(tup1)[Out](1, 2, 3)소괄호없이 값을 열거한 표현도 튜플입니다.[In]tup2 = 1,2,3print(type(tup2))print(tup2)[Out](1, 2, 3) 튜플의 요소 형식은 서로 다를 수 있습니다.[In]tup3 = (1,2.0, 'a')print(type(tup3))print(tup3)[Out](1, 2.0, 'a')요소가 다를 수 있다는 얘기는 다른 컬렉션도 요소로 올 수 있음을 의미합니다.[In]tup4 = (1,'a',tup2)print(type(tup4))print(tup4)[Out](1, 'a',..
논리 형식 bool파이썬에서는 True와 False를 값으로 갖는 bool 형식을 제공하고 있어요.[In]print(type(True))print(type(False))[Out]논리 연산 연산 결과가 bool 형식인 논리 연산은 and, or, not을 제공합니다.and 연산은 이항 연산자로 둘 다 참일 때만 연산 결과가 참입니다.[In]print(f"False and False = {False and False}")print(f"False and True = {False and True}")print(f"True and False = {True and False}")print(f"True and True = {True and True}")[Out]False and False = FalseFalse an..
변수 사용프로그램에서 사용할 데이터를 기억해 두었다가 필요할 때 사용하기 위한 문법으로 변수를 제공합니다.파이썬에서는 별도의 선언문 없이 변수에 값을 대입하는 형태로 사용할 수 있습니다.다음은 사각형의 면적을 계산하기 위해 너비와 높이를 변수에 대입하여 사용하는 예제 코드입니다.[In]width = 10height = 15rect_area = width * heightprint("너비:",width, "높이:",height, "사각형 면적:",rect_area)[Out]너비: 10 높이: 15 사각형 면적: 150기본 입력 input사용자로부터 값을 입력받아 변수에 대입하고자 한다면 input함수를 사용하세요.input 함수는 화면에 출력할 내용을 전달합니다.다음은 이름과 번호를 입력받아 출력하는 예제 ..
1. 파이썬 소개어린왕자 첫 페이지를 기억하시나요? 처음에 모자라고 생각한 그림이 나오죠. 그리고 다음 페이지로 넘겼을 때 모자가 아니라 보아구렁이가 코끼리를 삼킨 것임을 알았던 기억이 있을 거예요.갑자기 왠 어린왕자 얘기를 하냐구요? 네. 눈치를 채셨겠지만 보아구렁이가 python입니다. Python 언어의 철학이 다양한 형태의 프로그래밍을 할 수 있게 여러 기술을 통합하여 사용할 수 있다는 생각에서 언어 이름을 작명한 것이죠. 표면적으로 파이썬을 만든 귀도 반 로섬이 좋아하는 코미디 [Monty Python’s Flying Circus]에서 따 온 것으로 얘기하고 있어요.Python은 생각보다 오래 전에 만들어진 언어예요. 1991년에 만들었으니 C++보다는 나중에 나왔지만 Java 보다 먼저 나온 ..
인공지능이란? 인공지능은 Artificial Intelligence, 흔히 AI라고 부르죠.인공지능은 인간이 생각하는 것처럼 컴퓨터와 기계가 학습할 수 있게 인공적으로 구현하는 기술입니다.이를 위해 방대한 데이터가 필요하며 이를 학습하여 패턴을 분석하여 문제를 해결 하거나 예측하는 것이죠. 개발 환경 및 프로그래밍 언어 개발환경 : COLAB개발언어 : Python 다루는 내용 Python데이터 전처리 및 시각화데이터와 통계머신러닝딥러닝 강의 관련 사이트 사이트 : ehpub.co.kr유튜브 : 언제나휴일 https://www.youtube.com/@%EC%96%B8%EC%A0%9C%EB%82%98%ED%9C%B4%EC%9D%BC
요구 사항을 파악한 후에 유즈케이스 다이어그램을 작성하였으면 이 둘 간의 매핑 테이블을 만들어 보세요. 이를 통해 어떠한 요구 사항이 어느 유즈케이스에 반영했는지 파악하기 쉽고 반영하지 않은 요구 사항이 있는지 확인하기 쉬워집니다. 하나의 요구 사항을 반영하는 여러 개의 유즈케이스가 있을 수 있고 여러 개의 요구 사항을 반영하는 하나의 유즈케이스가 있을 수 있습니다. 그리고 품질에 관한 요구 사항을 반영하는 특정 유즈케이스가 없을 수도 있습니다. 요구명관련 Usecase웹 로봇WebCollect분석기Morphemepares색인기MakeInvertedFile랭커Ranking관리SetInterval, Start, Stop, AddSeedSite검색Search결합성품질 요구 사항임재사용성품질 요구 사항임시스..
유즈케이스 다이어그램은 시스템에서 구현해야 할 기능을 개괄적으로 보여주기 위해서 수행합니다. 이를 통해 시스템이 처리해야 할 일과 외부에서 수행할 일을 결정하고 어떠한 사용자와 시스템과 상호 작용하는지를 결정합니다. 이를 위해 먼저 시스템과 상호 작용하는 사용자와 외부 시스템을 찾는 작업을 수행합니다. 유즈케이스 다이어그램에서는 시스템과 상호 작용하는 사용자와 외부 시스템을 액터라고 말합니다. 그리고 액터가 어떨 때 우리 시스템을 사용하는지 우리 시스템이 언제 액터를 사용하는지를 결정합니다. 그리고 이를 유즈케이스로 나타냅니다. Usecase 다이어그램은 액터와 Usecase, 관계를 표현합니다. 2.2.1 액터 개요 액터는 시스템과 상호 작용하는 사용자와 외부 시스템을 말합니다. EH..
요구 분석 및 정의 단계에서는 시스템에서 제공해야 할 비지니스와 이해관계자의 요구 사항을 정확히 이해하는 작업이 필요합니다. 이를 위해 이해관계자의 요구 사항을 수집하고 이해해야 합니다. 그리고 수집한 요구사항을 바탕으로 시스템에서 제공해야 할 기능을 개괄적으로 파악하고 결정해야 합니다. 이 책에서는 어떠한 이해관계자가 있는지에 관한 조사와 이를 통해 요구 사항을 수집하는 부분은 간단히 요구 리스트를 보여주는 것으로 끝낼 것입니다. 대신 요구 리스트를 바탕으로 시스템에서 제공해야 할 기능을 파악하고 결정하기 위해서 Usecase 다이어그램을 작성하고 요구 사항과 Usecase 매핑 테이블을 작성하기로 할게요. 2.1 요구리스트 요구명설명구분웹 로봇웹 페이지를 수집할 수 있어야 합니다.기능분석기수집된..
.NET 리모팅 기술은 서버 측에 있는 개체를 클라이언트 측에서 마치 자신에게 있는 개체를 사용하는 것처럼 사용할 수 있게 서비스를 하는 기술입니다. .NET 리모팅 서비스를 위해서는 서비스를 제공하는 서버와 서비스를 제공받는 클라이언트가 필요하며 서버 측에서 클라이언트에 제공하는 개체를 정의한 클래스 라이브러리가 필요합니다. 서버 측에서 클라이언트에 제공하는 개체는 MashalByReference에서 파생한 개체로 원격 개체라고 말합니다. 서버 측에서는 채널을 등록하여 원격 개체를 사용할 수 있게 등록합니다. 클라이언트 측에서는 서버 측 채널에 접근하여 원격 개체를 참조하여 사용하는데 클라이언트 측에서 원격 개체를 참조하여 사용할 수 있는 개체를 Proxy 개체라 부릅니다. 클라이언트 측에서 P..
이번에는 간단하게 Windows Form 응용 프로그램을 만들기 위해 필요한 기술을 알아봅시다. 먼저 윈도우즈 응용 프로그램을 만들기 위해 Windows Forms 응용 프로그램 템플릿을 선택합니다. Windows Forms 응용 프로젝트를 생성하면 기본적으로 진입점이 있는 Program.cs 파일과 MainForm에 관한 두 개의 소스 파일로 Form1.cs와 Form1.Designer.cs이 만들어집니다. Program.cs 파일에는 Form1 개체를 생성하여 닫힐 때까지 수행할 수 있는 코드 등이 자동으로 만들어진 상태입니다. 특이 사항이 없으면 Windows Forms 응용 프로그램을 제작하면서 이 부분을 수정할 필요는 없습니다. 그리고 Form1.cs는 개발자가 작성할 부분이며 Form1.De..
.NET 프레임워크 기반의 라이브러리는 .NET 어셈블리라고 부릅니다..NET 어셈블리는 .NET 프레임워크 응용 프로그램을 구성하는 기본 컴포넌트입니다. 컴포넌트 기반의 프로그래밍은 모듈의 재사용성을 높여줍니다. .NET 응용 프로그램을 제작할 때 미리 작성된 라이브러리를 사용할 수 있는데 이 때 사용하는 라이브러리도 .NET 어셈블리이며 실행 파일도 .NET 어셈블리입니다..NET 어셈블리는 EXE 파일 혹은 DLL 파일 형태로 만들 수 있으며 하나 이상의 모듈을 포함할 수도 있습니다. .NET 어셈블리는 자기 기술적인 메타 데이터를 갖고 있고 레지스트리 항목에 종속되지 않는 구성 요소로 디자인되어 있기 때문에 병행(Side by Side) 실행이 가능합니다.이로써 같은 명칭의 여러 어셈블리를..
이 책에서 다루고자 하는 맞춤형 검색 엔진을 만들기 위해서는 라이브러리 제작 기술과 윈도우즈 폼 응용 프로그램 제작 기술 및 .NET 리모팅, DBMS를 사용하기 위해 SQL 쿼리 및 ADO.NET 기술 등이 필요합니다.기본적으로 이와 같은 기술을 활용해 본 적이 없거나 비슷한 기술을 활용해 본 적이 없으신 분들께서는 별도의 학습이 필요합니다.여기에서는 간략하게 맞춤형 검색 엔진을 만들기 위해 필요한 요구 기술 중에서 라이브러리 제작 및 윈도우즈 폼 응용 제작 기술 및 .NET 리모팅 기술을 간략하게 소개할게요.
먼저 이 책에서 작성할 맞춤형 검색 엔진 만들기 솔루션의 전반적인 시나리오를 소개할게요. 시나리오는 가상으로 만들었으며 별도의 설명은 하지 않겠습니다.문서 번호20XX – P – 01보존 기간10년작성 일자20XX. X. X작성자홍길동EH-WSE(EH Web Search Engine)I. 개요I.1 배경지식 웹 검색 엔진이란 원하는 웹 사이트를 검색하기 위한 S/W를 말합니다. 웹 검색 엔진은 대부분 인터넷 상에 게시되어 있는 웹 페이지들을 수집하는 웹 로봇과 웹 페이지를 분석하는 분석기, 분석한 결과로 쉽게 검색할 수 있게 역 파일을 만드는 색인기 및 질의 결과에 랭킹을 부여하는 랭커 등으로 구성할 수 있습니다. 웹 검색 엔진은 각각의 엔진들의 구동 원리와 구현 수준에 따라 다양한 품질 수준을 결정합니..
이 책은 웹 검색 엔진을 구성하는 다양한 엔진과 모듈을 제작하는 방법을 다루고 있습니다. 따라서 하나의 프로젝트가 아닌 여러 개의 프로젝트로 나누어 작업을 진행해야 합니다. 그리고 이 책에서는 단순히 웹 검색 엔진을 구현하는 것만을 다루는 것이 아니라 개발 전체 공정에 관해서도 다루고 있습니다.웹 검색 엔진을 만드는 전체 공정은 시나리오에서 출발하여 요구 분석 및 정의 단계, 아키텍쳐링 단계, 설계 단계, 구현 단계로 나누어 진행할 것입니다. 이를 위해 구현에 필요한 개발 도구만 사용하는 것이 아니라 CASE 도구를 사용하여 다양한 다이어그램을 작성도 해야 합니다.CASE 도구로는 Rational 사의 Rose, 볼랜드 사의 Together, 오픈 프로젝트인 Star UML 등이 있습니다. 이 책에서..
여러분도 잘 아시는 것처럼 검색 엔진은 사용자가 원하는 정보를 검색해 주는 도구나 서비스를 말합니다. 특히 웹 검색 엔진은 웹 상에 게시되어 있는 수 많은 웹 페이지의 내용에서 원하는 정보를 검색해 주는 엔진입니다.이러한 검색 엔진은 방대한 자료에서 빠르고 정확하게 원하는 정보를 검색하는 것이 중요합니다. 만약 자료의 양이 많지 않다면 굳이 고사양의 검색 엔진은 필요하지 않을 것입니다.따라서 검색 엔진은 방대한 자료를 수집하는 작업이 필요합니다. 그리고 수집한 자료를 분석하는 작업, 분석한 결과를 검색하기 쉽게 가공하는 작업, 검색 작업과 검색한 결과를 선별 및 순위를 정하는 등의 작업이 필요합니다.웹 검색 엔진의 구성을 살펴보면 게시한 웹 페이지를 수집하는 웹 로봇과 수집한 웹 페이지 내용을 분석하..
최근 인터넷의 발달로 다양한 정보를 웹을 통해 얻습니다. 특히 개인 블로그 및 커뮤니티 사이트, 소셜 사이트의 증가로 정보 공급자와 정보 사용자의 경계가 사라져가고 있습니다.이처럼 다양한 형태의 방대한 자료가 웹 상에 만들어지고 있어 효과적인 검색을 위한 검색 엔진들을 연구하고 만들어지고 있습니다. 특히 검색 엔진은 기존의 포털 사이트에서 제공하는 서비스였지만 소셜 사이트 및 다양한 정보 서비스를 위해 필요한 곳이 많아집니다.이 책에서는 기존 웹 검색 엔진을 만드는 전체 공정을 순서대로 하나 하나 설명하고 궁극적으로 서비스 목적에 맞는 검색 엔진을 만들 수 있게 할 것입니다.언제나휴일 여행 및 산책아산 외암민속마을
2000년 무렵에 케이블 인터넷과 ADSL기술을 도입하면서 초고속 인터넷을 보급하던 때만 하더라도 웹 사이트에 글을 포스팅하는 것은 업체나 기관에서 할 일이라 생각했지요.그런데 지금은 SNS의 등장을 비롯하여 많은 곳에서 All IP 시대로 가기 위한 준비를 하면서 웹 사이트를 방문하는 지식 소비자와 웹 사이트를 구축하고 지식 포워딩하는 지식 공급자가 뚜렷하게 나눌 수 없는 프로슈머 형태를 지니고 있습니다.시멘틱 검색 엔진이라는 것이 세상에 모습을 드러낼 때만 해도 포털 사이트에서만 사용할 기술처럼 생각했습니다. 그리고 새로 포스팅하는 자료의 양이 지금에 비해 적어 높은 수준의 기술을 요구하지 않았었죠. 하지만 지금은 일반 사용자들도 자신의 블로그나 SNS에 일상과 자신의 취미 생활 및 기술을 포스팅..
[C언어 소스] 연결리스트를 이용하여 구현한 큐안녕하세요. 언제나 휴일이예요.이번에는 연결리스트를 이용하여 구현한 큐의 소스 코드예요.큐는 자료를 한쪽으로 보관하고 다른쪽에서 꺼내는 FIFO(First In First Out) 방식의 자료구조입니다. 큐에 자료를 보관하는 연산을 PUT 혹은 ENQUEUE라 말하고 꺼내는 연산을 GET 혹은 DEQUEUE라고 말합니다. 그리고 보관할 위치 정보를 rear, 꺼낼 위치 정보를 front라고 말해요.연결리스트를 이용하여 구현한 큐에서는 보관할 때 rear 뒤에 보관하고 꺼낼 때 front에 있는 것을 꺼냅니다. 그리고 보관할 때 허용하는 메모리 범위 내에서 보관할 수 있어 꽉 찼는지 확인할 필요가 없습니다.알고리즘PUT 연산now = MakeNode(data)..
알고리즘부분 문자열 복사(dest: 버퍼, dsize:버퍼 길이, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(dsize와 n이 참이고 dest 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, dsize 1감소, n 1감소origin 반환소스 코드//부분 문자열 복사하는 함수 만들기 - 버퍼 오버플로우 방지#include #include char *mystrncpy_s(char *dest, size_t dsize, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf(..
알고리즘부분 문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열, n:복사할 문자 개수)origin:= dest반복(n이 0보다 크면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)dest와 src를 다음 위치로 증가, n 1감소origin 반환소스코드//부분 문자열 복사하는 함수 만들기#include char *mystrncpy(char *dest, const char *src, size_t n);int main(void){ char source[100] = "Hello World"; char dest[100] = "abcde Yahoo"; printf("원본 문자열:%s 의 5개 문자 복사\n", source); printf("복사 전 현재 결과 문자열:%s\n..
알고리즘문자열 복사하기(dest:복사할 버퍼, dsize:버퍼 길이, src: 원본 문자열)….dsize 1감소…..origin:= dest….반복(dsize가 참이면서 dest가 가리키는 곳에 src가 가리키는 문자 대입)//대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가, dsize 1감소….dest가 가리키는 곳에 종료 문자 대입….origin 반환소스 코드//문자열 복사 - 버퍼 오버플로우 방지#include char *mystrcpy_s(char *dest, size_t dsize, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문..
[C언어 소스] 문자열 복사하는 함수 만들기알고리즘문자열 복사하기(dest:복사할 버퍼, src: 원본 문자열)….origin:= dest….반복(dest가 가리키는 곳에 src가 가리키는 문자 대입) //대입한 결과가 참이면 반복……..dest와 src를 다음 위치로 증가….origin 반환소스 코드//문자열 복사하는 함수 만들기#include char *mystrcpy(char *dest, const char *src);int main(void){ char source[100] = "Hello World"; char dest[100]; printf("원본 문자열:%s\n", source); mystrcpy(dest, source); printf("복사 결과 문자열: %s\n..
알고리즘부분 문자열 비교(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2, n:비교할 문자 개수)….반복(n이 0보다 크면서 str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)……..str1과 str2를 다음 위치로 이동……..n을 1 감소….str1과 str2가 가리키는 문자의 차이 반환소스코드//부분 문자열 비교하는 함수 만들기#include int mystrlen(const char *str);//사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrncmp(const char *str1, const char *str2, size_t n);int main(void){ char src..
알고리즘문자열 비교하기(str1:비교 대상 문자열1, str2: 비교 대상 문자열 2)….반복(str이 가리키는 문자가 참이면서 str1과 str2가 가리키는 문자가 서로 같으면)………str1과 str2를 다음 위치로 이동….str1과 str2가 가리키는 문자의 차이 반환소스코드//문자열 비교하는 함수 만들기#include //사전식 비교: 사전에 앞에 나오는 단어가 작고 뒤에 나오는 단어가 크다고 판별//차이가 없으면 0 반환int mystrcmp(const char *str1, const char *str2);int main(void){ char names[5][20] = { "홍길동","강감찬","이순신","을지문덕","한석봉" }; char name[20]; ..
[C언어 소스] 문자열 길이를 계산하는 함수 만들기알고리즘문자열 길이 구하기(str:문자열 시작 위치)cnt:=0반복(str[cnt]가 참인 문자) cnt 1 증가cnt 반환 소스 코드//문자열 길이 구하는 함수 만들기//참고 에 strlen 함수가 있습니다.#include int mystrlen(const char *str);int main(void){ char name[100] = "Hello World"; printf("%s\n", name); printf("길이: %d\n", mystrlen(name)); return 0;}int mystrlen(const char *str){ int cnt; //str[cnt]가 거짓 문자(종료 문자, '\0')가 나올 때까..
n 개의 정수를 표현하기 가장 적합한 자료 형식은 정수 형식을 원소로 하는 배열이겠죠.n을 10으로 하드 코딩한다면 다음과 같습니다.int arr[10];제일 먼저 함수 이름을 결정합시다.홀수 합계를 구하는 것이므로 GetOddSum 이라고 정할게요.n개의 정수 중에 홀수의 합계를 구하는 함수의 함수 원형을 정해봅시다.C언어에서 배열 이름은 할당한 메모리 주소입니다. 해당 주소에 원소 형식을 사용할 것이므로 원소 형식 포인터로 생각할 수 있어요.그리고 배열의 크기를 전달해야겠죠.따라서 입력 매개변수는 2개로 int *base, int size 정도면 적당하겠네요.*원소 개수가 음수가 올 수 없다는 것을 고려한다면 unsigned 은 size_t로 표현할 수도 있어요.*함수에서는 결과로 홀수의 합계를 반환..
