C is the first computer language to learn in your university department. When I asked a college student I knew, it seems that there are many C or Java. There are few samples, but ... As with myself, the first programming language is C. Classes range from basic syntax to pointer structures. Personally, I've recently started to get serious about proramming, writing Javascript, especially server-side Node.js. I will not touch on the pros and cons of doing C language at university, but it would be meaningful if someone who did C language at school found this article and asked, "Can I write this in Node.js?" I wonder if. I hope it will be an opportunity to write web applications after that. (Well, I wrote it almost capriciously, so I just tried to write it as an article ...)
Node.js
You can get as many details as you want by google, but officially there is this.
Node.js is a JavaScript environment that runs on Chrome's V8 JavaScript engine. Node.js employs an asynchronous event-driven model that is lightweight and works efficiently. Node.js's package management manager, npm, is the largest open source library ecosystem in the world.
Javascirpt is a browser-based language, but it can also be run on the server side using this platform. Furthermore, it has features such as asynchronous processing, event-driven type, and single thread, and is sometimes preferred from the viewpoint of processing speed. I think that accurate commentary articles are rolling around, so I will not explain in detail. Another thing to add is that you can use a lot of libraries with a package manager called npm, and you can implement what you want to do without writing too much code. While I was doing C language, I thought, "If this is such a difficult thing, it would be tremendous to develop an application ...". However, if it is a popular language, the library is extensive and you can easily do various things. Surprisingly, I don't know this, and when programming is difficult, I tend to be shy. Surprisingly, it is a fact that even if it is not good, it can be implemented only by abuse of copy and paste and library. Of course, I don't think this method is the best for learning. Whether it's good or bad, make something that moves and go up to the stage first. I think this is one correct answer, but I think. (Well ... I'm not a big fan, but ... Writing an article is one of the things that goes up on stage.) That's all for Node.js. If you want to check the operation, please install node on your PC.
I will not explain in detail. One solution is that if you want to get the same result, you can do it like this.
A program that reads the file jinkou.txt, adds units to the population (people) and area (km2) of each prefecture, and outputs it to the display.
jinkou.txt is a plain text with the population area of 47 prefectures separated by tabs as shown below.
jinkou.txt
Aichi 7254704 5164.06
Ehime Prefecture 1467815 5677.38
Ibaraki Prefecture 2975167 6095.69
Okayama Prefecture 1957264 7113
Okinawa Prefecture 1361594 2275.28
Iwate Prefecture 1385041 15278.77
Gifu Prefecture 2107226 10621.17
.......
read-file.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
FILE *fp;
char pref[256];
int popu;
float area;
if((fp = fopen("jinkou.txt", "r")) == NULL) {
printf("This file can not be opened\n");
exit(1);
}
while (fscanf (fp , "%s", pref) != EOF) {
fscanf(fp, "%d", &popu);
fscanf(fp, "%f", &area);
printf("%10s%10d people%10.2fKm2\n", pref, popu, area);
}
fclose(fp);
return area;
}
Success if it is displayed on the console like this
It is an implementation that reads Stream. I think there are many other ways.
read-file.js
'use strict';
const fs = require('fs');
const readline = require('readline');
const rs = fs.createReadStream('./jinkou.txt');
const rl = readline.createInterface({ 'input': rs, 'output': {} });
rl.on('line', (lineString) => {
const columns = lineString.split(' ');
const pref = columns[0];
const popu = parseInt(columns[1]);
const area = parseInt(columns[2]);
console.log(pref + "\t" + popu + 'Man' + "\t" + area + 'km2');
});
This will give similar results.
A program that outputs the population density of each prefecture to the file mitsudo.txt together with the prefecture name.
write-file.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE *file1, *file2;
char pref[256];
int popu;
float area, mitsudo;
if ((file1 = fopen("jinkou.txt", "r")) == NULL) {
printf("This file can not be opened\n");
exit(1);
}
if ((file2 = fopen("mitsudo.txt", "w")) == NULL) {
printf("This file can not be opened\n");
exit(1);
}
while (fscanf (file1 , "%s", pref) != -1) {
fscanf(file1, "%d", &popu);
fscanf(file1, "%f", &area);
mitsudo = (float)popu / area;
fprintf(file2, "%8s %8.2f people/Km2\n", pref, mitsudo);
}
fclose(file1);
fclose(file2);
}
If misudo.txt like this is displayed, it succeeds (as with jinkou.txt, the file name is not given by me, so it's not bad ...)
write-file.js
'use strict';
const fs = require('fs');
const readline = require('readline');
const rs = fs.createReadStream('./jinkou.txt');
const rl = readline.createInterface({ 'input': rs, 'output': {} });
const map = new Map();
rl.on('line', (lineString) => {
const columns = lineString.split(' ');
const pref = columns[0];
const popu = parseInt(columns[1]);
const area = parseInt(columns[2]);
const popu_density = (popu / area).toFixed(2) + 'Man/km2';
map.set(pref, popu_density);
});
rl.on('close', () => {
let data = "";
map.forEach((value, key) => {
data += key + '\t' + value + '\n';
}, map);
fs.writeFile('./mitsudo.txt', data, ({ encoding: 'utf-8' }), (err) => {
if (err) throw err;
console.log('The file has benn saved!');
});
});
Search for data that matches the prefecture name entered from the keyboard Program to output to the display
search-file.c
#include <stdio.h>
#include <stdlib.h>
int main(void) {
FILE *file1;
char pref[50][256], dmy[80], indata[80];
float mitsudo[50];
int n = 0, kosuu;
if ((file1 = fopen("jinkou.txt", "r")) == NULL) {
printf("This file can not be opened\n");
exit(1);
}
while (fscanf (file1 , "%s", pref[n]) != -1) {
fscanf(file1, "%f", &mitsudo[n]);
fscanf(file1, "%s", &dmy);
++n;
}
kosuu = n - 1;
fclose(file1);
while(indata[0] != 'q') {
printf("Name of prefectures(End with q)=");
gets(indata);
//Search
for (n = 0; n <= kosuu; ++n) {
if (strcmp(pref[n], indata) == 0) {
printf("%8s %8.2f people/Km2\n", pref[n], mitsudo[n]);
}
}
}
}
'use strict';
const fs = require('fs');
const readline = require('readline');
const rs = fs.createReadStream('./mitsudo.txt');
const rl = readline.createInterface({ 'input': rs, 'output': {} });
const map = new Map();
rl.on('line', (lineString) => {
const columns = lineString.split('\t');
const pref = columns[0];
const popu_density = columns[1];
map.set(pref, popu_density);
});
rl.on('close', () => {
console.log('Please enter the prefecture name.(ctrl+End with c)');
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', (data) => {
let a = data.slice(0, data.length - 1);
console.log(a + "\t" + map.get(a));
});
});
Unexpectedly, I couldn't write it so easily and shortly ... In terms of implementation, the specifications of process.stdin.on () are not well understood and \ n is included in the received value, so I stumbled on the point that it cannot be used as an argument of map.get () as it is. I had a hard time. Also, I wrote an article like this for the first time other than this report, I realized again that my writing was horribly verbose and long. Well, I don't think it's the number of outputs, so I'll continue to write something.
I studied at N Preparatory School. I think the very easy-to-understand and polite teaching materials are very wonderful. If you do not understand the meaning of the code even after reading the official documents, we recommend that you take this course. Eventually, I was able to create a web application using the framework, so I enjoyed the content as well. I recommend you to say it again.
https://github.com/takewell/c2node
Recommended Posts